-5

基本上,我在 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 字节(所谓的像素字节)混合在一起

为什么会这样?

4

2 回答 2

0
  1. 您不分配像素变量并始终发送相同的值;
  2. 仅在传输结束时刷新串行。它应该有帮助。否则就是错误

做另一个测试:而不是每次发送相同的值递增它。它将提供更多诊断数据

于 2017-08-07T22:29:01.873 回答
0

感谢大家指出问题可能出在 PL2303 模块上。通过进一步的测试,我确实确认 PL2303 USB 适配器工作不正常。

当我使用相同的串行监视器但在用于对 Bluno arduino 进行编程的相同 COM 端口上时,该代码运行良好。这种奇怪的行为非常令人沮丧,但我感谢所有为我指明正确方向的人。

于 2017-08-08T18:34:02.883 回答