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

}

}

}

相关推荐
choumin19 分钟前
C程序能调用extern “C“声明的带默认参数的C++函数吗?
c语言·c++·extern c·默认参数
AmyLin_200139 分钟前
PDF 色彩保真工程实践【3】上手实践:工程结构、依赖集成与一键构建运行
c++·visualstudio·pdf·zlib·vcpkg·libtiff·cmyk
并不喜欢吃鱼1 小时前
从零开始 C++------ 十六.深度拆解 C++ 智能指针:unique_ptr/shared_ptr/weak_ptr 底层模拟、内存泄漏根治
开发语言·c++
不相心 -w-1 小时前
Cmake的基础用法
linux·开发语言·c++
撑伞的鱼99371 小时前
C++开发用什么AI编程工具效果好?2026年实测横评(附选型指南)
开发语言·c++·ai编程·cursor
大数据张老师1 小时前
Typora 导出 Word 模版操作手册
开发语言·c#·word·typora
略略略咯咯1 小时前
stream流浅拷贝
开发语言·python
long3161 小时前
Java 团队入门到精通学习资料
java·开发语言
城管不管2 小时前
rabbitmq如何保证消息不丢失?解决方案又是什么?
开发语言·ai·面试·职场和发展·rabbitmq·php·agent
程序员良辰2 小时前
【TongWeb7】启动接近两分钟问题排查
java·开发语言·中间件