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

}

}

}

相关推荐
夜晚中的人海5 分钟前
【C++】分治-快速排序算法习题
开发语言·c++·排序算法
爱编程的鱼14 分钟前
想学编程作为今后的工作技能,学哪种语言适用性更强?
开发语言·算法·c#·bug
yugi98783815 分钟前
基于MATLAB的心电信号去噪
开发语言·matlab
国服第二切图仔29 分钟前
Rust入门开发之Rust中如何实现面向对象编程
开发语言·后端·rust
yq146828609031 分钟前
C (统计二进制中“1“的个数)
c语言·开发语言·算法
mm-q291522272942 分钟前
Java并发编程从入门到进阶 多场景实战
java·开发语言
nice_lcj5201 小时前
认识多线程:单例模式
java·开发语言·单例模式
是苏浙1 小时前
零基础入门C语言之数据在内存中的存储
c语言·开发语言
wjs20241 小时前
HTMLCollection 对象
开发语言
Aevget1 小时前
QtitanNavigation助力能源数字化转型:打造清晰可控的系统导航体验
c++·qt·嵌入式·能源·界面控件·ui开发