我正在編寫一個Qt應用程序,通過串行端口與另一臺計算機通信。我有兩個真正的問題。Qt串行端口通信
1. 我可以很好地發送和接收數據,但有時串口「吃」了我輸入的一部分。 例如,如果我派:
cd /application/bin
有時(並不總是)它只會收到:
cd /applica
(因爲它是與之呼應的輸入背端也是我及時告訴我,我顯然是在錯誤的地方。)
2. 此外,有時Qt的插槽中時,有可用不火,即使我知道,有我可以接收數據數據時觸發。如果我沿着端口發送另一個\r\n
,則插槽將會閃光。 例如有時我會ls
東西,命令名將從端口讀回,但文件夾的內容坐在那裏,直到我再次打回來。然後我得到目錄的列表和兩個提示。
這裏是我的代碼:
void Logic::onReadyRead(){
QByteArray incomingData;
incomingData = port->readAll();
QString s(incomingData);
emit dataAvailable(s);// this is a Qt slot if you don't know what it is.
qDebug() << "in:"<< s.toLatin1();
}
void Logic::writeToTerminal(QString string)
{
string.append("\r\n");
port->write((char*)string.data(), string.length());
if (port->bytesToWrite() > 0){
port->flush();
}
qDebug() << "out:" << string.toLatin1();
}
我剛剛意識到它可能不明確,這些都是無關的問題。 Shell會告訴我它不能進入'/ applica',因爲不存在這樣的目錄 – Muricula
您需要緩衝從端口讀取的數據,直到遇到可能需要從端口多次讀取的 。 –
Pete