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

}

}

}

相关推荐
wanghowie6 分钟前
02.04.01 Java Stream API 进阶指南:从底层实现到性能优化
java·开发语言·性能优化
superman超哥15 分钟前
仓颉元编程进阶:编译期计算能力的原理与深度实践
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉元编程·编译器计算能力
这周也會开心27 分钟前
Map集合的比较
java·开发语言·jvm
挖矿大亨31 分钟前
C++中的赋值运算符重载
开发语言·c++·算法
superman超哥34 分钟前
Rust 基本数据类型:类型安全的底层探索
开发语言·rust·rust基本数据类型·rust底层探索·类型安全
Liu-Eleven34 分钟前
Qt/C++开发嵌入式项目日志库选型
开发语言·c++·qt
A242073493041 分钟前
深入浅出JS事件:从基础原理到实战进阶全解析
开发语言·前端·javascript
qq_433554541 小时前
C++区间DP
c++·算法·动态规划
烧冻鸡翅QAQ1 小时前
从0开始的游戏编程——开发前的编程语言准备(JAVAScript)
开发语言·javascript·游戏
saber_andlibert1 小时前
【C++转GO】文件操作+协程和管道
开发语言·c++·golang