我目前正在尝试使 PIC32UBL Qt/Linux/Mac 端口通过串行端口工作。到目前为止,我在读取串行端口时总是会超时。
这是完整的PIC32UBL-qt开源项目。
我/dev/ttyUSB0
用作串口,这个适配器已经过测试。我还用逻辑分析仪验证了目标电路正在接收/发送数据到主机程序(PIC32UBL-qt)。它也完全适用于 PIC32UBL 的 Windows 版本。
有缺陷的部分在comport.cpp:156
unsigned short CComPort::ReadComPort(char* buffer, int MaxLen)
{
if (serialPort != NULL)
{
SerialPort::DataBuffer dataBuffer;
// Added a catch for timeouts
try
{
serialPort->Read(dataBuffer, MaxLen,10);
std::copy(dataBuffer.begin(), dataBuffer.end(), buffer);
}
catch(std::exception &e)
{
}
return dataBuffer.size();
}
return 0;
}
所以Read
总是抛出超时,尝试了不同的时间(100、1000):总是超时,还尝试了无限(0):永远不会退出。
问题是否与libserial
正在使用信号处理程序并且我正在使用串行/usb FTDI 适配器有关?