我有這樣的代碼來自從設備Arduino的2的補讀取錯誤
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的補的,被添加全零完成char,因爲最左邊的位讀入爲1.反正,第4,5個數字不是2000和5000,而是與這個數字大不相同。我如何讓附加的1消失,所以我讀了2000和5000?感謝
您介意解釋(Char *)實際上做了什麼嗎?它使用int數組的起始地址嗎? – DRAN 2013-04-27 00:52:20
@DRAN當然。我在我的回答中添加了一些解釋。希望它有幫助,但如果我沒有解釋得不夠好,請讓我知道。 – Dominick 2013-04-28 08:01:49
@Dominick,先生,你能告訴我是否可以用這種方法發送浮點值?使用Char * cast? – 2014-07-28 02:18:43