我正在使用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终端中工作。
我需要更改什么才能发出信号?或者我怎样才能找出它无法正常工作的原因?任何调试想法?
答案 0 :(得分:0)
完成编写串行命令后,使用QSerialPort::flush()
写入底层串口。
答案 1 :(得分:0)
我遇到了同样的问题,读了这本书,读了另外两本无用的东西(对我而言),然后终于发生了,看一看Qt在QSerialPort上提供的一个例子(称为终端),在我看到“连接”行的书写方式不同 代替:
connect(serial,SIGNAL(readyRead()),SLOT(readFPN()));
应该是:
connect( serial, &QSerialPort::readyRead, this, &ts4control_calibrationdialog::readFPN );
我几乎是菜鸟,但我希望这对您有用!