欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > modbus 的float与uint_16的转换

modbus 的float与uint_16的转换

2024/10/24 13:19:36 来源:https://blog.csdn.net/m0_74224591/article/details/142556169  浏览:    关键词:modbus 的float与uint_16的转换

    float values = 0.5;  // 要写入的值
    uint16_t wdata[2]{ 0 };
    modbus_set_float(values, wdata);
    // 写多个寄存器  
    int rc = modbus_write_registers(ctx, 8194, 2, wdata);
    if (rc == -1) {
        // 写操作失败,处理错误  
        fprintf(stderr, "Failed to write registers: %s\n", modbus_strerror(errno));
        modbus_close(ctx);
        modbus_free(ctx);
        ctx = nullptr;
        // 可能还需要更新UI以反映连接状态  
    }
    else {
        qDebug() << "Registers written successfully.";

        // 读取写入的寄存器以验证  
        uint16_t rdata[2] = { 0 };
        rc = modbus_read_registers(ctx, 8194, 2, rdata);
        if (rc == -1) {
            // 处理读取错误  
        }
        else {
            float read_value = modbus_get_float(rdata); // 假设这个函数正确处理了字节序  
            qDebug() << "Read value:" << read_value;
            // 验证读取的值是否与写入的值相同  
            if (fabs(read_value - values) < 0.0001) {
                qDebug() << "Read and written values match.";
            }
            else {
                qDebug() << "Read and written values do not match!";
            }
        }
    }

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com