我正在調試使用QtCreator在Qt/C++中開發的應用程序。我的應用程序使用QextSerialPort從串行端口讀取數據,串行端口連接到Rhino Mark IV控制器。Qt調試錯誤:「解析目標庫列表時:不正確(無效標記)」
int bytesRead;
char buffer[BUFFER_SIZE];
if (_serialPort->bytesAvailable() > 0
&& (bytesRead = _serialPort->read(buffer, BUFFER_SIZE)) > 0)
{
_comBuffer.append(buffer, bytesRead);
buffer[bytesRead+1] = 0; // for debugging purposes
qDebug(buffer); // for debugging purposes
}
我有這個麻煩,因爲我嘗試讀一些ASCII數據,但我進入緩衝區有一些奇怪的字符。例如,數字零('0')的ASCII碼被調試器顯示的另一個代碼替代,並由qDebug
打印爲'°'。
此外,我在應用輸出選項卡中獲得以下消息:while parsing target library list: not well-formed (invalid token)
。
我不知道爲什麼我沒有得到與QextSerialPort相應的ASCII碼。這是QextSerialPort還是Rhino Mark IV控制器的問題?我正在通過兩臺顯示器上的串行端口查看通信量,並且ASCII字符在顯示器上正確顯示。因此,我得出結論,這不是控制器或通信信道的問題。
是什麼消息while parsing target library list: not well-formed (invalid token)
意味着和爲什麼它造成的呢?
我補充說,1〜'bytesRead'用於調試的目的,只是爲了輕鬆地打印存儲在緩衝區中的字符串,因爲我知道,在我的測試中,我將永遠不會有溢出(因爲我做了測試,我知道,在這些測試中,緩衝區永遠不會被填滿)。 我確實設置了正確的波特率,但我不確定其他參數是否設置正確。但是,我可以從端口讀寫(實際上,通過串行連接發送命令完全可行),但問題是從端口讀取的字節似乎沒有正確的字符編碼。 – Genba 2011-03-25 21:44:31
最後,我意識到我配置串口的方式根本不正確。一些設置是正確的,但不是全部。我沒有在設備手冊中找到這些信息,但是在一本與正確設備不同的手冊中,這非常煩人。 – Genba 2011-04-13 12:12:40