Şu anda seri portla çalışan PIC32UBL Qt/Linux/Mac portunu yapmaya çalışıyorum. Şimdiye kadar seri portu okurken zaman aşımına uğruyorum.Daima zaman aşımına uğradı
İşte tam PIC32UBL-qt açık kaynak projesi.
Seri bağlantı noktası olarak /dev/ttyUSB0
kullanıyorum, bu bağdaştırıcı test edildi. Ayrıca, hedef devrenin bir mantık analizörü ile ana programa (PIC32UBL-qt) veri gönderip aldığını doğruladım. Ayrıca tamamen PIC32UBL'ın Windows sürümü ile çalışıyor.
arızalı kısmı 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;
}
Yani Read
hep bir zaman aşımı atar de, farklı zamanlama (100, 1000) çalıştı ise: Her zaman aşımı ve ayrıca denenmiş sonsuz (0): çıkmayınt.
Sorun, libserial
'un sinyal işleyicisi ile çalıştığından ve seri/usb FTDI bağdaştırıcısı kullanmayla ilgili olabilir mi? chux yorumuna göre
1) Ne sadece 1 okumaya çalışıyorum hakkında bayt? (Maxlen nedir?) 2) Doğru veri, doğru baud, bit, vb. Verileri alıyor? Bu portun çıkış verisini kendi girişi olarak geri alarak potansiyel farkı ortadan kaldırabilir. – chux
@chux İşaretçiniz için teşekkürler, bir defada bir bayt okumak için değişti ve mükemmel çalışıyor, bu işlev için çalışma kodu sürümü de dahil olmak üzere yanıtı yayınlayacaktır. –