現在、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 アダプタを使用していることに関連している可能性がありますか?