当前位置: 代码迷 >> 嵌入开发 >> 串口通信数据丢失有关问题
  详细解决方案

串口通信数据丢失有关问题

热度:925   发布时间:2013-02-26 00:00:00.0
串口通信数据丢失问题
PC端的串口通信用的是Win_QextSerialPort类(sourceForge上下的)操作串口,开发板上调用的linux系统函数读写串口
PC端写command:int i = comPort->write(str.toAscii().constData(), str.length());
返回值为 -1,但是开发板(linux2.6.14)上能正确的读到str.toAscii().constData();
开发板上接到命令后,开始回发data;
开发板端发Data:char sendData[128];
sprintf(sendData, "%d", data);
int length_write = write(uart_fd, sendData, (strlen(sendData)));
  printf("length_write=%d\n", length_write);打印的length_write显示write成功。
但是收端(PC)上:if(comPort->isReadable()){
  memset(buff, 0, 1024);
  bytesRead = comPort->readData(buff, comPort->bytesAvailable());
  }
  收到的数据长度bytesRead总是2,远远小于length_write。
  串口线是,UART转USB的。
有谁知道是什么原因啊,PC->开发板的数据(命令)没有丢失,而反向的时候数据就丢了。读写调用的都是封装好的API,
应该没什么问题。是数据线的问题么?

------解决方案--------------------------------------------------------
探讨
PC端的串口通信用的是Win_QextSerialPort类(sourceForge上下的)操作串口,开发板上调用的linux系统函数读写串口
PC端写command:int i = comPort->write(str.toAscii().constData(), str.length());
返回值为 -1,但是开发板(linux2.6.14)上能正确的读到str.toAscii().co……

------解决方案--------------------------------------------------------
发送和接受的波特率问题还是?
------解决方案--------------------------------------------------------
可能是linux缓冲问题吧。
------解决方案--------------------------------------------------------
应该是波特率问题,有没有FIFO暂存数据呢
  相关解决方案