robot
最新文章(10)
Mqskit 和其它相關工具
CPython 的 GC 二、三事
寫 Mecurial Extension 是件快樂的事!
Mozilla 台灣辨公室徵人啟事
關於 Apple 的兩項專利
core dump 之前的 frame
怎麼發出 beep 聲?
先承認你要找的是奴才吧!
程式碼要清的多乾淨?
FreeBSD 的 Thread-Local Storage 實作
首頁
新編
最新留言
Entries RSS
重要關鍵字(10)
coding (122)
Python (93)
FreeBSD (71)
WEB (61)
URL (48)
hardware (46)
javascript (36)
Linux (34)
blog (30)
C++ (16)
所有關鍵字
新增 URL
Shell and serial port in FreeBSD
by thinker
2 Columns
關鍵字:
FreeBSD
最近常使用 serial port 傳送資料,並進行系統測試、除錯。過程中,免不了持續的 try-and-error ,重複動作不停的在 localhost 和 serial port 間切換。為了改善工作效率,敝人透過 $shell$ script 進行不斷重複的動作。 使用 $shell$ script 最大的問題,在於設定 serial port 並進行互動。經過幾番測試之後,終於歸納出幾個原則和程序: # 使用 stty 設定 serial port # serial port 的設定,在最後一個 process close fd 之後就消失。 # 透過 $shell$ script 的 group command 維持 serial port 保持為 open 。 總而言之,$shell$ script 必需維持 serial port 於開啟的狀態,以保持 serial port 的設定。否則, serial port 在關閉之後會遺失之前所有的設定,致使我們必需重新再開啟 serial port 並再一次設定。 舉例,如果測試內容必需不斷的 compile 一支程式,並將之傳送到 serial port 所連接的 device 上執行。那麼我們可以透過下面的 command ,進行。 {{{ ( \ stty -f /dev/cuad0 speed 9600 cs8 -parenb -cstopb -crtscts > /dev/null 2>&1; \ echo "rx foo"; \ sx foo; \ echo "foo; echo; echo 'done'"; \ while true; do read v; if [ $$v = "done" ]; then break; fi; echo "$$v" >&3; done; \ ) 3>&1 > /dev/cuad0 < /dev/cuad0 }}} 前後的括號,是將中間的指令變成一個 group 。這裡將 group 的輸出和輸入全都導向至 /dev/cuad0 ;我們的 serial port ,使 group 內的指令在執行時, serial port 能維持在開啟的狀態。 # group 的第一行指令,就是透過 stty 將 /dev/cuad0 設定為 9600 bps 8N1 ,並關掉 flow control 。 # 接著透過送 rx foo 指令至 serial port ,使 device 執行 rx 以接收檔案 foo 。 # 然後在 localhost 執行 sx foo 指令,以傳送檔案。 * localhost 傳送, device 接收。 # 傳送完檔案之後,使 device 執行該程式,並於程式結束後,使 device 送出 "done" 字串。 # 接著 localhost 持續讀取 serial port 送來的字串,於收到 "done" 字串後結束。 將這樣的 script 寫在 makefile 裡,就能自動完成 compile 、傳送、測試的固定流程,大大縮短測試的時間。
最後更新時間: 2007-08-25 05:36:46 CST |
引用
查詢:
COMMENTS:
on 2007-08-26 00:42:53 CST
yungyuc
said ..
難怪你昨天要說用 shell script 搞 telephony XD