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

}

}

}

相关推荐
Qt学视觉2 分钟前
PaddlePaddle-2wget下载安装
c++·人工智能·paddlepaddle
老秦包你会8 分钟前
C++进阶------C++的类型转换
java·开发语言·c++
星辰烈龙8 分钟前
黑马程序员JavaSE基础加强d2
java·开发语言
superman超哥8 分钟前
仓颉性能瓶颈定位方法深度解析
c语言·开发语言·c++·python·仓颉
是苏浙13 分钟前
零基础入门Java之认识String类
java·开发语言
leaves falling17 分钟前
c语言-static和extern
c语言·开发语言
武汉唯众智创17 分钟前
“物联网 Python 开发教程”课程教学解决方案
开发语言·python·物联网·物联网技术·物联网 python 开发·python 开发
时光Autistic21 分钟前
【搭建教程】腾讯混元3D模型部署
开发语言·python·3d·github
于樱花森上飞舞22 分钟前
【多线程】常见的锁策略与锁
java·开发语言·算法·java-ee
黎雁·泠崖23 分钟前
C 语言的内存函数:memcpy/memmove/memset/memcmp 精讲(含模拟实现)
c语言·开发语言