基本上,我在Bluno M3 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();
}
}
}
我正在使用PL2303 USB串行适配器,Bluno M3 arduino,CoolTerm串行监视器。
如果你查看这张图片:
你可以看到,在这段代码发送的数据中,0xC7字节与0xDD字节混合在一起(所谓的像素字节)
为什么会这样?
答案 0 :(得分:0)
做另一个测试:每次都不要发送相同的值。它将提供更多诊断数据
答案 1 :(得分:0)
感谢大家指出问题可能是PL2303模块。通过进一步测试,我确认PL2303 USB适配器无法正常工作。
当我使用相同的串行监视器但在用于编程Bluno arduino的相同COM端口时,代码运行良好。这种奇怪的行为令人非常沮丧,但我感谢所有指出我正确方向的人。