私はArduinoと通信しなければならないC#プログラムを書いています。基本的にはそれにデータを送信し、私はシリアルモニタで読むことができるはずです。Arduinoシリアル通信が奇妙に動作する
C#コード:
if (errCheck[i].IsChecked.GetValueOrDefault() == true)
err = "1"+err;
else
err = "0"+err;
_serialPort.Write("<16,"+ Convert.ToUInt32(err,2) + ">");
Arduinoのコード:最後のチェックボックスがチェックされている
void parseData() { // split the data into its parts
char * strtokIndx; // this is used by strtok() as an index
//strtokIndx = strtok(tempChars,","); // get the first part - the string
//strcpy(messageFromPC, strtokIndx); // copy it to messageFromPC
strtokIndx = strtok(tempChars, ","); // this continues where the previous call left off
integerFromPC = atoi(strtokIndx); // convert this part to an integer
switch (integerFromPC) {
//all cases
case 16: //managing errors
delay(10);
strtokIndx = strtok(NULL, ",");
uint32_tFromPC = atoi(strtokIndx);
errors=uint32_tFromPC;
Serial.print("errors Updated");
は(ので、私のバイナリ文字列は、1と31 0の場合)シリアルモニタが7F FF FF FF
代わりの80 00 00 00
読み込みます。
私はulong
を使用しようとしましたが、どちらのアイデアでも動作していないようです。
私はUINT 64を使用して試してみたとArduinoのコードで、私はエラーを置けば= 1and31 0のそれは –