我正在使用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到目前为止,除了将读取的数据附加到QByteArray之外,readFPN函数什么也不做:
void ts4control_calibrationdialog::readFPN()
{
resp+=serial->readAll();
}但是readFPN函数从未被调用过。我设置了一个断点,程序在不调用回调的情况下跳过write命令。使用上述设置,与设备的常规通信在COM-Port-终端中工作。
我必须更改什么才能发出信号?或者,我如何找出它不工作的原因?有什么调试的想法吗?
发布于 2015-07-17 16:32:25
一旦完成了串行命令的编写,就可以使用QSerialPort::flush()来写入底层的串行端口。
发布于 2018-09-27 11:37:18
我也遇到了同样的问题,读了这篇文章,读了一些其他无用的东西(对我来说),然后我终于想到,看看Qt为我们的终端(称为QSerialPort )提供的一个例子,在这个例子中,我看到"connect“行被不同地写成了,而不是:
connect(serial,SIGNAL(readyRead()),SLOT(readFPN()));它将是:
connect( serial, &QSerialPort::readyRead, this, &ts4control_calibrationdialog::readFPN );我几乎是个菜鸟,但我希望这对你有用!
https://stackoverflow.com/questions/31471379
复制相似问题