一 前言: 我因為工作的需要,經常需要開發在不同OS的外設通信程序,有一段時間在寫unix下的串行通信程序時,發現unix/Linux的串口結合了很多終端特性(比如在TTY模式下會自動處理某些字符終端控制符),與windows的方式有很大的差異,也因此花了不少時間。我想現在很多人都在做linux下的開發,也會有人碰到和我一樣的問題,因此我編寫了sct(serial communication tracer)串行通信調試器,希望它能幫助其他人進行串口通信開發,同時這個軟件是以GPL方式發布的,我希望它的源代碼會對別人有一定的參考價值。
二 軟件下載地址: http://www.makeidea.net/freesoft.Html#sct
三 軟件說明: sct(Serial Communication Tracer的縮寫)是一個很有用的Linux/Unix串行通信調試工具,軟件內置了Shell命令解釋器,你可以通過直接輸入簡短的命令和參數來控制串口的打開/關閉和進行各種發送/接收活動,以下是sct 1.04版的簡短的例子,雙引號之間的內容為輸入的命令 ??"?" 顯示所有命令列表 ??"sel /dev/ttyS0" 選擇/dev/ttyS0為當前端口 ??"stat" 顯示當前端口的設備名稱,通信參數設置,打開/關閉狀態 ??"open" 打開當前端口 ??"close" 關閉當前端口 ??"term" 進入terminal模式,模擬一台ASCII終端 ??"setbuf 1 a" 用ASCII符設置第一緩沖區的數據,共有10個緩沖區可用 ??"setbuf 1 h" 用16進制數設置第一緩沖區的數據,共有10個緩沖區可用 ??"dispbuf 1" 用Hex碼和ASCII碼顯示第一緩沖區的內容 ??"send 1" 將第1緩沖區的內容從當前端口發送出去 ??"recv 2" 從當前端口接收數據並存放到第2緩沖區 ??"sendrecv 1 2" 從當前端口發送第1緩沖區的內容,然後立即接收數據並存放到第2緩沖區,用於對外設"命令-應答"模式調試 ??"sendrecv 1 1" 從當前端口發送第1緩沖區的內容,然後立即接收數據並覆蓋到第1緩沖區,用於對外設"命令-應答"模式調試 ??"savebuf log.dat 1" 將第1緩沖區的內容存放到數據文件log.dat ??"loadbuf 1 log.dat" 將數據文件log.dat的內容裝載到第1緩沖區 *對於windows下的用戶,只要安裝了cygwin的環境,也可以運行sct(需要在cygwin下重新編譯,不需要更改源代碼),另外在使用中不要忘記將當前端口用"sel"命令設為"com1"或"com2"等(缺省為/dev/ttyS0)
四 sct1.04版以後的開發計劃 sct中的對串口部分的代碼將被借鑒到我的另一個GPL軟件包vsio中,vsio是虛擬流式IO的縮寫,vsio以流的方式操作常見的PC外設,比串口/並口/USB等。屆時sct將直接利用vsio操作io端口,不僅能調試串口,還能調試並口/USB等,sct將成為真正意義上的"串行通信調試器",而不是"串口調試器"。