qt串口通讯,readyRead没有发出

时间:2015-07-17 08:25:24

标签: c++ qt serial-port qt-signals

我正在使用CameraLink内部虚拟COM端口与CameraLink相机通信。我写了以下代码:

serial=new QSerialPort(this);
connect(serial,SIGNAL(readyRead()),SLOT(readFPN()));
serial->setPortName(comPort);
serial->setBaudRate(QSerialPort::Baud9600);
serial->setStopBits(QSerialPort::OneStop);
serial->setParity(QSerialPort::NoParity);
serial->open(QIODevice::ReadWrite);

QString comm=QString("r gwbr\r"); //read red channel gain
serial->write(comm.toUtf8(),comm.size());

QString comm=QString("r gwbb\r"); //read blue channel gain
serial->write(comm.toUtf8(),comm.size());

... more serial commands

readFPN函数现在什么都不做,除了将读取的数据附加到QByteArray:

void ts4control_calibrationdialog::readFPN()
{
    resp+=serial->readAll();
}

但是从不调用readFPN函数。我设置了一个断点,程序跳过write命令而不调用回调。使用上述设置,与设备的一般通信在COM-Port终端中工作。

我需要更改什么才能发出信号?或者我怎样才能找出它无法正常工作的原因?任何调试想法?

2 个答案:

答案 0 :(得分:0)

完成编写串行命令后,使用QSerialPort::flush()写入底层串口。

答案 1 :(得分:0)

我遇到了同样的问题,读了这本书,读了另外两本无用的东西(对我而言),然后终于发生了,看一看Qt在QSerialPort上提供的一个例子(称为终端),在我看到“连接”行的书写方式不同 代替:

connect(serial,SIGNAL(readyRead()),SLOT(readFPN()));

应该是:

connect( serial, &QSerialPort::readyRead, this, &ts4control_calibrationdialog::readFPN );

我几乎是菜鸟,但我希望这对您有用!