0

我正在使用 QtCreator 调试在 Qt/C++ 中开发的应用程序。我的应用程序使用 QextSerialPort 从串行端口读取数据,其中串行端口连接到 Rhino Mark IV 控制器。

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)消息是什么意思,为什么会出现?

4

1 回答 1

1

您是否在应用程序中正确配置了串行端口(即波特率、停止位等)?

此外,当零终止缓冲区时,不应添加 1,bytesRead因为这允许在字符串末尾有一个不需要的字节。

该错误消息由gdb生成,而不是 Qt。它可能与使用具有非 latin1 编码名称的文件/文件夹有关。

于 2011-03-25T14:42:13.067 回答