gpt4 book ai didi

c++ - QextSerialPort 的字符编码问题 (Qt/C++)

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:15 24 4
gpt4 key购买 nike

我正在 QtCreator 中开发一个 Qt/C++ 程序,它使用 QextSerialPort 从/向串口读取和写入。我的程序向 Rhino Mark IV Controller 发送命令,并且必须读取这些命令的响应(以防它们产生任何响应)。我的开发和部署平台是 Windows XP Professional。

当 Mark IV 发送对命令的响应并且我的程序从串行端口缓冲区读取该响应时,数据未正确编码;我的程序似乎没有获得纯 ASCII 数据。例如,当 Mark IV 发送一个 ASCII“0”(十进制 48)后跟回车(十进制 13)时,我的缓冲区(char *)得到 -80 和 13。字符没有正确编码,但是确实是回车。 我试过同时使用 read (char *data, qint64 maxSize)readAll () .

我一直在监视串口流量,使用两个监视器来解释 ASCII 数据并显示相应的字符,以两种方式发送的数据似乎都已正确编码 (它们实际上显示正确)。鉴于 QByteArray不解释任何字符编码,我尝试同时使用 read (char *data, qint64 maxSize)readAll () ,我已经放弃了问题可能是由 Qt 引起的。但是,我不确定问题是否是由 QextSerialPort 引起的,因为我的程序正确发送(写入)数据,但没有读取正确的字节。

我还尝试使用 super 终端手动与 Mark IV Controller 通信,通信也能正常进行。我使用具有以下参数的 super 终端设置连接:

  • 波特率:9600
  • 数据位:8
  • 校验位:0
  • 停止位:1
  • 流量控制:硬件

我的程序使用相同的参数设置串口。 super 终端能用,我的程序不行。

我从 qextserialport.sourceforge.net 开始使用 QextSerialPort 1.1然后尝试使用来自 QextSerialPort on Google Code 的最新源代码, 问题依旧。

字符编码错误的原因是什么?

我该怎么做才能解决这个问题?

最佳答案

48 与 -80 对我来说就像是 signed char 与 unsigned char 不匹配。尝试使用显式 unsigned char* 而不是 char*。

关于c++ - QextSerialPort 的字符编码问题 (Qt/C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com