1. 程式人生 > >在ubuntu下利用minicom實現串列埠通訊

在ubuntu下利用minicom實現串列埠通訊

    windos有串列埠除錯助手,linux下也有這樣的工具——minicom。不過,minicom和linux下的許多工具都一樣,也是命令列模式,沒有圖形化介面供我們享受。作為一款串列埠除錯工具,雖然難看但總比沒有的好。

    為什麼linux下的工具都這麼的簡樸,沒什麼華麗的介面,好像回到瞭解放前。一種可能的原因是linux這種非商業性質的軟體,都是有自由軟體愛好者通過其業餘時間創作的,沒有時間搞使用者體驗度調查,也沒有精力搞優美的圖形介面。而且,linux是一種面向專業使用者的系統,而非windows那種傻瓜式系統,工具軟體實現功能就行了,沒必要太過華麗。甚至,我認為簡陋的工具軟體可以讓程式開發人員更能深刻領會軟體的機理,而完美包裝的軟體卻遮蔽了技術的細節,很難提高自我。所以,忍受linux下的痛苦軟體,才能獲得開心知識。

    回到正題,下面來一步一步實現minicom的安裝。首先宣告本文涉及的平臺,(虛擬機器 VMware 6.5 ) || (linux Ubuntu12.0.4) || (usb轉串列埠),相信廣大開發者很大一部分用的都是筆記本,自然選擇的也是USB轉串列埠。

安裝minicom

一條命令就搞定了minicom的安裝

#sudo apt-get install minicom  

在linux下實現串列埠通訊

    有兩者方法可以實現串列埠通訊,依次展開。

方法1--以硬串列埠掛載到linux系統中 

1、檢視主機usb轉串列埠的串列埠號

    我這裡是COM1

2、為虛擬機器Ubuntu新增一個硬串列埠

    這裡選擇和物理主機一樣的虛擬串列埠COM1

    配置完成後的效果

    啟動虛擬機器後,可以通過VM -> Removable Devices 檢視當前主機什麼可移動硬體連線在虛擬機器上。方式一,必須保證Serial port(Using port COM1)連線在虛擬機器上,而Prolific USB-Serial Controller與虛擬機器是斷開的。

    需要說明的是,前邊打鉤的代表是連在虛擬機器上的,沒打勾代表連在主機上。一個硬體或者連線在主機上,或者連線在虛擬機器上,只能掛載在一個作業系統下。當一個硬體需要連線到虛擬機器作業系統上,比如說U盤掛載到Ubuntu上,發生的動作時:先從主機上解除安裝,然後掛載到Ubutu上。

    從下邊的圖,也可以檢視虛擬機器當前擁有的硬體有哪些。色彩比較重的代表連線在虛擬機器上,相反則連線在主機上。

3、配置minicom

#minicom -s

     在終端下輸入minicom的配置命令,就可以開啟配置選單,選擇第三項串列埠配置(Serial port setup )

    這裡重要的是以下幾個選項:

A               設定使用哪個串列埠裝置(因為一臺電腦上的串列埠可能不止一個),注意這裡輸入的是ttyS0

E               設定波特率、資料位、奇偶校驗位、停止位,這裡依次是115200,8,N,1

F               這個選項的含義,在下不知,但是網上眾多人都說此項必須選成no,否則可能不能通訊

    對於方法一的A選項(設定使用哪個串列埠裝置),可以從/dev目錄中看我們用的是哪個裝置

    配置完成後,將其儲存成預設配置(Save setup as dfl),然後退出(Exit from Minicom),終端下輸入#minicom命令以開啟minicom軟體。

展示效果圖

方法2--以U轉串方式掛載到linux系統中

1、檢查是否支援這種方法

    首先看自己的Ubuntu 版本是否自帶了U轉串驅動,倘若沒有,這種方法對你的系統還不適用。執行命令#lsmod | grep usbserial,如果能打印出上邊的資訊,證明此版本的Ubuntu作業系統自帶有U轉串驅動(U轉

串晶片是PL2303)。

 

2、配置虛擬機器

    對於方法二,沒必要新增串列埠,如下所示的硬體構成(預設配置)已經夠了

    啟動虛擬機器,確保以下硬體連線方式,Prolific USB-Serial Controller是連線在虛擬上的。倘若你的虛擬機器上邊添加了一個串列埠,那麼確保這個串列埠不要啟動,即前邊沒有打鉤。

    對應的在虛擬機器的右下角,可以看到Prolific USB-Serial Controller圖示是高亮的,而Serial port(Using port COM1)是淺色的(倘若你的虛擬機器上新增有串列埠)。

3、配置minicom

    在終端上輸入#minicom -s命令,選擇Serial port setup,開啟如下配置介面。這裡的E、F選項與方法一一樣,需要注意的是:A選項輸入的是ttyUSB0。倘若不是這個配置,有可能不能成功通訊。

    以預設配置方式儲存,然後退出。輸入#minicom命令,啟動軟體。效果圖如下。

兩種方法對比--ttyUSB0對應的是什麼

    倘若拔掉U轉串,或者Prolific USB-Serial Controller與虛擬機器斷開連線,在Ubuntu的/dev目錄中是沒有ttyUSB0的。

    而且,輸入命令#lsusb也是看不到U轉串對應的資訊。

    倘若插上U轉串,並且確保Prolific USB-Serial Controller與虛擬機器斷是連線的,這個時候的效果與之前的相反。

結論

    ttyUSB0就是U轉串在Ubuntu作業系統下對應的裝置檔案。事實上,方法一把U轉串當做是一個實實在在的串列埠(COM1)掛載在Ubuntu上,在/dev目錄下是找不到ttyUSB0,與之對應的裝置檔案是ttyS0。

    而且,我猜測方法一是不需要Ubuntu的串列埠驅動的。以虛擬機器上Ubuntu的眼光看,U轉串是一個實實在在的串列埠,而非一個虛擬的串列埠。

其他

    短接串列埠的2腳和3腳,可以測試串列埠是否正常工作。正常工作的效果是鍵盤上輸入什麼,串列埠除錯助手顯示什麼。 

 串列埠介面定義

1   DCD   Carrier Detect 2   RXD   Receive Data 3   TXD   Transmit Data 4   DTR   Data Terminal Ready 5   GND   System Ground 6   DSR   Data Set Ready 7   RTS   Request to Send 8   CTS   Clear to Send 9   RI    Ring Indicator