当前位置: 首页 > article >正文

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!";
            }
        }
    }


http://www.kler.cn/a/321730.html

相关文章:

  • JDBC-Mysql 时区问题详解
  • ubuntu下openssl签名证书制作流程及验证demo
  • 使用--log-file保存pytest的运行日志
  • NPOI 实现Excel模板导出
  • 【服务器】本地安装X11 服务器-Windows
  • 【Window主机访问Ubuntu从机——Xrdp配置与使用】
  • 双十一有哪些数码家电值得入手?双十一五款必入手名单大曝光
  • Python 入门(一、使用 VSCode 开发 Python 环境搭建)
  • 数学建模练习小题目
  • 嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)
  • 基于Ambari搭建hadoop生态圈+Centos7安装教程V2.0优化版(本篇博客写的较为详细,可能比较多,请耐心看)
  • Android在外部存储上读写图片文件
  • 【python】range 语句
  • NLP 生成式任务核心梳理
  • react通过下拉框选择多个,并展示在下方的方式
  • 看Threejs好玩示例,学习创新与技术(React-three-fiber)
  • 【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化
  • SpringCloud源码:客户端分析(二)- 客户端源码分析
  • ArduSub程序学习(11)--EKF实现逻辑①
  • [AI问答] Auto-sklearn和Auto-Keras对比
  • Ubuntu20.04.6 环境下docker设置proxy
  • SpringBoot-Starter2.7.3自动装配Redisson升级版本运行时的问题
  • 自动驾驶技术:人工智能驾驶的未来
  • tauri程序加载本地图片或者文件在前端页面展示
  • ModStartCMS v8.9.0 图片上传优化,富文本编辑器修复
  • Spring Boot 实战:使用观察者模式实现实时库存管理