2017-04-09 7 views
0

私は、Windowsフォームアプリケーションを通してarduinoボード上で私のbluesmirf unoにバイト配列を渡しています。私はブルートゥースから信号を読み取ってシリアル経由で出力することができますが、出力は常に254であり、理由は分かりません。シリアルポートから常に254を取得します

以下はC++コードです。

const int led = 8; 
int incomingByte = 0; 
#define RxD 10 
#define TxD 11 

#include <hmi.h> 

SoftwareSerial mySerial(RxD, TxD); // RX pin, TX pin 

void setup() { 
pinMode(led, OUTPUT); 
pinMode(RxD, INPUT); 
pinMode(TxD, OUTPUT); 
Serial.begin(9600); 
mySerial.begin(11520); 
} 

void loop() { 
    incomingByte = mySerial.read(); 
    if(incomingByte > 0){ 
    Serial.println("Here is: "); 
    Serial.println(incomingByte); 
    digitalWrite(led,HIGH); 
    } 
} 

ここに関連するC#コードがあります。

 int MyInt = 1; 

     byte[] b = BitConverter.GetBytes(MyInt); 
     serialPort1.Write(b, 0, 4); 

私はC#のコードで出力248にコードを取得することができています:

serialPort1.Write(new Byte[] { 1, 1, 1, 1 }, 0 , 4); 

と192

byte[] b = { 0, 1, 1, 1, 1, 1, 1, 1 }; 
serialPort1.Write(b, 0, 7); 

からしかし、私は考え、なぜ、ある番号を持っていません戻り値は、実際に配列に何が入っているかにかかわらず、バイト配列で渡された要素の数に基づいているようです。

+0

シリアルポートのワードサイズは何ビットですか? –

+0

私は考えていません、どうすればそれをチェックするのですか?それは254以来私はそれが8だと思います。 – KeigaTide

+0

私の考えはまったく、私はArduinosで働いたことはありませんが、どこかであなたのシリアルリンクが最大値(2^8より2パリティビット少ない)しかし、私は間違っている可能性があります。 –

答えて

0

私はちょうどそれを打ったが、問題がランダムに修正されました。

私はGre_Gorが言ったように115200ではなく11520にボーレートを設定していたとします。