- 相關(guān)推薦
用Visual Basic 5.0開發(fā)無線通訊數(shù)據(jù)采集應(yīng)用程序
用Visual Basic 5.0開發(fā)無線通訊數(shù)據(jù)采集應(yīng)用程序
杜懷勤(山東勝利油田技術(shù)檢測中心 257000)
dhqjczx@mail.slof.com
摘要:本文通過對無線通訊系統(tǒng)基本工作原理的分析,闡明了采用Visual Basic 5.0中的控件MSCOMM.VBX進行無線數(shù)據(jù)采集程序開發(fā)的基本方法。并結(jié)合900M頻率無線通訊電臺的特點,給出了基本通訊接口源程序代碼。
關(guān)鍵詞: VB5 無線通訊 控件
1 引言
目前對于用于數(shù)據(jù)采集和傳輸?shù)臒o線設(shè)備之間的通訊編程,一般仍采用C語言和匯編語言較多,這主要是由于在編程時,要涉及到對無線通訊設(shè)備硬件的控制,因此,選擇C語言和匯編語言的較多。采用以上兩種語言進行編程,對于一般的編程人員來講,很難較快的掌握。本文采用可視化的編程環(huán)境從根本上解決了以上問題,只要有一定編程基礎(chǔ)的技術(shù)人員,均可實現(xiàn)自己編程。
2 無線通訊設(shè)備的基本工作原理
在無線的通訊方式中,數(shù)據(jù)傳輸?shù)幕驹砜梢哉J為是通過調(diào)制解調(diào)器進行工作的,而這種調(diào)制解調(diào)器是無線方式工作的,它不含有撥號功能,而且和它直接連接的是無線電臺。無線電臺的作用就相當于有線傳輸中的電話線,它是通過無線電波進行發(fā)送和接受信號的。而無線調(diào)制解調(diào)器的作用是將二進制的信號調(diào)制成可以在無線電臺之間傳輸?shù)臒o線電波。
信號轉(zhuǎn)換過程的屬性取決于調(diào)制解調(diào)器所接收到的源信號和目的信號。一般來說,調(diào)制解調(diào)器從終端或計算機接以串行方式收到二進制信號后,將它們轉(zhuǎn)換成了音頻信號。然后調(diào)制解調(diào)器將這些聲音通過無線電臺傳輸出去。在接受端,另一個兼容的調(diào)制解調(diào)器將這些聲音信號轉(zhuǎn)換成了二進制信號,并把這些二進制信號發(fā)送給終端或計算機。
由于在無線電臺之間有過濾和放大作用,同時,無線電波的傳輸受很多因素影響,因此傳送的速度受到限制。下面給出了一種900M電臺的技術(shù)特性見表 1。本程序就是使用的這種電臺,對于其它參數(shù)的電臺,其基本原理也是一樣的。
表 1 900M無線電臺的技術(shù)指標
項目
指標
含義
傳輸速率
1.2Kbps或2.4Kbps
每秒的字節(jié)數(shù)
數(shù)據(jù)的控制
透明傳輸
發(fā)射功率
3W
接受靈敏度
-105dBm
工作頻率
915—917MHZ
信道
158個
3 無線數(shù)據(jù)采集的編程
由無線通訊的基本原理可以看出,無線的數(shù)據(jù)采集和傳輸主要包括以下幾個過程,從帶處理器的傳感器或計算機終端發(fā)送二進制信號到無線調(diào)制解調(diào)器;無線電臺之間建立連接并傳輸數(shù)據(jù);從另外一端的電臺接受二進制數(shù)據(jù);將數(shù)據(jù)傳輸?shù)接嬎銠C。因此,要建立無線設(shè)備之間的通訊必須在兩端進行編程。
從計算機終端到無線電臺的數(shù)據(jù)傳輸是通過計算機的串行口進行的,通過對串行口進行編程就可以實現(xiàn)向電臺發(fā)送數(shù)據(jù)。在Visual Basic5.0中的控件MSCOMM是進行串口通訊的。通過設(shè)定控件MSCOMM的屬性,可以用VB5.0對其進行靈活的編程,控件MSCOMM同時支持事件驅(qū)動及輪詢方法?丶MSCOMM能生成一個名為OnComm的事件,它能能捕獲的事件范圍包括通過串口接受數(shù)據(jù)以及遇到任何錯誤等等。事件或錯誤的值以整數(shù)的形式保存在CommEvent屬性里?筛鶕(jù)CommEvent屬性判斷最近一次事件或錯誤。也可以在程序中設(shè)置一個循環(huán),每次循環(huán)都直接檢查CommEvent屬性的值,從而對事件及錯誤進行“輪詢”。如果應(yīng)用程序規(guī)模小,這種方法相當完美。
下面的部分程序代碼是計算機和900M無線電臺之間的傳輸程序,本程序已經(jīng)在486計算機和PII586上調(diào)試通過。
1 從串口讀入電臺數(shù)據(jù)程序GetStringFromComm()
功能:(1) 主要完成從端口獲得數(shù)據(jù),將二進制的數(shù)據(jù)轉(zhuǎn)換為ASCII碼數(shù)據(jù)
Public Function GetStringFromComm() As String
定義變量(略)
If frmTerminal.MSComm1.InBufferCount < 7 Then
GetStringFromComm = ""
Exit Function
End If
'//讀入標志碼
frmTerminal.MSComm1.InputLen = 6
ReDim Preserve BinDataarr(6) As Byte
BinData = frmTerminal.MSComm1.Input
BinDataarr = BinData
UserDataLenth = BinDataarr(5) '用戶數(shù)據(jù)的長度
Wait1:
If BinDataarr(5) > frmTerminal.MSComm1.InBufferCount Then '未接受完數(shù)據(jù)
delay 6 '延時6s
GoTo Wait1
End If
frmTerminal.MSComm1.InputLen = UserDataLenth
BinData = frmTerminal.MSComm1.Input
ReDim Preserve BinDataarr(UserDataLenth)
BinDataarr = BinData
GetStringFromComm = BinTotext(UserDataLenth, 0)
frmTerminal.MSComm1.InBufferCount = 0 '清空接受緩沖區(qū)
End Function
2 從串口向電臺發(fā)送數(shù)據(jù)程序SendStringToComm()
Public Sub SendStringToComm(ByVal TransCommand As Integer, ByVal TransString As String)
ReDim BinDataarr(5)
frmTerminal.MSComm1.OutBufferCount = 0 '//清空發(fā)送緩沖區(qū)
'TransString = makestring(Val(mc.txtdesstation.Text), 4) + TransString
'//設(shè)置標志碼
(略)
Select Case TransCommand
Case 0:transmit text
ReDim Preserve BinDataarr(6 + Len(TransString))
TextTobin (TransString)
BinData = BinDataarr
frmTerminal.MSComm1.Output = BinData '發(fā)送
Case 1:transmit binary data
ReDim Preserve BinDataArr(5 + Len(TransString) + UserDataLenth) As Byte
TextTobin (TransString)
BinDataArr(5) = UserDataLenth + Len(TransString)
Dim i As Integer
For i = 1 To UserDataLenth
BinDataArr(5 + Len(TransString) + i) = userDataarr(i - 1)
Next i
BinData = BinDataArr
MSComm1.Output = BinData
End Select
binDatalenth = 0
End Sub
以上的兩個子程序是在實現(xiàn)無線傳輸?shù)幕境绦,如果要實現(xiàn)無線設(shè)備兩端的數(shù)據(jù)采集,需要在此基礎(chǔ)上進行文件格式、控制命令、編碼方式等的編程,這些編程均可通過Visual Basic5.0實現(xiàn),由于篇幅所限,本文對這部分內(nèi)容不作詳細敘述。
4結(jié)論和討論
通過以上的實例編程可以得出,采用Visual Basic5.0對無線數(shù)據(jù)采集和傳輸進行編程,具有可視化、容易掌握、靈活性好,尤其串口控件MSCOMM的屬性功能齊全,完全可以控制串行口實現(xiàn)各種功能。通過Visual Basic5.0編寫的程序具有界面友好,操作方便,且編程過程簡單。本文僅在數(shù)據(jù)采集方面應(yīng)用了Visual Basic5.0,在其他的通訊方面,它還有更大的應(yīng)用。例如在終端防真程序,在電子郵件和互連網(wǎng)等方面也有較大的應(yīng)用。
參考文獻:
1、微軟公司《Visual basic5.0 聯(lián)機手冊》
【用Visual Basic 5.0開發(fā)無線通訊數(shù)據(jù)采集應(yīng)用程序】相關(guān)文章:
基于Visual Basic快速開發(fā)現(xiàn)場電視監(jiān)控系統(tǒng)04-12
Visual Basic6.0下數(shù)據(jù)庫報表制作技巧04-16
如何利用Visual Basic開發(fā)身份證號碼批量驗證工具軟件04-29
利用Delphi 3.0開發(fā)微機數(shù)據(jù)采集與處理軟件系統(tǒng)04-12
《Visual FoxPro6.0數(shù)據(jù)庫教程》課程改革及評價方案05-23
基于Verilog HDL設(shè)計的自動數(shù)據(jù)采集系統(tǒng)04-12
基于USB和多線程的實時數(shù)據(jù)采集系統(tǒng)08-09
基于Small RTOS51的數(shù)據(jù)采集器設(shè)計04-12
數(shù)據(jù)開發(fā)年終總結(jié)07-05
用Excel開發(fā)MIS的方法08-16