在各種單片機應用系統的設計中,常常遇到單片機與PC的通訊問題,在速度要求不高、傳送距離不遠的場合一般採用RS 232標準串列介面實現,在傳送距離較遠的場合,也有學者研究通過網路實現PC間的通訊。但是,要同時滿足高速度和遠距離PC與單片機通訊這是一個迫切需 要解決的問題。隨著資訊技術的發展,電腦和網路越來越普及,對單片機的遠端控制與測量的要求也越來越多。本文在結合現有研究的基礎上,對相關的設計進行 一定的改進和創新,設計一個遠程通訊系統,他由3部分構成:遠端PC、本地端PC和單片機系統。通過VB可視化編程,遠端PC利用區域網路向本地端PC發出 命令,本地端PC接到命令後,自動與單片機通過印表機介面以EPP1.9協議進行通訊(串列介面作為備用通訊口),並將接到的單片機資料即時傳送給遠端 PC,以實現高速遠程情況下PC與單片機通訊的要求。
1 系統結構與設計
系統構成如圖1所示,遠端PC通過區域網路和本地PC通訊,在通訊中使用Winsock控制項和TCP/1P協議;本地端PC通過並行通訊介面或串 行通訊介面與單片機通訊,在並口通訊中使用WINIO並口通訊驅動程式、EPP協議和LPT印表機介面,在串口通訊中使用MsComm控制項、RS 232C協議和COM口。在此結構中,本地PC端起到中繼的作用,當本地端PC接收到從遠端PC傳送過來的命令,在選擇通訊方式後,與單片機通訊,使單片 機向遠端PC傳送資料。
2 遠端PC與本地端PC通訊設計
TCP/IP是目前在網路通訊中廣泛採用的一組完整的網路通訊協定,該協議的核心是TCP,IP和UDP協議。TCP/IP網路環境下應用程式通過 網路系統編程介面通訊端(Socket)實現與核心的互動。利用Socket通訊編程介面編寫程式,其目的是在TCP/IP所組建網路的不同機器之間利用 客戶/伺服器模式建立通訊串連,開發人員只要提供一些基本的串連資訊,其餘由作業系統核心完成。WinSock(Windows Socket)是Windows作業系統下的通用的TCP/IP應用程式的網路編程介面,通過調用WinSock的介面函數來調用TCP/IP的各種功 能。在VB 6.0中,WinSock控制項對Windows Sockets API進行封裝,使用程式員可以不必瞭解TCP/IP或調用底層WinSock API的具體細節,只要設定好相應屬性,在觸發的事件程序中作好相應處理,就能編寫出網路應用程式。
遠端PC與本地端PC通訊通過VB 6.0調用WinSock控制項實現,圖2(a),(b)分別為其控制介面。需說明以下幾點:遠端PC選擇好要串連的本地端PC的IP地址和網路傳送連接埠 後,再發起聯機申請;本地端PC網路傳送連接埠必須和遠端PC傳送連接埠一致,序列埠選擇是COM1/COM2,並行連接埠輸入並口地址(378H);遠端 PC在命令輸入區輸入命令後,發送命令按鈕才有效;回傳資料區存放單片機傳送回來的即時資料並可儲存成文字檔,資訊區存放網路工作狀態、遠端PC的命 令,及單片機資料傳送情況。其工作過程如圖2(c)所示。
3 本地端PC與單片機通訊設計
3.1 本地端PC與單片機並口通訊設計
3.1.1 並行通訊介面及協議
在速率要求較高的場合,可以利用PC機上的印表機介面(CENTRONICS標準,DB-25芯針座,TTL電平)實現。並口通訊有SPP、EPP和ECP三種工作模式。本文採用EPP協議。
(1)EPP協議
增強型並行介面協議EPP(Enhanced Parallel Port),為PC和外設之間定義了並行雙向通訊的標準,該協議通過硬體自動握手,能達到500 kB/S~2 MB/s的通訊速率,適合大量資料轉送的外設進行告訴通訊。EPP分為EPP1.7和EPP1.9,二者之間的區別是:EPP1.9需要判斷逾時(避免出 現“死迴圈”)以及nwait訊號是否有效,而EPP1.7不需要判斷,傳輸速度更快。EPP協議支援4種操作,包括資料寫出、地址寫出、資料讀取和地址 讀取。
(2) EPP協議的寄存器地址及一些主要的引腳定義,如表1,表2所示。