如何解决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 举报,一经查实,本站将立刻删除。