多语言展示
当前在线:1069今日阅读:2今日分享:31

怎样利用libmodbus收发数据

今天小编给大家带来的是怎样利用libmodbus收发数据,希望能帮助到大家!
工具/原料

PC

方法/步骤
1

首先,引入到工程之后,就需要了解几个主要的函数了。初始化与释放;/*  以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。

2

奇偶校验  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)。

3

读取:/*  读取线圈状态,可读取多个连续线圈的状态  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);/*  。

4

读取输入寄存器的值,可读取多个连续输入输入寄存器  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)。

5

写入:/*  写入单个线圈的状态  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)。

注意事项
1

网络虽好,但要注意劳逸结合哦!

2

如果是青少年,小编在这里提示大家千万不能沉迷网络!

推荐信息