QSerialPort 未正确打开虚拟端口 COM

问题描述

我正在为带有 Qt 的设备开发驱动程序。我已经做过很多次了,我有一个每次都使用的代码。但是,这一次,当我打开 QserialPort 时,它似乎工作正常,但它不是:我可以写,设备接收命令,但我无法在软上接收:信号 QSerialPort::ReadyRead 从未被触发。 当我用 Putty 打开串口(只打开它而不发送任何东西)然后关闭它时,我的 Qt 软在我重新连接时完美地工作:我现在可以正确接收...

您是否知道在打开端口时腻子与我的软体不同/更多? (我有相同的参数,我在 Windows 和 Qt 5.15.2 上)。

我的打开代码

_serial->setPortName(com);
_serial->setBaudrate(QSerialPort::Baud115200);
_serial->setDataBits(QSerialPort::Data8);
_serial->setParity(QSerialPort::noparity);
_serial->setStopBits(QSerialPort::Onestop);
_serial->setFlowControl(QSerialPort::NoFlowControl);

if(!_serial->open(qiodevice::ReadWrite))
{
    emit error(tr("Unable to open port"));
    return;
}

_serial->clear();

我的写代码(像“hello”这样的简单字符串):

_serial->write("Hello");

我的信号连接代码

connect(_serial,&QSerialPort::readyRead,this,&device::processCommand);

我的读取串行代码(processCommand()):

 QString bufferData;

if (_serial->isopen())
{
    _datas.append(_serial->readAll());
    bufferData = _datas.constData();
}

编辑: Qt 示例“终端”不适用于我的设备的 Windows,但适用于 ubuntu...

EDIT 2 : SOLUTION : 我终于找到了解决方案,只需在打开 QSerialPort 后添加 _serial->setDataTerminalReady(true);

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)