私はスレーブデバイスからこのコードを持っています
byte buf[] = {125, 126, 127, 2000, 5000};
void setup() {
// initialize serial:
Serial.begin(9600);
}
void loop() {
int i = Serial.write(buf, sizeof(buf));
Serial.println(i);
delay(5000);
}
リスニングデバイスからこのコードがあります。
char protocol[5];
void setup() {
Serial.begin(9600);
memset(protocol, '\0', sizeof(protocol));
}
void loop() {
if(Serial.available()) {
Serial.readBytes(protocol, 5);
Serial.println(protocol);
for(int i = 0; i < sizeof(protocol); i ++ ) {
Serial.println((int)protocol[i], BIN);
}
}
else{
Serial.println("None available");
delay(500);
}
}
Arduinoが2の賛辞を使用していることは理解していますが、私が得ている問題は、印刷物がこれであるということです
1111101
1111110
1111111
11111111111111111111111111010000
11111111111111111111111110001000
2 の補数のため、一番左のビットが 1 として読み取られるため、文字を終了するためにすべてのゼロが追加されています。追加された 1 を削除して 2000 と 5000 を読み取るにはどうすればよいですか? ありがとう