[英]Linux - Serial Communication with RS485
我一直在試圖發送的字節數(按順序): 2201
, 2211
等,以我的Arduino板,我已經連接到我的電腦,使用USB轉RS485適配器。
但是,當我連接到我的計算機時,每當我嘗試將2201
發送到我的Arduino時,使用命令echo 2 > /dev/ttyUSB0;echo 2 > /dev/ttyUSB0;echo 0 > /dev/ttyUSB0;echo 1 > /dev/ttyUSB0
,它有時會正常工作,正常打開LED,但有時則不然,顯示bash: /dev/ttyUSB0: Input/output error
。
如果你有任何辦法解決這個問題,那就太好了。 另外,如果有比echo X > /dev/ttyUSB0
更好的命令將數據發送到我的Arduino,請告訴我。 我是串口通訊的新手,所以我不確定最好的方法是什么。
首先,一個問題:為什么你使用多個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問題,比如這一個和這個問題 。
如果您想要對串口進行交互式訪問,可以使用許多常見的應用程序(屏幕,ckermit,picocom,moserial,minicom等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.