【发布时间】:2017-09-19 19:19:33
【问题描述】:
我有一个比较粗糙的设备(两台计算机通过 COM 端口连接),我必须通过QSerialPort 让它工作。这个想法很简单:数据将通过每个 COM 端口从一个组件发送到另一个组件。
发射器工作正常,通过辅助软件检查,接收数据有问题。我是通过QSerialPort 做的,如下:
一开始我设置了端口:
QSerialPort *serialport = new QSerialPort();
serialport->open(QIODevice::ReadOnly);
serialport->setPortName("COM1");
serialport->setBaudRate(QSerialPort::Baud19200);
serialport->setDataBits(QSerialPort::Data8);
serialport->setParity(QSerialPort::NoParity);
然后我准备捕获这样的数据:
connect(serialport,SIGNAL(readyRead()),this, SLOT(change_gear()) );
在 slot change_gear 中,我只有: qDebug()
但是这个槽从来没有被执行过! 所以,我就是不明白这里出了什么问题,为什么我不能这么简单地从 COM 端口读取数据..
操作系统 - Windows 8, Qt 5.8.0 MinGW 32
【问题讨论】:
-
设置参数后必须执行以下指令
serialport->open(QIODevice::ReadOnly); -
当前的QSerialPort 5.9不需要在参数设置后打开,但这样做更方便。一旦端口打开,您可以随意更改参数。电缆另一端的设备将如何反应是另一个问题。我觉得对上述问题的澄清是有道理的,因为这意味着这是一个硬性规定。
标签: c++ qt serial-port tcomport