串口丢失接收的字符

2021-01-186767
AI 快速预览详细 收起
本文讨论了在使用Arduino Uno进行串口通信时,总是会丢失字符c的问题。通过提供的代码示例和调试方法,可以有效地减少字符丢失的问题,提高串口通信的可靠性。

  1. /**
  2. * 程序是循环发送字符串 abc 给uno板
  3. * 然后测试uno板有没有正确的接收到字符串 abc
  4. * 测试的结果是字符串口接收总是出错
  5. * 总是会丢失字符c
  6. *
  7. * 目前还没找到解决办法
  8. * */
  9. void setup() {
  10.   // put your setup code here, to run once:
  11.   Serial.begin(115200);
  12. }
  13. void loop() {
  14.   
  15.   char i;
  16.   char j[] = {'i','v','a','l','u','e','i','s',':','\n'};
  17.   int k=0;
  18.   char mark = 'a';
  19.   // 等待接收
  20.   // 串口工具这边循环发送字符串 abc
  21.   while(Serial.available()>0)
  22.   {
  23.     i = Serial.read();
  24.     // 打印ivalueis:
  25.     while(j[k] != '\n'){
  26.       Serial.write(j[k]);
  27.       k++;
  28.     }
  29.     // 打印i的值
  30.     Serial.println(i);
  31.     delay(100);
  32.     k=0;
  33.     // 因为一直发送串口命令来测试串口接收数据的正确性
  34.     // 串口面板输出信息较多,使用mark来对比串口接收
  35.     // 到的数据,出错就打印错误信息
  36.     Serial.print("mark is :");
  37.     Serial.println(mark);
  38.     if ( i != mark) {
  39.       Serial.println("recived data error! ");
  40.       Serial.print("mark is :");
  41.       Serial.println(mark);
  42.       mark = i;
  43.     }
  44.     if(mark == 'a'){
  45.       mark = 'b';
  46.     }else if(mark == 'b'){
  47.       mark = 'c';
  48.     }else {
  49.       mark = 'a';
  50.     }
  51.   }
  52. }
复制代码


程序是循环发送字符串 abc 给uno板,然后测试uno板有没有正确的接收到字符串 abc,测试的结果是字符串口接收总是出错,总是会丢失字符c。串口打印的信息如下,总是会出错,有没有谁知道原因?

1610962891(1).jpg (180.99 KB, 下载次数: 1663)

串口丢失接收的字符 · Arduino Uno 串口调试_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -