Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Arduino-为什么串行数据以错误的顺序写入?_C++_C_Arduino_Serial Port_Bluno - Fatal编程技术网

C++ Arduino-为什么串行数据以错误的顺序写入?

C++ Arduino-为什么串行数据以错误的顺序写入?,c++,c,arduino,serial-port,bluno,C++,C,Arduino,Serial Port,Bluno,基本上,我在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); Ser

基本上,我在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();
    }
  } 
}
#定义消息2
无符号字符像素;
字符buff[MSG_LEN];
int i;
无效设置(){
序列号4.开始(9600);
像素=0xDD;
}
void循环(){
if(Serial4.peek()=-1){
while(Serial4.available()您不指定像素变量,始终发送相同的值
  • 只在传输结束时刷新串行。这应该有帮助。否则就是错误

  • 做另一个测试:不要每次都发送相同的值。它将提供更多的诊断数据,感谢大家指出问题可能是PL2303模块。通过进一步的测试,我确认PL2303 USB适配器工作不正常


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

    pixel在
    设置()中被分配
    。虽然重复发送相同的值可能没有什么好处,但我不确定这是否是手头上的问题-可能只是为了说明问题而使用了虚拟数据。虽然刷新是不必要的,但它不是一个错误,否则它会破坏缓冲I/O的任何好处。如果有任何问题,它应该保证连续输出,即使缓冲有缺陷(在如此广泛使用的库代码中似乎不太可能)@Clifford在给出的代码中,除了库中的错误之外,我看不出任何行为的原因。我同意,但这充其量只是猜测或建议,而不是答案。一条评论可能更合适。问题可能是PL2303或其Windows驱动程序,而不是您的代码或Arduino库。较旧的多产设备“以我的经验来看,我遇到了一些问题,假造的多产设备并不少见,甚至更糟。”Clifford说,但这些问题确实存在different@PeterJ:我不知道你如何假设知道我观察到了什么问题。我在流式传输数据时看到了这些设备丢失和损坏的字符。这并不是说不可能这是同一个问题,但由于数据缺乏变化,这一点更加明显。你不是唯一一个在pl…芯片方面有问题的人。我不认为你的问题不同。