首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qt串行通信,readyRead未发出

qt串行通信,readyRead未发出
EN

Stack Overflow用户
提问于 2015-07-17 16:25:24
回答 2查看 2.3K关注 0票数 0

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

代码语言:javascript
复制
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函数什么也不做:

代码语言:javascript
复制
void ts4control_calibrationdialog::readFPN()
{
    resp+=serial->readAll();
}

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

我必须更改什么才能发出信号?或者,我如何找出它不工作的原因?有什么调试的想法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-17 16:32:25

一旦完成了串行命令的编写,就可以使用QSerialPort::flush()来写入底层的串行端口。

票数 0
EN

Stack Overflow用户

发布于 2018-09-27 11:37:18

我也遇到了同样的问题,读了这篇文章,读了一些其他无用的东西(对我来说),然后我终于想到,看看Qt为我们的终端(称为QSerialPort )提供的一个例子,在这个例子中,我看到"connect“行被不同地写成了,而不是:

代码语言:javascript
复制
connect(serial,SIGNAL(readyRead()),SLOT(readFPN()));

它将是:

代码语言:javascript
复制
connect( serial, &QSerialPort::readyRead, this, &ts4control_calibrationdialog::readFPN );

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31471379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档