如何解决Linux和Modbus的错误文件描述符

问题描述 投票:1回答:1

我正在尝试在运行Raspian Buster的Raspberry Pi上使用libmodbus通过FTDI USB到串行适配器来设置半双工RS-485通信。运行ls / dev /时,我的FTDI适配器显示为ttyUSB0。

我尝试了以下示例代码:

#include <modbus.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>

int main(void) {
   modbus_t *ctx  = modbus_new_rtu("/dev/ttyUSB0", 19200, 'N', 8, 1);
    if (ctx == NULL) {
        fprintf(stderr, "Unable to create the libmodbus context\n");
        return 0;
    }

    if (modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485) == -1) {
        fprintf(stderr, "Error setting the serial port as RS-485\n");
        fprintf(stderr, "errno: %d\n (EBADF == 9)", errno);
        modbus_free(ctx);
        return 0;
    }
}

gcc test1.c -I/usr/include/modbus -lmodbus一起编译。而且即使我使用errno运行此代码,我也将9命名为EBADFsudo

linux modbus rs485
1个回答
1
投票

您的问题有一个非常简单的解决方案:只需不设置MODBUS_RTU_RS485,很可能您就不需要它。

© www.soinside.com 2019 - 2024. All rights reserved.