QT中Modbus主机调用sendReadRequest()函数,不能读取返回的数据。

在QT中使用Modbus主机进行通信时遇到问题,sendReadRequest()函数调用后,虽然返回的指针对象非空且无错误,但finished信号并未触发,导致槽函数ReadReady_RemoMea未执行。已尝试使用connect函数关联信号和槽,但问题依然存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT中Modbus主机调用sendReadRequest()函数,返回指针对象不为空,也没有错误,但是却不发送finished信号,这是什么原因。

bool a = connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea);

这句信号和槽函数关联语句也被执行,a返回值为true,但是槽函数ReadReady_RemoMea()却没有执行。

下面是代码:

void ModbusData::Modbus_ReadDatas_RemoMea(int serverAddress)
{
 
 
    if (!ModbusMaster)
        return;
 
    QModbusDataUnit readRequest_RemoMea(QModbusDataUnit::InputRegisters,1,100);
 
    if ( auto *Reply = ModbusMaster->sendReadRequest( readRequest_RemoMea, serverAddress))
    {
 
 
 
        quint16 error_RemoMea = Reply->error();
        qDebug() << "error_RemoMea" << error_RemoMea;
 
        if ( !Reply->isFinished() )
        {
 
 
            qDebug() << "1";
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值