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

}

}

}

相关推荐
智慧物业老杨4 分钟前
智慧物业数智化转型实战:从工单响应到业主满意度的闭环构建
java·开发语言
Kiling_07047 分钟前
Java集合框架:List集合详解与应用
java·开发语言·windows
fan_music21 分钟前
C语言如何实现C++的类
开发语言·c++
毋语天27 分钟前
Python 常用内置模块详解:日志、随机数、时间、OS 与 JSON
开发语言·python
_君莫笑32 分钟前
Qt+Qml前后端分离上位机软件技术方案
c++·qt·用户界面·qml
右耳朵猫AI34 分钟前
Python技术周刊 2026年第14周
开发语言·python·okhttp
叼烟扛炮43 分钟前
C++ 知识点22 函数模板
开发语言·c++·算法·函数模版
求学中--1 小时前
鸿蒙网络请求从入门到精通:HttpURLConnection+第三方库,GET/POST/文件上传全覆盖
开发语言·php·harmonyos
yaodong5181 小时前
Gemini长上下文重塑RAG架构
开发语言·php
风味蘑菇干1 小时前
继承 + static + final 综合应用
java·开发语言