请问485硬件上没有做RTS引脚,libmodbus主机RTS这块该如何配置

发布于 2021-03-03 10:15:30    浏览:291

static void test_thread(void *param)
{

uint16_t tab_reg[64] = {0};
modbus_t *ctx = RT_NULL;
ctx = modbus_new_rtu("uart7", 9600, 'N', 8, 1);
modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485);
modbus_rtu_set_rts(ctx, RS485_RE, MODBUS_RTU_RTS_NONE);
modbus_set_slave(ctx, 3);
modbus_connect(ctx);
modbus_set_response_timeout(ctx, 0, 1000000);
int num = 0;
while (1)
{
    memset(tab_reg, 0, 64 * 2);
    int regs = modbus_read_registers(ctx, 0, 20, tab_reg);
    printf("-------------------------------------------\n");
    printf("[%4d][read num = %d]", num, regs);
    num++;
    int i;
    for (i = 0; i < 20; i++)
    {
        printf("<%#x>", tab_reg[i]);
    }
    printf("\n");
    printf("-------------------------------------------\n");
    rt_thread_mdelay(5000);
}
//7-关闭modbus端口
modbus_close(ctx);

//8-释放modbus资源
modbus_free(ctx);

}

查看更多

张世争
张世争 2021-03-03
This guy hasn't written anything yet
  • 如果使用RS485,不控制方向,无法正常(双向)通信!!
  • 如果没使用RS485,可以使用RS232模式通信。modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS232);
2 个回答
sync
sync 2021-03-03
This guy hasn't written anything yet

如果你的485是自动换向的,不需要RTS控制引脚,
将宏HAVE_DECL_TIOCM_RTS 定义为0即可

define HAVE_DECL_TIOCM_RTS 0

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
291

发布
问题

分享
好友

手机
浏览

扫码手机浏览