邊曉鋆 徐玲玲 王穎 曹世華
摘 要:在現代控制系統中,上位機負責管理整個系統及各部分功能的實現、調節調度、信息處理等工作。Visual Basic是一款由微軟公司開發,用于協助開發環境事件驅動的編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(RAD)系統,可以輕易使用DAO、RDO、ADO連接數據庫,或輕松創建ActiveX控件。文中針對上位機開發過程中VB與藍牙4.0通信以及VB與數據庫如何傳輸數據的問題,采用VB語言編寫了上位機與PLC的通信程序、界面程序以及上位機與數據庫的通信程序。實現了將電腦接收到的藍牙傳輸文件內容顯示在VB窗口,并將數據寫入MySQL數據庫并存儲,及查詢MySQL數據庫已存儲數據等功能。
關鍵詞:VB;數據庫;上位機;通信
中圖分類號:TP311 文獻標識碼:A 文章編號:2095-1302(2018)01-00-03
0 引 言
上位機又稱PC機或Host Computer,是可以發送控制命令的主機或計算機。下位機是指具有數據采集、數據存儲、傳輸控制等功能,可以直接獲取硬件設備運行狀態數據的主機,一般由PLC和單片機組成。上位機與下位機之間是從屬關系,上位機是控制者,利用軟件程序發送相關指令給下位機;下位機是受控制者,將該指令翻譯成相應的時序信號,然后直接控制對應設備完成用戶需要的對應操作,同時下位機在完成對數據和硬件設備的讀取操作后,再將數據編碼傳回上位機[1,2]。總體而言,上位機主要負責系統管理、調配、狀態監控、信息處理和分析等工作,下位機主要在現場進行數據采集和和控制。在某些特殊場合,上位機和下位機的控制和被控制角色可以互換。上位機和下位機之間的通信是整個控制系統的關鍵。
Visual Basic(VB) 6.0是微軟公司開發的可視化編程語言,是基于Windows環境面向對象的應用程序。VB6.0擁有強大的可視化用戶界面設計功能,可開發數據庫系統、多媒體應用系統和網絡應用系統,被廣泛應用在控制應用領域,也是使用最廣泛的編程語言之一[3]。
1 底層通信設計
在本文介紹的上位機程序設計中,底層需與藍牙4.0匹配,并實現接收數據,使其在可視界面上顯示等功能(VB可調用.exe,.text等可執行文件,由于VB中提供了多種對文件進行操作的關鍵字,如本程序中用到的open關鍵字可對文件進行訪問或創建操作,但僅限于文本格式,因此可對藍牙4.0接收的電腦中的數據文本進行讀寫操作)。
Visual Basic還提供了shell函數,該函數具有執行.exe, .com,.bat等可執行文件,打開文件夾、網址、任務管理器等,調用系統軟件(計算器、筆記本、畫圖等程序),實現用戶注銷、關閉系統、重啟系統等功能。在本文底層程序設計中需要考慮如何使用VB實現與藍牙4.0的匹配通信,當前大部分筆記本電腦都自帶藍牙功能,但由于這些藍牙設備是硬件系統,而VB只能調用軟件程序,因此VB無法直接調用電腦自帶的藍牙設備。為解決該問題,我們決定在電腦上外接一個藍牙模塊,通過VB調用外設藍牙驅動與上位機連接的遠程硬件。本程序利用shell函數執行外設藍牙在電腦上自動安裝的exe驅動,并在可視界面上顯示藍牙配對窗口。
2 界面設計
用戶界面是應用程序的重要組成部分,應具有非常友好的人機界面,既方便使用,又能體現出絕大部分程序功能。Visual Basic為用戶提供了如窗體、菜單、各種命令按鈕等大量控件,用戶只需使用鼠標將這些控件拖動到窗體相應位置,并對其外觀屬性進行簡單設置,便能設計出用戶所需的應用程序界面[4]。
窗體是應用程序的重要組成部分。在程序運行時,每個窗體都對應一個窗口。窗體是用戶和應用程序之間的交互接口,是VB中的重要對象,可作為其他控件的“父對象”。即窗體除具有自身的屬性、方法外,還可以作為其他控件的容器,在其中仿真除窗體之外的其他控件,如文本框、圖片框、按鈕等。窗體文件的擴展名為.frm,根據其功能的不同,可以分為SDI窗體(單文檔窗體)和MDI窗體(多文檔窗體)。該程序的界面設計采用多文檔窗體,可對用戶登錄界面和數據可視化界面進行窗體操作,使得該程序更人性化和商業化。該程序界面設計如圖1,圖2所示。
3 數據庫通信設計
數據庫訪問技術在上位機應用控制系統中占有非常重要的地位,是上位機應用程序連接訪問后臺數據庫的橋梁。Visual Basic作為一種功能強大的桌面開發軟件,為用戶提供了多種訪問數據庫的方法。
3.1 Visual Basic訪問數據庫的基本原理
Visual Basic設計了多種訪問數據庫的方法,其中接口對象法和數據控件法是最基本的兩種方式。DAO、RDO和ADO是最常用的訪問數據庫的方法。DAO是利用JET數據庫引擎面向對象的接口;RDO是用于訪問ODBC的面向對象的接口;ADO是基于面向對象模型的訪問技術,這三種方式均通過JET數據庫引擎完成[5]。主要過程為VB通過用戶界面向數據庫發送連接請求,成功連接后,數據庫對VB發來的數據進行分析處理和儲存,最后將數據處理結果返回給VB并顯示。
3.2 關于數據庫
數據庫是計算機應用系統中一種專門管理數據資源的系統。MySQL是一個快速、健壯的關系數據庫管理系統。MySQL數據庫在數據存儲、處理、安全、功能等方面優勢明顯,如MySQL的每個表可以處理多達5千萬條記錄;MySQL數據寫入速度相比SQLServe、Access提高了約99%,并優化了查詢算法,減少了數據查詢用時;MySQL設置了嚴格的訪問權限,以保證已存儲數據的安全;MySQL提供了TCP/IP,ODBC和JDBC等多種數據庫連接方式。
此外,MySQL占用磁盤空間較少,僅100多兆,安裝、啟動與執行較為方便。對于一般用戶和中小企業而言,得益于MySQL的開源性,大大降低了軟件開發成本,受到了廣大使用者的歡迎[6]。
3.3 SQL語言
SQL語言是結構化查詢語言的簡稱。SQL語言是當前應用最廣泛的數據庫查詢和程序設計語言,主要用于存取數據及查詢、管理和更新關聯數據庫系統[7]。
SQL語言是高級的非過程化編程語言,可運行在許多具有完全不同底層結構的數據庫系統之間。SQL語言具有優秀的可移植性,基本上獨立于數據庫本身,可在不同的操作系統、網絡結構和計算機硬件系統上運行。SQL語句可嵌套使用,具有極大地靈活性。
3.4 關鍵程序設計
通過用戶界面與數據庫的交流和通信,實現了數據傳輸和轉化的功能。在本程序設計過程中直接操作MySQL數據庫源碼,可實現上位機與數據庫引擎的鏈接,將接收的多組數據打包發送到數據庫中不同表的相應位置。因VB只能將數據追加至SQL源碼,或對源碼進行覆蓋,故在程序設計中用到了堆棧操作。堆棧采用先進后出(FILO)的方式處理數據,因為僅讀取上一條發送的數據,故使用堆棧相對于RAM更加高效。
程序運行流程如圖 3所示。啟動上位機后,在用戶交互界面上點擊藍牙并成功配對后,VB會調用shell函數(shell“Bluetooth.exe”,1)啟動電腦上的Bluetooth設備界面,程序先判斷電腦藍牙是否已與外部收集數據的硬件中的內部藍牙完成連接,若未成功連接,則需先啟動電腦上自帶的驅動藍牙。藍牙連接成功后,點擊測量,上位機通過藍牙接收外部硬件發送的數據,然后保存在堆棧與數據庫中,并顯示在交互界面的顯示屏上。上位機讀取數據后用戶將會進行兩種操作,其一,將數據傳送到數據庫對應表格進行存儲和整理分析操作;其二,用戶調用上一條已傳送到數據庫中的數據并查看。
最終效果如圖 4所示。圖(a)所示為數據庫源碼中已存儲的數據,圖(b)是用戶點擊“測量”后,將上位機接收到的數據顯示在用戶交互界面上,圖(c)是用戶點擊“發送”后,上位機將新接收的數據發送到數據庫對應表格存儲區域的狀態。在程序運行中圖(a)和圖(c)不可見。
從上位機發送數據到數據庫MySQL源碼中特定表格位置的程序代碼如下(利用堆棧):
Dim s1 As String
Open “F:\host\Miscellaneous\start.txt” For Binary As #1
s1 = Input(LOF(1), #1)
Close #1
Dim s2 As String
Open “F:\host\Miscellaneous\end.txt” For Binary As #1
s2 = Input(LOF(1), #1)
Close #1
Open “F:\host\Stack\interimDate.txt” For Append As #1 //上位機存儲數據文件
Print #1, “(“ + Text3.Text + “,” + Text3.Text + “,” + Text2.Text + “,” + Text1.Text + “),”
Close #1
Open “F:\host\Stack\last.txt” For Output As #1 //My SQL源碼文件
Print #1, “(“ + Text3.Text + “,” + Text3.Text + “,” + Text2.Text + “,” + Text1.Text + “),”
Close #1
Dim s3 As String
Open “F:\host\Stack\interimDate.txt” For Binary As #1
s3 = Input(LOF(1), #1)
Close #1
Open “F:\host\Datebase\newyak.sql” For Output As #1
Print #1, s1 + s3 + s2
Close #1
4 結 語
Visual Basic功能強大,用戶界面設計方便、簡潔,被廣泛應用在數據庫應用系統的開發中[7]。相比WiFi等無線通信技術,藍牙作為一種短距離無線通信技術,具有低成本、低功耗和低輻射等特點,成為設計上位機短距離無線數據傳輸的首選。在上位機與數據庫連接和傳輸數據的過程中,本文將VB6.0與MySQL結合,利用堆棧原理,將數據直接傳輸到數據庫MySQL語言源碼中的特定位置,以實現數據庫中數據的調用。
參考文獻
[1]關琳琳.試論VB編程語言在軟件開發中的應用[J].河南科技,2003(2):3.
[2]李霞.基于WIFI網絡通信遠程控制上位機界面編程設計[D].呼和浩特:內蒙古大學, 2011.
[3]郭圣路,張榮圣.Visual Basic 從入門到精通[M].北京:清華大學出版社,2008.
[4]高興,劉芳.VB訪問數據庫的原理與方法比較及發展前景[J].科協論壇(下半月),2008(4):80.
[5]孟小峰,周龍驤,王珊.數據庫技術發展趨勢[J].軟件學報,2004,15(12):1822-1836.
[6]楊姝,路遙,馬紅霞.SQL查詢語句的優化方法研究[J].硅谷,2011(2):95.
[7]高天哲.淺析VB中的數據庫技術[J].電腦知識與技術:學術交流,2009,5(33):9450-9451.
[8]翁祖泉,張琪.基于物聯網海量數據處理的數據庫技術分析與研究[J].物聯網技術,2014,4(6):88-90.