modbus 的float与uint_16的转换

float values = 0.5; // 要写入的值

uint16_t wdata2{ 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 rdata2 = { 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!";

}

}

}

相关推荐
月亮邮递员6169 分钟前
Markdown语法总结
开发语言·前端·javascript
printfLILEI9 分钟前
php中的类与对象以及反序列化
linux·开发语言·php
曹牧10 分钟前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#
代码中介商10 分钟前
深入解析STL中的stack、queue与priority_queue
开发语言·c++
彦为君15 分钟前
JavaSE-07-异常机制
java·开发语言·后端·python·spring
OxyTheCrack32 分钟前
【Golang】简述make与new内置函数以及两者的区别
开发语言·golang
Rain50941 分钟前
mini-cc 的 MCP 协议:给 AI 装个 USB-C 接口
c语言·开发语言·前端·人工智能·架构·node.js·ai编程
华科大胡子1 小时前
AI开发者的网络卡点:Anthropic连接超时
开发语言·php
磊 子1 小时前
STL无序关联容器—unorded_set+unorded_map
开发语言·c++
初夏睡觉2 小时前
数据结构学习之~二叉堆 (P3378 【模版】堆)
数据结构·c++·学习