【正文】
BC,ADO等[24]。 ADO(ActiveX Data Objects)技術是Microsoft的基于應用程序級的編程接口。ADO技術提供了一個一致的,高性能的和高兼容的數據訪問接口。它既能實現數據庫前端的創(chuàng)建,又能實現中間層的設計。ADO的應用范圍涵蓋了從一層到多層數據庫應用的解決方案以及基于Web的數據驅動解決方案等多個方面。同時,ADO提供了一個較OLE DB更容易使用的接口,它提供了一個優(yōu)化的數據庫訪問手段,減少了網絡負載和應用程序前端與數據源之間的層次,所有這些都使得ADO具有輕量化,高性能的特點。 在Visual C++中使用ADO C++中用ADO的基本流程如下[25]:(1)生成應用程序框架并初始化OLE/COM庫環(huán)境創(chuàng)建一個標準的MFC AppWizard(exe)應用程序,然后在應用程序中初始化OLE/COM庫(因為ADO庫是一個COM DLL庫)。(2)引入ADO庫文件import引入ADO庫文件,以使編譯器能正確編譯。代碼如下:include〈〉import“c:\program files\mon files\system\ado\”no_namespace rename(“EOF”,“adoEOF”)rename(“BOF”,“adoBOF”) C++中的一些特殊COM支持類,這些類使得處理OLE自治更為容易一些,OLE自治是ADO使用的數據類型。后面使用import指令在應用程序中輸入ADO類庫定義。ADO類的定義是作為一種資源存儲在ADO DLL()中,在其內部稱為類型庫。參數no_namespace表示不適用ADO的名字空間,為了避免變量名沖突,將ADO中的EOF(文件結束)更名為adoEOF,將BOF改名為adoBOF。(3)利用智能指針進行數據庫操作ADO庫包含三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。_ConnectionPtr通常被用來創(chuàng)建一個數據連接或執(zhí)行一條不返回任何結果的SQL語句,如一個存儲過程。_CommandPtr返回一個記錄集。它提供了一種簡單的方法來執(zhí)行返回集的存儲過程和SQL語句。在使用_CommandPtr接口時,可以利用_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。_RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集了更多的控制功能,如記錄鎖定、游標控制等。(4)定義類ADOConn的成員變量和成員函數,代碼分成兩個部分,義變量和定義方法。成員變量包括_ConnectionPtr對象和_RecordsetPtr對分別用于處理連接數據庫和返回查詢結果集。成員方法包括下面的內容:OnInitADOConn()初始化連接數據庫;GetRecordSet(_bstr_t bstrSQL)執(zhí)行SELECT語句,返回結果集,bstrSQL標識要執(zhí)行的SELECT語句。ExecuteSQL(_bstr_t bstrSQL)執(zhí)行SELECT語句外其他SQL語句,INSERT語句和UPDATE語句,這些SQL語句不返回結果集。ExitConnect()斷開到數據庫的連接。 數據存儲在實驗中為數據庫的每個表都創(chuàng)建一個類,類的成員變量對應表的列,類的成員函數是對成員變量和表的操作。類origdata的每個成員變量對應原始數據表中的一個列,類origdata的成員函數可以分為兩類:一類用于設置成員變量,另一類用于進行數據庫操作。函數Corigdata::sql_insert()的功能是將Corigdata對象中的數據插入到表origdata中,具體代碼如下:void Corigdata::sql_insert(){ADOConn m_AdoConn。()。_bstr_t vSQL。//設置INSERT語句vSQL=INSERT INTO origdata(Recvtime,Temp,Stnum)VALUES(39。+recvtime+39。,39。+temp+39。,39。139。)。(vSQL)。//執(zhí)行INSERT語句()。//斷開與數據庫的連接}程序中使用到ADOConn對象,用于連接數據庫和執(zhí)行INSERT語句。函數的執(zhí)行過程如下:連接到數據庫;根據類原始數據表的成員變量設置INSERT語句;調用ExecuteSQL()函數執(zhí)行INSERT語句;斷開與數據庫的連接。 服務器端設計各數據采集終端利用調制解調器撥號登錄互聯網絡,會獲得一個動態(tài)IP。調制解調器具備IP之后,主動向數據中心服務器請求建立通訊連接,若服務器啟動監(jiān)聽功能后會偵聽到此請求,并會為其建立一條Socket連接,這樣遠程通信終端與服務器之間就可以傳輸數據了。數據中服務器負責接收數據采集終端傳回的實時信息,對信息進行分析儲存以及處理,數據中心是無線數據傳輸系統的中樞,是整個系統可靠高效運行的關鍵之一。 服務器端數據接收軟件的功能本系統中,我們使用TCP/IP協議,在客戶機/服務器模型下采用Socket技術實現網絡通信。為了接收數據采集終端通過GPRS網絡發(fā)送的數據,數據中心必須先啟動一個服務器端接收程序,以便數據采集終端能與數據中心建立連接進行數據傳輸。雖然MFC本身提供了CSocket類用于實現客戶機與服務器之間的通信,但是為了增強程序的可擴展性和提高性能,在服務器端編寫從CSocket派生的兩個類ClistenSocket和CacceptSocket。ClistenSocket負責監(jiān)聽,通過對CSocket類的listen()函數重載使得當客戶端提出連接請求時,可以做出應答,同時建立了類CacceptSocket,它繼承自CSocket類,通過重載accept()函數與數據采集端建立連接,用于處理服務器端數據的發(fā)送和接收。服務器端開放一個端口,啟動服務后,進行終端數據的監(jiān)聽。在進行雙方通信時,服務器必須首先啟動,直到它執(zhí)行完accept()調用,進入等待狀態(tài)后,才能接受客戶端的請求。假如客戶在此之前啟動,則connect()將返回出錯代碼,連接不成功。由于服務器采用一對多的通信方式,為防止當有多個終端同時和服務器進行通信時發(fā)生信息阻塞,以保證通信的實時性和可靠性,程序中使用線程技術來處理服務器與每一個數據采集終端的連接。在設計過程中,當監(jiān)聽到有數據時,進行接收。如果是終端第一次登錄,登錄成功后,先發(fā)送第一包數據即SIM卡號,服務器根據數據庫中已有的SIM卡來判斷是否是合法的終端連接。如果是數據庫中存有的SIM卡,則連接成功,否則,斷開鏈路。當鏈路一直建立但終端可能長時間沒有數據的發(fā)送,這時候終端發(fā)送一個“心跳”數據給服務器端。如果是“心跳”數據,則丟棄,并繼續(xù)進行數據的監(jiān)聽;如果不是,則存儲所接收的數據。 程序流程分析數據中心的軟件采用模塊化設計,是采用VC++語言進行開發(fā),并配合SQL Server數據庫技術和Socket網絡編程技術分別實現了數據庫操作和通信操作。數據中心的軟件設計要充分考慮系統功能的完整性和擴展性,同時系統應有良好的可靠性和兼容性。服務器端監(jiān)聽端口和接收數據的流程圖,如圖42所示。開始啟動服務器軟件,連接數據庫否顯示出錯信息連接數據庫成功?是無有連接請求?有讀取緩沖區(qū)數據是丟棄是心跳包?否否是已知SIM卡?斷開連接是顯示數據并存入數據庫斷開連接結束圖 4—2 服務端接收軟件流程圖 本章小結本章首先對主要軟件模塊和開發(fā)環(huán)境做了介紹,然后分析和研究了網絡通信的實現,包括網絡進程間通信、客戶端/服務器模型及Winsock的網絡通信過程。接下來,對服務器和數據庫分別進行了設計。在數據庫設計中,對數據庫中表的設計和ADO技術做了詳細說明。在服務器端程序設計中,介紹了服務器端軟件的功能并給出了程序流程圖。結語本文在深入分析目前無線數據傳輸發(fā)展狀況的基礎上,結合計算機技術和網絡通信技術,研究了基于單片機和3G通信的遠程數據傳輸技術。遠程數據傳輸系統由數據中心和遠程數據采集終端兩部分組成。論文在分析了3G技術和無線通信技術之后,論述了系統的結構組成,然后對數據采集終端部分進行硬件設計,搭建了整個系統的硬件框架,最后對數據中心和數據采集終端兩部分進行簡單的軟件設計。設計目標是真正實現基于GPRS的遠程數據采集傳輸。本文的主要工作是單片機的合理選型及其外圍電路的設計、3G無線調制解調器的選擇。單片機采用美國TI公司生產的MSP430F149系列芯片,論文較詳細地講述了這一系列單片機的特點;調制解調器模塊選擇四川火狐公司的無線MODEM,通過標準AT指令控制;整個系統的軟件設計包括數據中心程序設計和數據采集終端程序設計。其中,數據中心程序設計采用Visual C++。數據采集終端程序設計以IAR公司為MSP430系列單片機開發(fā)的Embedded Workbench集成開發(fā)環(huán)境為開發(fā)平臺。致謝 時間的流逝往往都是不經意間,眨眼間大學生活即將離我而去。作為本科階段的最后能力培養(yǎng)—畢業(yè)設計。飲水思源,這篇論文能最終成形,離不開我的指導老師姜文剛的精心指導,鼓勵我從考研失敗的陰影中走出來,從論文的選題、布局、謀篇、技術路線的確定直到論文的成稿,每一步無不滲透著老師的真知灼見地教誨和畫龍點睛地指引。能跟隨姜老師做畢業(yè)設計是我的幸運。老師嚴謹求實的治學態(tài)度、博大精深的理論知識無不深深影響著我。 參考文獻[1] %.世界電信,2008年2月5[2] 耿志成 全球3G發(fā)展現狀及趨勢分析 現代電信科技 2009年1月1期[3] ,2008第2期:80~84[4] 《現代電子技術》,2006,29(3):I0008~I0008[5] :市場縱橫,2005年11期:36~37[6] IQURE issues in SCADA networks[J].Computers and Security,2006,25(7):498506.[7] SARAH manufacturing cell SCADA system for educationalpurposes[J].Computer Applications in Engineering Education,2008,16(1):2130.[8] [J].電測與儀表,2007,44(500):2527.[9] 王振起 基于單片機和GPRS數據傳輸技術的研究 哈爾濱理工大學CNKI:CDMD: [10] 肖浩 基于TDSCDMA的煤礦遠程監(jiān)測方案設計與實現 西安科技大學CNKI:CDMD:[11] ,2007.[12] (技術與應用欄目),:10~11[13] 梁娟,王典洪,[J].單片機與嵌入式系統應用,2007,(2):4850.[14] 李昕,曲夢可,[J].傳感技術學報,2007,20(4):805808.[15] 杜鵑,[J].低壓電器,2006,(10):2124.[16] YANG novel onchip debug system with quick allregisters scan chain based on JTAG[C].2006 8th International Conference on SolidState and Integrated Circuit Technology,Shanghai,2006:19411943.[17] 陸靚亮,馮小龍,用[J].工礦自動化,2008,(3):7476.[18] 鄭萬溪,黃元慶,[J].傳感器與微系統,2008,27(2):8385.[19] 張合權,[J].軟件導刊,2008,7(8):2225.[20] 曹寧,[J].計算機工程,1999,(2):7274.[21] RAVI Buffer AutoSizing for HighPerformance Data Transfers[J]. Journal of Grid Computing,2003,1(4):361376.[22] HUISHENG of an entirely distributed system withWindows Socket[J].Computer Engineering,1999,25(9):1819.[23] YUHUA Development of Monitoring Software for Local AreaNetwork[C].ICICIC 3rd International Conference,Dalian,2008:379382.[24] 李沐華,吳小萍,[J].計算機與現代化,2001,(4):3033.[25] [J].計算機應用研究,2001,18(1):130133.附錄 電路原理圖