欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3984|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

VB調(diào)入計(jì)算機(jī)存在的串口

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51773 發(fā)表于 2013-7-13 00:21 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在單片機(jī)串口通信開(kāi)發(fā)中,使用上位機(jī)的人機(jī)交互界面豐富了用戶(hù)體驗(yàn),也能相應(yīng)的擴(kuò)展功能,彌補(bǔ)單片機(jī)單一的任務(wù)處理能力。使用單片機(jī)串口通信,接口簡(jiǎn)單,易于上位機(jī)編程的實(shí)現(xiàn)。如果在VisualBasic編寫(xiě)串口通信程序中,實(shí)現(xiàn)自動(dòng)調(diào)入計(jì)算機(jī)存在的串口的功能,能大大方便了用戶(hù)輕松的連接到想要的串口,這將是一個(gè)更好的用戶(hù)體驗(yàn)。目的是使得用戶(hù)不用大費(fèi)周章去尋找串口號(hào)。實(shí)現(xiàn)這一功能并不難實(shí)現(xiàn),下面阿浩介紹這一種方法。


VB與串口VisualBasic可以打開(kāi)16個(gè)串口,但是通常計(jì)算機(jī)只配置一個(gè)或者兩個(gè)串口,或者根本就沒(méi)有串口,這時(shí)就需要我們使用串口轉(zhuǎn)USB來(lái)支持。而且有時(shí)計(jì)算機(jī)的串口還可能被其他程序使用,因此,為了增強(qiáng)軟件使用的魯棒性,必須增加一段代碼,用語(yǔ)龐端本計(jì)算機(jī)可以利用的有效串口數(shù),如果串口在使用,也應(yīng)加入可使用的行列來(lái),只是在使用過(guò)程中要考慮其是否已經(jīng)被其他程序打開(kāi),為了用戶(hù)提示相應(yīng)的信息。
關(guān)于VB編寫(xiě)串口通信程序詳見(jiàn) 《PC機(jī)與單片機(jī)串行通信的實(shí)現(xiàn)》、《VB平臺(tái)下串口通信的實(shí)現(xiàn)》

程序調(diào)入串口的方法調(diào)入計(jì)算機(jī)可用的串口,簡(jiǎn)單的方法是嘗試去打開(kāi)那個(gè)串口。簡(jiǎn)單來(lái)說(shuō),我們只需要對(duì)16個(gè)串口號(hào)進(jìn)行逐個(gè)掃描。掃描的方法是:嘗試打開(kāi)該串口,串口可以打開(kāi),則加入列表中去,供用戶(hù)連接;否則計(jì)算機(jī)不存在那個(gè)串口或者被其他程序占用時(shí),VB將產(chǎn)生一個(gè)錯(cuò)誤。

調(diào)入串口時(shí)錯(cuò)誤的處理在調(diào)入串口的過(guò)程中,會(huì)產(chǎn)生一些錯(cuò)誤。這時(shí)我們必須捕獲錯(cuò)誤并解決掉,否則程序無(wú)法往下執(zhí)行。如果串口存在并被其他程序占用,如已處于打開(kāi)狀態(tài),也會(huì)發(fā)生錯(cuò)誤。我們需要編寫(xiě)一段錯(cuò)誤處理函數(shù),當(dāng)發(fā)生錯(cuò)誤的時(shí)候,進(jìn)入錯(cuò)誤處理函數(shù)。

程序代碼:
'--------------------------------------------------------------------------'                            調(diào)入計(jì)算機(jī)存在的串口'版本:V1.0.2'程序設(shè)計(jì):JH單片機(jī)'--------------------------------------------------------------------------Private Sub CommLoad()   On Error GoTo ErrLine   '如果錯(cuò)誤,進(jìn)入錯(cuò)誤處理程序   Dim I As Integer        '定義可訪問(wèn)的串口數(shù)   Dim Counter As Integer  '用于記錄經(jīng)檢查可以使用的串口號(hào)   Counter = 0             '計(jì)數(shù)器清零   For I = 1 To 16         '循檢可能存在的16個(gè)串口     MSComm.CommPort = I   '將每個(gè)串口依次打開(kāi)     MSComm.PortOpen = True                           '打開(kāi)串口     If MSComm.PortOpen = True Then                   '如果打開(kāi)成功,說(shuō)明該串口可用       MSComm.PortOpen = False                        '檢查完畢,關(guān)閉串口       CboSerialPort.AddItem "COM" + CStr(I), Counter   '將可用串口增加到組合框內(nèi)       Counter = Counter + 1                            '記數(shù)器加1     End If   Next I   CboSerialPort.ListIndex = 0          '將第一個(gè)可用串口設(shè)為默認(rèn)值  Exit Sub        '跳出程序ErrLine:   If Err.Number = 8005 Then            '如果在處理過(guò)程中有串口被其它程序打開(kāi),則應(yīng)將其加入組合框內(nèi)      CboSerialPort.AddItem "COM" + CStr(I), Count  '將可用串口增加到組合框內(nèi)      Counter = Counter + 1  '計(jì)數(shù)器加1   End If   Resume Next      '回到出錯(cuò)入口處,繼續(xù)執(zhí)行循檢串口程序!End Sub代碼簡(jiǎn)述上述代碼利用Err函數(shù)進(jìn)行串口檢查,首先對(duì)可能存在的16個(gè)串口進(jìn)行掃描,逐個(gè)打開(kāi),如果串口能打開(kāi),說(shuō)明其存在并且是空閑的,然后關(guān)閉該串口,將其加入端口號(hào)組合框內(nèi),并且計(jì)數(shù)器Counter加1,進(jìn)行下一個(gè)端口掃描。反之端口不能打開(kāi),則會(huì)出現(xiàn)錯(cuò)誤,轉(zhuǎn)入錯(cuò)誤處理函數(shù)進(jìn)行處理。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表