为rs485 comunication linux设置端口

时间:2016-11-27 23:43:38

标签: c linux configuration serial-port rs485

我在为rs485传输设置好参数时遇到问题。我已经在第4天工作,我不知道它为什么不起作用。

我正在编写一个程序,它将通过rs485与其他设备进行通信。我有一台配备i.MX6和Linux Linaro的小型机。当我尝试发送特殊帧在我的minicomp上运行我的程序它发送但是,我的设备不负责任。此外,当我从我的电脑发送回声与相同的正确帧时,如我的程序设备响应。所以问题是配置我的UART端口/ dev / ttyUSB。

我需要波特率115200和帧8位和1个停止位。

void SetUARTPort()
{

    int errnum;
    ctrl485.flags |= SER_RS485_ENABLED;
    ctrl485.flags |= SER_RS485_RX_DURING_TX;
    ctrl485.delay_rts_before_send = 0;
    ctrl485.delay_rts_after_send = 0;


    status = ioctl(fd, TIOCSRS485, &ctrl485);
    if (status <0 )
    {
             printf("%s: Unable to configure port in 485 mode, status (%i)\n", dev, status);
             errnum = errno;
                  fprintf(stderr, "Value of errno: %d\n", errno);
                  fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
     }

    option.c_cflag = B115200 | CS8 | CSTOPB | CLOCAL ;
    option.c_iflag = 0;
    option.c_oflag = 0;
    option.c_lflag = 0;
    option.c_iflag = IGNPAR | IGNBRK;

    speed = B115200 ;
    tcgetattr(fd, &option);
    cfsetospeed(&option, speed); //TX baude rate
    cfsetispeed(&option, speed); // RX baude rate
    tcsetattr(fd, TCSANOW, &option); //set new serial config}

最后一件事就是ioctl问题。当我启动程序时,我遇到了类似的错误:

/dev/ttyUSB0: Unable to configure port in 485 mode, status (-1)
Value of errno:25. Inappropriate ioctl for device

我想我尝试了很多东西,但我仍然不知道为什么它不起作用。 有人可以帮帮我吗?

cvanny。

0 个答案:

没有答案