1、使用MThing模拟数据
注意:
(1)箭头处一定留空,不然只有本机能收到数据,一开始误以为这是绑定监听IP,被坑了好长时间。
会提示:error connection reset by peer: read
(2)如果端口配置错误会提示:
[Errno 9] Bad file descriptor
(3)另外设置处于选中状态时也会无法获取数据。
2、模拟一个浮点数
3、代码如下
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include "./include/modbus.h" #include <unistd.h> int main(void) { modbus_t *ctx; uint16_t tab_reg[32] = {0}; ctx = modbus_new_tcp("192.168.3.118", 502); //由于是tcp client 连接,在同一程序中相同的端口可以连接多次 modbus_set_debug(ctx, TRUE); //设置debug模式 modbus_set_slave(ctx, 1); //从机地址 modbus_connect(ctx); modbus_set_response_timeout(ctx, 50, 10000000); modbus_set_error_recovery(ctx, MODBUS_ERROR_RECOVERY_LINK | MODBUS_ERROR_RECOVERY_PROTOCOL); while (1) { //printf("test\n"); int regs = modbus_read_registers(ctx, 100, 2, tab_reg); //printf("test1\n"); // regs=modbus_write_register(mb,0x00,94); float f=modbus_get_float_dcba(tab_reg); printf("%d %d %d %d %d %f\n", regs, tab_reg[0], tab_reg[1], tab_reg[2], tab_reg[3],f); sleep(3); } modbus_close(ctx); modbus_free(ctx); return 0; }
4、运行结果