PC
首先,引入到工程之后,就需要了解几个主要的函数了。初始化与释放;/* 以TCP的方式创建libmobus实例 char *ip:连接的IP地址 int port: 连接的IP端口 */modbus_t *modbus_new_tcp(const char *ip, int port);/* 以串口的方式创建libmobus实例 onst char *device:连接的串口号,类似是这样'\\\\.\\COM10' int baud: 波特率 char parity。
奇偶校验 int data_bit:数据位 int stop_bit:停止位 */modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);/* 释放libmodbus实例,使用完libmodbus需要释放掉 modbus_t *ctx:libmodbus实例 */void modbus_free(modbus_t *ctx)。
读取:/* 读取线圈状态,可读取多个连续线圈的状态 modbus_t *ctx:Modbus实例 int addr: 线圈地址 int nb:读取线圈的个数 uint8_t *dest: 传出的状态值 */int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);/* 读取输入状态,可读取多个连续输入的状态 modbus_t *ctx:Modbus实例 int addr:输入地址 int nb:读取输入的个数 uint8_t *dest:传出的状态值 */int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);/* 。
读取输入寄存器的值,可读取多个连续输入输入寄存器 modbus_t *ctx:Modbus实例 int addr:输入地址 int nb:读取输入寄存器的个数 uint8_t *dest:传出的寄存器值 */int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);/* 读取保持寄存器的值,可读取多个连续输入保持寄存器 modbus_t *ctx:Modbus实例 int addr:输入地址 int nb:读取保持寄存器的个数 uint8_t *dest:传出的寄存器值 */int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)。
写入:/* 写入单个线圈的状态 modbus_t *ctx:Modbus实例 int addr:线圈地址 int status:线圈状态 */int modbus_write_bit(modbus_t *ctx, int addr, int status); /* 写入多个连续线圈的状态 modbus_t *ctx:Modbus实例 int addr:线圈地址 int nb:线圈个数 const uint8_t *src:多个线圈状态 */int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src); /* 写入单个寄存器 modbus_t *ctx:Modbus实例 int addr:寄存器地址 int value:寄存器的值 */int modbus_write_register(modbus_t *ctx, int addr, int value); /* 写入多个连续寄存器 int addr:寄存器地址 int nb:寄存器的个数 const uint16_t *src:多个寄存器的值 */int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *src)。
网络虽好,但要注意劳逸结合哦!
如果是青少年,小编在这里提示大家千万不能沉迷网络!