都不記得上次寫部落格什麼時候的事了。今天我們清明放假最後一天,閑的無事,看到案頭上的“串口工具”,便想共用給大家使用
前段時間要用串口,然後百度上下載串口工具,N年前下載了一個比較好用的,現在找不到了,而且魚目混珠的,各種串口工具,用都用不慣。最讓人鬱悶的是,一些串口工具都不帶檢測功能的,直接從com1到com7,不管在不在,你選擇了,再開啟,就報錯。真是鬱悶。想起之前我的一個系統上用串口,找些代碼做了個可以檢測的。就自己修改修改,做了個差不多的串口工具,給大家參考,也可直接使用,使用中如果有任何修改意見,敬請向我提出,我一定儘力修改。
首先是串口檢測了。視窗如下:
其中最重要的是串口檢測段的程式,如下:
Private Function jiance()'清空下拉框 Me.Combo1.Clear m = 0 On Error Resume Next '最多檢測30個串口,太多會變慢 For I = 1 To 30 Me.MSComm1.CommPort = I Me.MSComm1.PortOpen = True If Err.Number = 0 Then Me.Combo1.AddItem "串口" & I comn(m) = I m = m + 1 End If Me.MSComm1.PortOpen = False Err.Clear Next I Me.Combo1.ListIndex = 0 Command1.Enabled = True '若未檢測到串口,顯示資訊 If m = 0 Then Me.Combo1.Text = "未檢測到串口" Command1.Enabled = False End If '傳輸速率相關資訊,預設9600 Me.Combo2.AddItem "4800" Me.Combo2.AddItem "9600" Me.Combo2.AddItem "14400" Me.Combo2.AddItem "19200" Me.Combo2.AddItem "28800" Me.Combo2.AddItem "38400" Me.Combo2.AddItem "57600" Me.Combo2.AddItem "115200" Me.Combo2.ListIndex = 1End Function
這裡檢測了30個串口,可以更多點,但太多會影響軟體啟動的速度。
串口檢測完了,可以做串口通訊了。我做了字串及16進位的發送和接收。字串比較好辦,16進位就不太好處理了。
先看下介面
這個地方的代碼比較長,我就不貼出了。
需要注意幾點,16進位發送和接收,都是byte型的,需要和char型的轉換,特別是發送的時候,需要輸入兩個16進位數加空格的形式,這個地方的處理,可以看下程式裡面的uart_send函數,處理起來麻煩些。然後是16進位的接收和顯示了,需要轉換,可以參見:bytetodisp函數。這兩個是比較麻煩的地方。
代碼不知道怎麼上傳,麻煩給我發郵件,我定回複全部代碼及程式。