簡體   English   中英

UBUNTU C的USB到串行通信問題

[英]USB to Serial communication problems for UBUNTU C

我正在嘗試從Odroid-U2上的C ++代碼控制伺服器。 我使用USB串行線將LynxMotion的SSC-32伺服驅動器連接到Odroid。

簡單的串行命令控制伺服器,例如“ #n Puuu”,后跟回車,其中n =伺服器的針腳編號,uuu =脈沖寬度。 使用來自Odroid的PUTTY時,我可以很好地控制伺服器,但是使用C ++代碼控制伺服器時遇到問題。 例如,在我的代碼中,我執行以下操作:

fstream f;
f.open("/dev/ttyUSB0");
f << "#0 P600\r";
f.close();

一次,我能夠運行此代碼,並且它適當地擺動了伺服系統,但是現在當我嘗試運行此代碼時,終端卡住並掛起。 我將問題縮小到f.open(“ / dev / ttyUSB0”)行,這阻止了代碼運行。 我假設我需要以某種方式配置USB端口。 我知道我需要115200的波特率,並進行了相應的設置,但是我有點像Ubuntu n00b,所以我不確定我還需要其他哪些類型的配置。

我的Linux版本是Linaro 12.11。

當我鍵入stty時,非默認配置設置似乎是:

speed 115200 baud; line = 0;
-brkint ixoff -imaxbel
-iexten

您不能依賴串行端口的默認設置(並且不應嘗試使用stty在程序外部進行設置)。 您必須將代碼寫入程序以正確設置串行端口。 為此,您必須使用tcsetattr / tcgetattr,cfsetspeed等功能,請參見man termios。

另外,fstream可能不提供對使用的適當open()函數參數的訪問,因為在UNIX上打開串行端口應使用O_NOCTTY標志來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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