此文適用於Ubuntu虛擬機實現串口通訊,能夠在虛擬機上運行程序,直接將windows下的串口映射到虛擬機上便可。在網上找了半天,沒有找到合適的教程,並且網上的版本比較老。加之本身摸索,現將過程整理以下,便於往後複習與其餘人使用。linux
首先個人VirtualBox的版本爲5.2.16,目前已經支持了四個串口了(網上的好多教程還只支持兩個)。言歸正傳:編程
一、關閉虛擬機,打開VirtualBox的設置菜單,找到串口選項,以下圖所示:windows
二、目前只支持四個串口,確定夠通常程序使用了。選中啓用串口選項,這樣就能夠配置串口信息了,下面將個選項詳細說明下:spa
串口編號:須要映射的串口號(此爲Windows下串口設備鏈接的串口號)3d
端口模式:這裏有五個選項,分別說明下:blog
未鏈接:建立串口,可是沒有創建物理鏈接教程
主機管道:把串口設置成主機上的一個管道pipeip
主機設備:串口對應主機上的設備,例如此處COM3,那麼對應到Ubuntu上爲/dev/ttyS2,這裏我使用的這種模式。這樣就能夠在虛擬機上訪問這個串口名實現串口通訊了。get
裸文件:將串口輸出,放到一個文件裏面去。具體設置,就很簡單,直接將文件路徑填上就能夠了;虛擬機
TCP:這個沒有細研究,應該是經過ip:port的形式訪問串口吧。
這裏主要選擇了主機設備,這樣就能夠在虛擬機上訪問對應的串口了。
啓動虛擬機,而後
能夠經過命令查看linux上串口狀態:
sudo setserial -g /dev/ttyS*(如果沒有setserial命令根據提示安裝就行)
這裏能夠看出串口設備的狀態,此時ttyS2對應的狀態以下:
其餘串口都爲unknown,即不可用,只有ttyS2爲可用串口,這樣咱們就能夠經過操做文件那樣open,read,write來操做這個串口了。須要調用tcgetattr,tcsetattr等設置串口的屬性,這裏不介紹串口使用。
最後:須要注意的是,這裏有可能由於權限問題open串口失敗,這裏要檢查下是否有相應的權限。直接sudo chmod 777 /dev/ttyS2修改下權限,或者sudo方式運行應用程序便可。