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,
应该没什么问题。是数据线的问题么?
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
发送和接受的波特率问题还是?
------解决方案--------------------------------------------------------
可能是linux缓冲问题吧。
------解决方案--------------------------------------------------------
应该是波特率问题,有没有FIFO暂存数据呢