簡體   English   中英

Linux - 與RS485的串行通信

[英]Linux - Serial Communication with RS485

我一直在試圖發送的字節數(按順序): 22012211等,以我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM