基本上,我有一個Bluno M3的Arduino驗證碼:Arduino - 爲什麼串行數據寫錯順序?
#define MSG_LEN 2
unsigned char pixel;
char buff[MSG_LEN];
int i;
void setup() {
Serial4.begin(9600);
pixel=0xDD;
}
void loop() {
if(Serial4.peek() == -1){
while(Serial4.available() < MSG_LEN);
Serial4.readBytes(buff, 2);
if(buff[0] == 0xC8 && buff[1] == 0x00){
//send image
Serial4.write(0xC7); //send Image ACK
Serial4.flush();
for(i=0;i<4800;i++){
Serial4.write(pixel);
Serial4.flush();
}
for(i=0;i<MSG_LEN;i++){
buff[i]=0xFF;
}
}
}else{
while(Serial4.available()>0){
Serial4.read();
}
}
}
我使用一個USB PL2303串口適配器,Bluno M3的Arduino,CoolTerm串口監聽。
如果您選中此圖片:
你可以看到,在該代碼發送數據時,0xC7字節與0xDD字節(所謂的像素字節)
混合爲什麼會發生這種情況?
問題可能出在PL2303或其Windows驅動程序上,而不是您的代碼或Arduino庫。根據我的經驗,較早的多產器件存在問題,並且並不少見的假多產器件甚至更糟。 – Clifford
@Clifford但這些問題不一樣 –
@PeterJ:我不知道你如何假設我知道我觀察到了什麼問題。流式傳輸數據時,我看到丟失和損壞這些設備的字符。這不是超出可能性,這是同一個問題,但由於數據缺乏變化而變得更加明顯。 – Clifford