Java 哪种unicode字符最适合在字符串中绘制方波

Java 哪种unicode字符最适合在字符串中绘制方波,java,raspberry-pi,Java,Raspberry Pi,我试图用一个字符串表示一个方波脉冲序列,它来自一个存储的GPIO事件和计时数组。代码正在运行,但我需要更好的Unicode字符进行转换 这是我目前的方法 public String waveform() { String s = ""; int pulses; int pulseWidth; pulseWidth = events.get(1).duration; //mostly right! for (RF433Event e: ev

我试图用一个字符串表示一个方波脉冲序列,它来自一个存储的GPIO事件和计时数组。代码正在运行,但我需要更好的Unicode字符进行转换

这是我目前的方法

    public String waveform()
    {
    String s = "";
    int pulses;
    int pulseWidth;

    pulseWidth = events.get(1).duration; //mostly right!
    for (RF433Event e: events)
    {
        pulses = e.duration/pulseWidth;
        if (e.gpioEvent.getEdge() == PinEdge.RISING)
        {
            // rising edge so for the duration it was low
            for (int i = 0; i<pulses; i++) s = s+'_';
            s = s+"\u02E9";
        } else
        {
            // falling edge so for the duration it was high
            for (int i = 0; i<pulses; i++) s = s+"\u0305";
            s = s+"\u02E5";
        }

    }
    return s;
    }
公共字符串波形()
{
字符串s=“”;
int脉冲;
内脉冲宽度;
pulseWidth=events.get(1).duration;//基本正确!
对于(RF433事件e:事件)
{
脉冲=e.持续时间/脉冲宽度;
如果(e.gpioEvent.getEdge()==PinEdge.RISING)
{
//上升沿,因此在持续时间内,它是低的

对于(int i=0;i,经过多次实验后,这对我很有效

public String waveform()
{
    String s = "";
    int pulses;
    int pulseWidth;
    // Characters tried for drawing the pulse train
    // Low line - "_", "\u0332" Combining Low Line, "\uFF3F"; FULLWIDTH LOW LINE
    // High line - "\u0305" COMBINING OVERLINE, "\u203E" over line 
    // Vertical -  "\u20D2" COMBINING LONG VERTICAL LINE OVERLAY, "\u007C" Vertical line, "\u02E9" MODIFIER LETTER EXTRA-LOW TONE BAR
    if (events.get(0).duration > 50000) {return "Excessive duration in pluse 0 "+events.get(0).duration;}
    pulseWidth = 100; //gives a reasonable pulse train
    for (RF433Event e: events)
    {
        pulses = e.duration/pulseWidth;
        if (e.gpioEvent.getEdge() == PinEdge.RISING)
        {
            // rising edge so for the duration it was low
            for (int i = 0; i<pulses; i++) s = s+ "_";
            s = s+"\u20D2";
        } else
        {
            // falling edge so for the duration it was high
            for (int i = 0; i<pulses; i++) s = s+"\u0305";
            s = s+"\u20D2";
        }
    }
    return s;
}
公共字符串波形()
{
字符串s=“”;
int脉冲;
内脉冲宽度;
//试图绘制脉冲序列的字符
//低位线-“\u0332”组合低位线“\uFF3F”;全宽低位线
//高架线-“\u0305”结合高架线,“\u203E”结合高架线
//垂直-“\u20D2”组合长垂直线叠加,“\u007C”垂直线,“\u02E9”修饰字母超低音调条
if(events.get(0).duration>50000){return“pluse 0中的持续时间过长”+events.get(0).duration;}
pulseWidth=100;//给出合理的脉冲序列
对于(RF433事件e:事件)
{
脉冲=e.持续时间/脉冲宽度;
如果(e.gpioEvent.getEdge()==PinEdge.RISING)
{
//上升沿,因此在持续时间内,它是低的

对于(int i=0;i是否需要安装支持特定字形的字体?无论如何,最好使用该组中的字符:-或该组中的字符:方框字符位于行的中点,因此要生成合理的方波,我需要使用两行,这并不理想。但我认为您安装字体的想法是正确的。我认为dded Unifont,这解决了终端窗口中没有显示的问题,但我仍在寻找合适的字符。我会继续寻找。可能没有一个字符完全适合这项任务。有时,实际上使用图形原语绘制它是正确的做法。如果不这样做,你也可以使用相反的方向对于仅使用ASCII字符的足够好的近似值(如| |“或其他)可能一个带有for的笔记本可能是一个完全不同但很好的方法。(免责声明:我不知道这些图表在tikzmagic中是否可行。)我想这是一个利基问题,但作为利基中可能使用此功能的人,我只想说-非常好的答案,感谢您发布它!