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

}

}

}

相关推荐
不瘦80斤不改名5 分钟前
HTML基础(一)
开发语言·前端·html
Shadow(⊙o⊙)6 分钟前
初识Qt+经典方式实现hello world!的交互
开发语言·c++·后端·qt·学习
Byte Wizard6 分钟前
C语言指针深入浅出3
c语言·开发语言
88号技师10 分钟前
2026年4月一区SCI-狒狒优化算法Baboon optimization algorithm-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
梵尔纳多16 分钟前
OpenGL 实例化
c++·图形渲染·opengl
平凡但不平庸的码农23 分钟前
Go context 包详解
开发语言·后端·golang
隐士Xbox23 分钟前
c++ 指针的用法
开发语言·c++·计算机视觉
江南十四行28 分钟前
Python元类编程——从type到metaclass的深度探索
开发语言·python
众乐乐_200832 分钟前
PHP 的进程 fork 机制
开发语言·php
yujunl34 分钟前
U9 WCF调试的一个坑
开发语言