已解决-串口数据读取

2016-03-311.3万
AI 快速预览详细 收起
本文解决了Arduino Bluno在使用USB转串口线发送十六进制数时的刷新问题。通过调试代码,增加了适当的延迟时间,确保数据完全读取后再进行处理。这样可以避免发送不同数据时接收端显示相同的问题。


我用USB转串口线给Arduino Bluno(基于UNO)发送一串十六进制数,简单的如“31 32 33 34”,但是发现刷新有问题,发送一遍1234后,改成4321,可接收端显示的还是1234,代码如下,请各位帮忙看一看。
  1. #include <LiquidCrystal.h>
  2. #include <SoftwareSerial.h>
  3. LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
  4. //int rxpin = 10;
  5. //int txpin = 11;
  6. SoftwareSerial myserial(10, 11); //虚拟串口 10-RX,11-TX;
  7. int len;
  8. char temp;
  9. char pData;
  10. String comdata;
  11. int i=0,n=0;
  12. void setup(){
  13.   Serial.begin(9600);
  14.   myserial.begin(4800);
  15.   lcd.begin(16, 2);
  16.   for (int i = 2; i < 8; i++)
  17.   {
  18.     pinMode(i, OUTPUT);
  19.   }
  20.   //pinMode(10,INPUT);
  21.   //pinMode(11,OUTPUT);
  22. }
  23. void loop(){
  24.   if(myserial.available()>0){
  25.     delay(10);
  26.     len = myserial.available();
  27.    
  28.     while(myserial.available()>0){
  29.       comdata += char(myserial.read());
  30.       delay(10);
  31.     }
  32.    
  33.     Serial.println(len);
  34.    
  35.     for(i=0;i<len;i++)
  36.     {
  37.       temp = char(comdata[i]);
  38.       Serial.print(temp);
  39.       Serial.print("");
  40.     }
  41.    
  42.     while(myserial.available()>0){
  43.     pData = myserial.read();
  44.     }   //保证将缓存中的读取完
  45.     Serial.println("");
  46.    
  47.   }
  48.   
  49. }
复制代码


创作许可协议

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

评论(1)
moshiwoxin
moshiwoxin
作者
已搞定,没有清零comdata
- 没有更多了 -