2017-01-19 26 views
0

格納されているGPIOイベントとタイミングの配列から、方形波のパルス列を文字列で表現しようとしています。コードが動作しているが、私は移行のためのより良いUnicode文字が必要です。文字列の方形波を描くのに最適な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; 
    } 

ある出力はのIntelliJコンソールウィンドウ enter image description here

でこのように見えますが、妙にRPIに表示されない、私が上で何かをインストールする必要がありますPi?これは私のために働く多くの実験の後

+2

はたぶん、あなたは特定のグリフをサポートするフォントをインストールする必要が結果ですか?とにかく、そのグループのキャラクター(http://jrgraphix.net/r/Unicode/2500-257F)を使用する方が良いかもしれません。またはそれから:http://jrgraphix.net/r/Unicode/2300-23FF – blubberdiblub

+0

合理的な方形波を行うために、ボックスの文字は線の中間点で働くので、理想的ではない2行を使用する必要があります。私はあなたがフォントをインストールすることについて正しいと思います。 – gjwo

+0

Unifontを追加しました。これは端末ウィンドウに表示されない問題を修正しましたが、私はまだ使用するのに適した文字を探しています。私は見続けるだろう。 – gjwo

答えて

0

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; 
} 

は、これらは Pulse Trains

関連する問題