• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

    圖3 中斷子程序流程圖


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

    通過采用上述通訊方法實(shí)現(xiàn)了基于的控制中心上位機(jī)對(duì)各遠(yuǎn)端系統(tǒng)的遠(yuǎn)程實(shí)時(shí)控制,實(shí)現(xiàn)了高速、實(shí)時(shí)數(shù)據(jù)的發(fā)送和接收。經(jīng)過實(shí)際應(yīng)用,系統(tǒng)工作穩(wěn)定可靠,滿足了預(yù)期的控制要求。可以預(yù)見,以其使用靈活簡便、全數(shù)字化無線通訊及環(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串行通信控制最新版.北京:中國青年出版社,2002

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


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


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

    上一頁 1 2 下一頁

    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 娱乐| 杭锦旗| 盱眙县| 红桥区| 四子王旗| 龙海市| 城市| 清水河县| 桐梓县| 贵德县| 惠安县| 五寨县| 平陆县| 阿坝县| 长岛县| 财经| 贺州市| 茶陵县| 六安市| 新闻| 林州市| 万盛区| 中西区| 梅州市| 夏河县| 常州市| 沭阳县| 宣城市| 林口县| 库尔勒市| 荣成市| 盘山县| 塔城市| 吉木乃县| 洪江市| 抚松县| 迁安市| 淳安县| 达州市| 兴义市| 普兰县|