在單片機串口通信開發中,使用上位機的人機交互界面豐富了用戶體驗,也能相應的擴展功能,彌補單片機單一的任務處理能力。使用單片機串口通信,接口簡單,易于上位機編程的實現。如果在VisualBasic編寫串口通信程序中,實現自動調入計算機存在的串口的功能,能大大方便了用戶輕松的連接到想要的串口,這將是一個更好的用戶體驗。目的是使得用戶不用大費周章去尋找串口號。實現這一功能并不難實現,下面阿浩介紹這一種方法。
VB與串口VisualBasic可以打開16個串口,但是通常計算機只配置一個或者兩個串口,或者根本就沒有串口,這時就需要我們使用串口轉USB來支持。而且有時計算機的串口還可能被其他程序使用,因此,為了增強軟件使用的魯棒性,必須增加一段代碼,用語龐端本計算機可以利用的有效串口數,如果串口在使用,也應加入可使用的行列來,只是在使用過程中要考慮其是否已經被其他程序打開,為了用戶提示相應的信息。
關于VB編寫串口通信程序詳見 《PC機與單片機串行通信的實現》、《VB平臺下串口通信的實現》
程序調入串口的方法調入計算機可用的串口,簡單的方法是嘗試去打開那個串口。簡單來說,我們只需要對16個串口號進行逐個掃描。掃描的方法是:嘗試打開該串口,串口可以打開,則加入列表中去,供用戶連接;否則計算機不存在那個串口或者被其他程序占用時,VB將產生一個錯誤。
調入串口時錯誤的處理在調入串口的過程中,會產生一些錯誤。這時我們必須捕獲錯誤并解決掉,否則程序無法往下執行。如果串口存在并被其他程序占用,如已處于打開狀態,也會發生錯誤。我們需要編寫一段錯誤處理函數,當發生錯誤的時候,進入錯誤處理函數。
程序代碼:
'--------------------------------------------------------------------------' 調入計算機存在的串口'版本:V1.0.2'程序設計:JH單片機'--------------------------------------------------------------------------Private Sub CommLoad() On Error GoTo ErrLine '如果錯誤,進入錯誤處理程序 Dim I As Integer '定義可訪問的串口數 Dim Counter As Integer '用于記錄經檢查可以使用的串口號 Counter = 0 '計數器清零 For I = 1 To 16 '循檢可能存在的16個串口 MSComm.CommPort = I '將每個串口依次打開 MSComm.PortOpen = True '打開串口 If MSComm.PortOpen = True Then '如果打開成功,說明該串口可用 MSComm.PortOpen = False '檢查完畢,關閉串口 CboSerialPort.AddItem "COM" + CStr(I), Counter '將可用串口增加到組合框內 Counter = Counter + 1 '記數器加1 End If Next I CboSerialPort.ListIndex = 0 '將第一個可用串口設為默認值 Exit Sub '跳出程序ErrLine: If Err.Number = 8005 Then '如果在處理過程中有串口被其它程序打開,則應將其加入組合框內 CboSerialPort.AddItem "COM" + CStr(I), Count '將可用串口增加到組合框內 Counter = Counter + 1 '計數器加1 End If Resume Next '回到出錯入口處,繼續執行循檢串口程序!End Sub代碼簡述上述代碼利用Err函數進行串口檢查,首先對可能存在的16個串口進行掃描,逐個打開,如果串口能打開,說明其存在并且是空閑的,然后關閉該串口,將其加入端口號組合框內,并且計數器Counter加1,進行下一個端口掃描。反之端口不能打開,則會出現錯誤,轉入錯誤處理函數進行處理。
|