我一直在尝试将字节(按顺序):2201
,2211
等发送到我的Arduino板,我已经连接到我的电脑,使用USB转RS485适配器。
然而,当我通过计算机连接它时,每当我尝试使用2201
命令将echo 2 > /dev/ttyUSB0;echo 2 > /dev/ttyUSB0;echo 0 > /dev/ttyUSB0;echo 1 > /dev/ttyUSB0
发送到我的Arduino时,它有时会正常工作,正常启用LED,但是其他时候它没有显示bash: /dev/ttyUSB0: Input/output error
。
如果你有任何办法解决这个问题,那就太棒了。另外,如果有比echo X > /dev/ttyUSB0
更好的命令将数据发送到我的Arduino,请告诉我。我是串口通信的新手,所以我不确定最好的方法是什么。
答案 0 :(得分:-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 one和this one。
如果您希望交互式访问串行端口,可以使用许多常见的应用程序(屏幕,ckermit,picocom,moserial,minicom等)。< / p>