<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用VB實(shí)現(xiàn)PC機(jī)與多單片機(jī)遠(yuǎn)程無(wú)線通訊

          利用VB實(shí)現(xiàn)PC機(jī)與多單片機(jī)遠(yuǎn)程無(wú)線通訊

          作者: 時(shí)間:2012-03-12 來(lái)源:網(wǎng)絡(luò) 收藏

          利用VB實(shí)現(xiàn)PC機(jī)與多單片機(jī)遠(yuǎn)程無(wú)線通訊

          圖3 中斷子程序流程圖


          3.3 上位機(jī)PC程序設(shè)計(jì)方法及實(shí)現(xiàn)
          上位機(jī)利用VB6.0編程,用VB6.0開(kāi)發(fā)串行通信程序普遍采用以下兩種方法:一種是利用Windows的API函數(shù);另一種是采用VB6.0的通訊控件MSComm。利用API函數(shù)編寫(xiě)串行通信程序較為復(fù)雜,需要調(diào)用許多繁瑣的API函數(shù),而VB6.0的MSComm通訊控件提供了標(biāo)準(zhǔn)的事件處理函數(shù)、事件和方法,用戶不必了解通信過(guò)程中的底層操作和API函數(shù),從而比較容易、高效地實(shí)現(xiàn)了串口通信。
          MSComm控件提供了兩種功能完善的串口數(shù)據(jù)發(fā)送和接收功能:一種是查詢法,通過(guò)檢查CommEvent屬性的值來(lái)輪詢(Polling)事件和通信狀態(tài),可以使用定時(shí)器或DO…Loop程序?qū)崿F(xiàn);另一種是事件驅(qū)動(dòng)法(Event-driven),利用MSComm控件的OnComm事件捕獲串口通信錯(cuò)誤或事件,并在OnComm事件中編寫(xiě)程序進(jìn)行相應(yīng)處理,這種方法響應(yīng)及時(shí),可靠性高,本軟件系統(tǒng)采用了此方法來(lái)接收遠(yuǎn)端的回執(zhí)信息,以使PC機(jī)作出更快的反應(yīng)。
          基于透明傳輸,不改變系統(tǒng)原來(lái)的通訊程序及傳輸格式,編程時(shí)只需適當(dāng)考慮無(wú)線傳輸引起的信號(hào)時(shí)延。
          軟件采用定時(shí)器Timer1控件來(lái)實(shí)現(xiàn)在數(shù)據(jù)信息送出30秒后(Timer1.Interval = 30000),PC機(jī)仍未收到任何回執(zhí)信息時(shí),程序自動(dòng)跳出系統(tǒng)。
          實(shí)現(xiàn)同樣的功能,程序代碼會(huì)因不同人的編寫(xiě)而略有不同,并且篇幅所限,在此僅給出在VB中對(duì)MSComm控件初始化和數(shù)據(jù)發(fā)送與接收的部分源程序,代碼如下:

          ……
          初始化MSComm控件程序:
          With Comm1 ‘控件名為Comm1
          .CommPort=1 ‘使用串行端口1
          .Settings=“9600,n,8,1” ‘設(shè)置初始化參數(shù)
          .InputLen=0 ‘讀取緩沖區(qū)的全部數(shù)據(jù)
          .InputMode=comInputModeBinary ‘以二進(jìn)制方式接收數(shù)據(jù)
          .RThreshold=3 ‘接收緩沖區(qū)達(dá)到3個(gè)字節(jié)時(shí)產(chǎn)生OnComm事件
          End with ‘其它屬性值為默認(rèn)即可
          ……
          發(fā)送數(shù)據(jù)程序:
          ……
          Dim Send As Variant ‘定義變量
          Dim OutByteD(5) As Byte ‘定義發(fā)送數(shù)據(jù)數(shù)組
          …… ‘獲取發(fā)送數(shù)據(jù)
          Send=OutByteD ‘將發(fā)送的數(shù)據(jù)賦給發(fā)送變量
          Comml.Ouput=Send ‘發(fā)送數(shù)據(jù)
          ……
          數(shù)據(jù)接收程序:
          Private Sub Comm1_OnComm()
          Select Case Comm1.CommEvent
          Case comEvReceive
          Dim Jshuju() As Byte , i%, count%
          Dim Rec As Variant
          Rec=Comm1.Input
          count=UBound(Rec)
          ReDim Jshuju(count-1) As Byte
          For i=0 to count-1
          Jshuju(i)=Rec(i)
          Next i
          …… ‘判斷回執(zhí)信息并進(jìn)行相應(yīng)處理,如處理指定遠(yuǎn)端單元數(shù)據(jù)接收完畢、數(shù)據(jù)接收有誤請(qǐng)求重發(fā)信息、顯示、打印自檢信息等
          End Select
          End Sub

          4 結(jié)論

          通過(guò)采用上述通訊方法實(shí)現(xiàn)了基于的控制中心上位機(jī)對(duì)各遠(yuǎn)端系統(tǒng)的遠(yuǎn)程實(shí)時(shí)控制,實(shí)現(xiàn)了高速、實(shí)時(shí)數(shù)據(jù)的發(fā)送和接收。經(jīng)過(guò)實(shí)際應(yīng)用,系統(tǒng)工作穩(wěn)定可靠,滿足了預(yù)期的控制要求??梢灶A(yù)見(jiàn),以其使用靈活簡(jiǎn)便、全數(shù)字化無(wú)線通訊及環(huán)境適應(yīng)能力強(qiáng)等優(yōu)點(diǎn)必將在信息采集、遠(yuǎn)程監(jiān)控等領(lǐng)域得到更加廣泛的應(yīng)用。

          參考文獻(xiàn):
          [1]范逸之,陳立元.Visual Basic與RS-232串行通信控制最新版.北京:中國(guó)青年出版社,2002

          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理


          晶振相關(guān)文章:晶振原理

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();