基于VB6.0的無線數(shù)據(jù)通信上位機設(shè)計與實現(xiàn)
引 言
上位機又稱 PC 機或Host Computer,是可以發(fā)送控制命令的主機或計算機。下位機是指具有數(shù)據(jù)采集、數(shù)據(jù)存儲、傳輸控制等功能,可以直接獲取硬件設(shè)備運行狀態(tài)數(shù)據(jù)的主機,一般由PLC 和單片機組成。上位機與下位機之間是從屬關(guān)系,上位機是控制者,利用軟件程序發(fā)送相關(guān)指令給下位機; 下位機是受控制者,將該指令翻譯成相應(yīng)的時序信號,然后直接控制對應(yīng)設(shè)備完成用戶需要的對應(yīng)操作,同時下位機在完成對數(shù)據(jù)和硬件設(shè)備的讀取操作后,再將數(shù)據(jù)編碼傳回上位機[1,2]??傮w而言,上位機主要負(fù)責(zé)系統(tǒng)管理、調(diào)配、狀態(tài)監(jiān)控、信息處理和分析等工作,下位機主要在現(xiàn)場進(jìn)行數(shù)據(jù)采集和和控制。在某些特殊場合,上位機和下位機的控制和被控制角色可以互換。上位機和下位機之間的通信是整個控制系統(tǒng)的關(guān)鍵。
Visual Basi(cVB)6.0 是微軟公司開發(fā)的可視化編程語言,是基于Windows 環(huán)境面向?qū)ο蟮膽?yīng)用程序。VB6.0 擁有強大的可視化用戶界面設(shè)計功能,可開發(fā)數(shù)據(jù)庫系統(tǒng)、多媒體應(yīng)用系統(tǒng)和網(wǎng)絡(luò)應(yīng)用系統(tǒng),被廣泛應(yīng)用在控制應(yīng)用領(lǐng)域,也是使用最廣泛的編程語言之一 [3]。
1 底層通信設(shè)計
在本文介紹的上位機程序設(shè)計中,底層需與藍(lán)牙 4.0 匹配,并實現(xiàn)接收數(shù)據(jù),使其在可視界面上顯示等功能(VB 可調(diào)用.exe,.text 等可執(zhí)行文件,由于VB 中提供了多種對文件進(jìn)行操作的關(guān)鍵字,如本程序中用到的open 關(guān)鍵字可對文件進(jìn)行訪問或創(chuàng)建操作,但僅限于文本格式,因此可對藍(lán)牙 4.0接收的電腦中的數(shù)據(jù)文本進(jìn)行讀寫操作)。
Visual Basic 還提供了shell 函數(shù),該函數(shù)具有執(zhí)行.exe,.com,.bat 等可執(zhí)行文件,打開文件夾、網(wǎng)址、任務(wù)管理器等, 調(diào)用系統(tǒng)軟件(計算器、筆記本、畫圖等程序),實現(xiàn)用戶注銷、關(guān)閉系統(tǒng)、重啟系統(tǒng)等功能。在本文底層程序設(shè)計中需要考慮如何使用VB 實現(xiàn)與藍(lán)牙 4.0 的匹配通信,當(dāng)前大部分筆記本電腦都自帶藍(lán)牙功能,但由于這些藍(lán)牙設(shè)備是硬件系統(tǒng),而 VB 只能調(diào)用軟件程序,因此 VB 無法直接調(diào)用電腦自帶的藍(lán)牙設(shè)備。為解決該問題,我們決定在電腦上外接一個藍(lán)牙模塊,通過VB 調(diào)用外設(shè)藍(lán)牙驅(qū)動與上位機連接的遠(yuǎn)程硬件。本程序利用 shell 函數(shù)執(zhí)行外設(shè)藍(lán)牙在電腦上自動安裝的exe 驅(qū)動,并在可視界面上顯示藍(lán)牙配對窗口。
2 界面設(shè)計
用戶界面是應(yīng)用程序的重要組成部分,應(yīng)具有非常友好的人機界面,既方便使用,又能體現(xiàn)出絕大部分程序功能。Visual Basic 為用戶提供了如窗體、菜單、各種命令按鈕等大量控件,用戶只需使用鼠標(biāo)將這些控件拖動到窗體相應(yīng)位置, 并對其外觀屬性進(jìn)行簡單設(shè)置,便能設(shè)計出用戶所需的應(yīng)用程序界面[4]。
窗體是應(yīng)用程序的重要組成部分。在程序運行時,每個窗體都對應(yīng)一個窗口。窗體是用戶和應(yīng)用程序之間的交互接口, 是VB 中的重要對象,可作為其他控件的 父對象 。即窗體除具有自身的屬性、方法外,還可以作為其他控件的容器,在其中仿真除窗體之外的其他控件,如文本框、圖片框、按鈕等。窗體文件的擴展名為.frm,根據(jù)其功能的不同,可以分為SDI 窗體(單文檔窗體)和 MDI 窗體(多文檔窗體)。該程序的界面設(shè)計采用多文檔窗體,可對用戶登錄界面和數(shù)據(jù)可視化界面進(jìn)行窗體操作,使得該程序更人性化和商業(yè)化。該程序界面設(shè)計如圖 1,圖 2 所示。
圖 1 用戶登錄界面
圖 2 數(shù)據(jù)可視化界面
3 數(shù)據(jù)庫通信設(shè)計
數(shù)據(jù)庫訪問技術(shù)在上位機應(yīng)用控制系統(tǒng)中占有非常重要的地位,是上位機應(yīng)用程序連接訪問后臺數(shù)據(jù)庫的橋梁。Visual Basic 作為一種功能強大的桌面開發(fā)軟件,為用戶提供了多種訪問數(shù)據(jù)庫的方法。
3.1 Visual Basic訪問數(shù)據(jù)庫的基本原理
Visual Basic 設(shè)計了多種訪問數(shù)據(jù)庫的方法,其中接口對象法和數(shù)據(jù)控件法是最基本的兩種方式。DAO、RDO 和ADO 是最常用的訪問數(shù)據(jù)庫的方法。DAO 是利用JET 數(shù)據(jù)庫引擎面向?qū)ο蟮慕涌冢籖DO 是用于訪問ODBC 的面向?qū)ο蟮慕涌?;ADO 是基于面向?qū)ο竽P偷脑L問技術(shù),這三種方式均通過JET 數(shù)據(jù)庫引擎完成[5]。主要過程為VB 通過用戶界面向數(shù)據(jù)庫發(fā)送連接請求,成功連接后,數(shù)據(jù)庫對VB 發(fā)來的數(shù)據(jù)進(jìn)行分析處理和儲存,最后將數(shù)據(jù)處理結(jié)果返回給VB 并顯示。
3.2 關(guān)于數(shù)據(jù)庫
數(shù)據(jù)庫是計算機應(yīng)用系統(tǒng)中一種專門管理數(shù)據(jù)資源的系統(tǒng)。MySQL 是一個快速、健壯的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。MySQL 數(shù)據(jù)庫在數(shù)據(jù)存儲、處理、安全、功能等方面優(yōu)勢明顯, 如MySQL 的每個表可以處理多達(dá) 5 千萬條記錄 ;MySQL 數(shù)據(jù)寫入速度相比 SQLServe、Access 提高了約 99%,并優(yōu)化了查詢算法,減少了數(shù)據(jù)查詢用時;MySQL 設(shè)置了嚴(yán)格的訪問權(quán)限,以保證已存儲數(shù)據(jù)的安全;MySQL 提供了TCP/IP, ODBC 和JDBC 等多種數(shù)據(jù)庫連接方式。
此外,MySQL 占用磁盤空間較少,僅 100 多兆,安裝、啟動與執(zhí)行較為方便。對于一般用戶和中小企業(yè)而言,得益于MySQL 的開源性,大大降低了軟件開發(fā)成本,受到了廣大使用者的歡迎[6]。
3.3 SQL語言
SQL 語言是結(jié)構(gòu)化查詢語言的簡稱。SQL 語言是當(dāng)前應(yīng)用最廣泛的數(shù)據(jù)庫查詢和程序設(shè)計語言,主要用于存取數(shù)據(jù)及查詢、管理和更新關(guān)聯(lián)數(shù)據(jù)庫系統(tǒng)[7]。
SQL 語言是高級的非過程化編程語言,可運行在許多具有完全不同底層結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)之間。SQL 語言具有優(yōu)秀的可移植性,基本上獨立于數(shù)據(jù)庫本身,可在不同的操作系統(tǒng)、網(wǎng)絡(luò)結(jié)構(gòu)和計算機硬件系統(tǒng)上運行。SQL 語句可嵌套使用, 具有極大地靈活性。
3.4 關(guān)鍵程序設(shè)計
通過用戶界面與數(shù)據(jù)庫的交流和通信,實現(xiàn)了數(shù)據(jù)傳輸和轉(zhuǎn)化的功能。在本程序設(shè)計過程中直接操作MySQL 數(shù)據(jù)庫源碼,可實現(xiàn)上位機與數(shù)據(jù)庫引擎的鏈接,將接收的多組數(shù)據(jù)打包發(fā)送到數(shù)據(jù)庫中不同表的相應(yīng)位置。因VB 只能將數(shù)據(jù)追加至SQL 源碼,或?qū)υ创a進(jìn)行覆蓋,故在程序設(shè)計中用到了堆棧操作。堆棧采用先進(jìn)后出(FILO)的方式處理數(shù)據(jù),因為僅讀取上一條發(fā)送的數(shù)據(jù),故使用堆棧相對于RAM 更加高效。
程序運行流程如圖 3 所示。啟動上位機后, 在用戶交互界面上點擊藍(lán)牙并成功配對后,VB 會調(diào)用shell 函數(shù)(shell Bluetooth.exe ,1)啟動電腦上的 Bluetooth 設(shè)備界面, 程序先判斷電腦藍(lán)牙是否已與外部收集數(shù)據(jù)的硬件中的內(nèi)部藍(lán)牙完成連接,若未成功連接,則需先啟動電腦上自帶的驅(qū)動藍(lán)牙。藍(lán)牙連接成功后,點擊測量,上位機通過藍(lán)牙接收外部硬件發(fā)送的數(shù)據(jù),然后保存在堆棧與數(shù)據(jù)庫中,并顯示在交互界面的顯示屏上。上位機讀取數(shù)據(jù)后用戶將會進(jìn)行兩種操作,其一,將數(shù)據(jù)傳送到數(shù)據(jù)庫對應(yīng)表格進(jìn)行存儲和整理分析操作;其二,用戶調(diào)用上一條已傳送到數(shù)據(jù)庫中的數(shù)據(jù)并查看。
最終效果如圖 4 所示。圖(a)所示為數(shù)據(jù)庫源碼中已存儲的數(shù)據(jù),圖(b)是用戶點擊 測量 后,將上位機接收到的數(shù)據(jù)顯示在用戶交互界面上,圖(c)是用戶點擊 發(fā)送 后, 上位機將新接收的數(shù)據(jù)發(fā)送到數(shù)據(jù)庫對應(yīng)表格存儲區(qū)域的狀態(tài)。在程序運行中圖(a)和圖(c)不可見。
從上位機發(fā)送數(shù)據(jù)到數(shù)據(jù)庫 MySQL 源碼中特定表格位 置的程序代碼如下(利用堆棧):
4 結(jié) 語
Visual Basic 功能強大,用戶界面設(shè)計方便、簡潔,被廣 泛應(yīng)用在數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)中 [7]。相比 WiFi 等無線通信 技術(shù),藍(lán)牙作為一種短距離無線通信技術(shù),具有低成本、低 功耗和低輻射等特點,成為設(shè)計上位機短距離無線數(shù)據(jù)傳輸 的首選。在上位機與數(shù)據(jù)庫連接和傳輸數(shù)據(jù)的過程中,本文 將 VB6.0 與 MySQL 結(jié)合,利用堆棧原理,將數(shù)據(jù)直接傳輸 到數(shù)據(jù)庫 MySQL 語言源碼中的特定位置,以實現(xiàn)數(shù)據(jù)庫中數(shù) 據(jù)的調(diào)用。