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

}

}

}

相关推荐
Mr YiRan25 分钟前
C++面向对象继承与操作符重载
开发语言·c++·算法
一只鹿鹿鹿3 小时前
智慧水利一体化建设方案
大数据·运维·开发语言·数据库·物联网
没有医保李先生5 小时前
字节对齐的总结
java·开发语言
Elastic 中国社区官方博客5 小时前
使用 Elastic 进行网络监控:统一网络可观测性
大数据·开发语言·网络·人工智能·elasticsearch·搜索引擎·全文检索
Codefengfeng5 小时前
Python Base环境中加包的方法
开发语言·python
清水白石0085 小时前
《Python 编程全景解析:从核心精要到测试替身(Test Doubles)五大武器的实战淬炼》
开发语言·python
额,不知道写啥。6 小时前
HAO的线段树(中(上))
数据结构·c++·算法
六件套是我6 小时前
无法访问org.springframeword.beans.factory.annotation.Value
java·开发语言·spring boot
LYS_06187 小时前
C++学习(5)(函数 指针 引用)
java·c++·算法
S-码农7 小时前
Linux ——条件变量
linux·开发语言