2017-03-21 230 views
2

我一直在試圖發送字節(按順序):2201,2211等我的Arduino板,我已經連接到我的電腦,使用USB到RS485適配器。但是,當我將它連接到計算機上時,無論何時我嘗試使用命令echo 2 > /dev/ttyUSB0;echo 2 > /dev/ttyUSB0;echo 0 > /dev/ttyUSB0;echo 1 > /dev/ttyUSB02201發送到我的Arduino,它有時都能正常工作,正常情況下它會正常打開LED,但有時候它不會正常工作,顯示bash: /dev/ttyUSB0: Input/output errorLinux - 與RS485串行通信

Screenshot

如果通過這個獲得的任何方式,那簡直太好了。另外,請讓我知道是否有比echo X > /dev/ttyUSB0更好的命令將數據發送給我的Arduino。我是串口通信的新手,所以我不確定要做到這一點的最佳方法是什麼。

回答

0

首先,一個問題:爲什麼你使用多個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 

你可能會更好使用除外殼以外的東西與串行端口進行交互。 Python(pyserial模塊)是一個不錯的選擇,但其他任何東西都是如此。如果你繼續使用shell,還有一些其他的stackexchange問​​題值得關注,比如this onethis one

如果你想有交互訪問串口,有一些常見的應用程序可以幫助(屏幕,ckermit,picocom,moserial,minicom等)。

+0

您沒有回答我爲什麼給出「輸入/輸出」錯誤的問題。 – Coto