串行端口:来自设备的不同答案

Serial Port: Different answers from device

我在翻译我的代码时遇到了一点问题。我试图让一些继电器(设置在定制的 PCB 上)在我按下按钮时打开和关闭。 问题是我编写了执行此操作的代码(因此它会根据我的操作打开和关闭)但我还需要从机器读取答案。关键是我有一个用 C# 编写的旧版本代码,当通过该程序发送代码时,我得到了 OK 答案,而使用用 C++ 编写的新版本代码时,我只得到了第一个字母回答。 我正在使用串口监视器查看机器发回的内容,我得到了相同的结果(不像我的代码只读取一个字母)。所以,重点是:C# 代码得到完整的答案 ("AWOK11") 而 C++ 代码只得到它的第一个字母 ("A")。 C# 代码在 SharpDevelop 中完成,C++ 代码在 Qt Creator 中完成。

C++代码:

QSerialPort portverf;
portverf.setBaudRate(QSerialPort::Baud9600);
portverf.setDataBits(QSerialPort::Data8);
portverf.setParity(QSerialPort::NoParity);
portverf.setStopBits(QSerialPort::OneStop);
portverf.setFlowControl(QSerialPort::NoFlowControl);
portverf.setPortName("COM41");
portverf.open();
port.write(command);
QString result = portverf.readAll();

在此先感谢您的帮助!

方法QIODevice::readAll() 从设备读取所有可用数据。如果只有 A 可用,它将 return 和 A。它不会等待其他字符。由于您在写入后立即读取,因此只读取第一个字符是可以预期的。