【问题标题】:Linux - Serial Communication with RS485Linux - 使用 RS485 进行串行通信
【发布时间】:2017-08-13 12:14:47
【问题描述】:

我一直在尝试将字节(按顺序):22012211 等发送到我已使用 USB 到 RS485 适配器连接到计算机的 Arduino 板。

但是,当我将它连接到我的计算机时,每当我尝试使用命令 echo 2 > /dev/ttyUSB0;echo 2 > /dev/ttyUSB0;echo 0 > /dev/ttyUSB0;echo 1 > /dev/ttyUSB02201 发送到我的 Arduino 时,它有时会正常工作,正常打开 LED,但有时它只是没有,显示bash: /dev/ttyUSB0: Input/output error

如果你有办法解决这个问题,那就太好了。另外,如果有比echo X > /dev/ttyUSB0 更好的命令将数据发送到我的Arduino,请告诉我。我是串行通信的新手,所以我不确定最好的方法是什么。

【问题讨论】:

    标签: linux bash communication rs485


    【解决方案1】:

    首先,一个问题:为什么要使用多个echo 语句,而不是单个echo 2201 > /dev/ttyUSB0?后者需要更少的打字。

    您的解决方案和我刚刚提出的解决方案都存在一个问题,即echo 命令在其输出中附加了一个换行符。因此,如果我要将输出定向到文件;像这样:

    echo 2 >afile; echo 2 >>afile; echo 0 >>afile; echo 1 >>afile
    

    我最终得到一个文件,其中包含:

    2\n2\n0\n1\n
    

    这正是您发送串行端口的内容。您可以使用-n 选项来回显以抑制换行,因此:

    echo -n 2201 > /dev/ttyUSB0
    

    您最好使用 shell 以外的东西与串行端口进行交互。 Python(带有pyserial 模块)是一个不错的选择,但其他任何东西也是如此。如果您确实继续使用 shell,还有其他一些值得关注的 stackexchange 问题,例如 this onethis one

    如果您希望交互式访问串行端口,有许多常见的应用程序可以帮助解决这个问题(screen、ckermit、picocom、moserial、minicom 等)。

    【讨论】:

    • 你没有回答我为什么会出现“输入/输出”错误的问题。
    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2014-03-23
    • 2014-10-01
    • 1970-01-01
    • 2023-03-26
    • 2012-11-22
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多