在我們Lab的WSN TestBed系統中,每顆node其實都用有線網路接回主機,但是node的I/O介面並不是RJ-45的接頭(Octopus I與Octopus II分別是rs232及USB),那麼要怎麼走Ethernet呢,答案就是用Convertor,像是這個 UT-620,就是將RS232轉成Ethernet的東西,由於其Driver都只有給windows的,那我在 ubuntu 上要怎麼用呢?
這個Convertor有個web的管理介面,看了一下裡面有一些設定TCP/IP的選項(設定ip及port,還月TCP或UDP),心裡高興了一下,難道這麼簡單嗎,於是馬上寫了個簡單的socket程式與它溝通,結果真的是這樣,OK,那麼我就只要在Linux裡弄個虛擬的tty device不就得了?接著開始研讀手邊的 Linux Device Driver 3/e ,發現寫 Driver 還蠻不容易的,很多C/C++的Library都不能用,連socket都不行,要用KSocket(在Kernel中用的),這根本是太噁心了,誰會想為了這一個小功能去學Kernel Socket,因此我停了許久,後來終於在ptt LinuxDev版認識了 mkfifo (Linux裡的工具)。
mkfifo是用來做為兩個process溝通的橋樑,屬於IPC的東西,作法就是用mkfifo建立一個虛擬的pipeline file, A process 將資料寫到這個pileline,另一個B process也可以從這個pipeline讀出東西,這豈不是我要的功能嗎?
mkfifo 用法很簡單, mkfifo --mode=MODE <pipeline name>,就可以了
希望USB也是如此....
沒有留言:
張貼留言