1

RS485 送信用の適切なパラメータの設定に問題があります。すでにこの 4 日目に取り組んでいますが、なぜ機能しないのかわかりません。

rs485経由で他のデバイスと通信するプログラムを書いています。私は i.MX6 と Linux Linaro を搭載したミニコンピュータを持っています。ミニコンプでプログラムを実行している特別なフレームを送信しようとすると、送信されますが、デバイスは応答しません。さらに、私のプログラムのように同じ正しいフレームで PC からエコーを送信すると、デバイスが応答します。したがって、問題は 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。

4

0 に答える 0