版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p> 論文題目基于智能小車(chē)的信息采集系統(tǒng)-上位機(jī)數(shù)據(jù)接收模塊設(shè)計(jì)</p><p> (英文)Car-based information collection system-PC </p><p> data receiving module design</p><p> 所在學(xué)
2、院 </p><p> 專(zhuān)業(yè)班級(jí) 通信工程 </p><p> 學(xué)生姓名 學(xué)號(hào) </p><p> 指導(dǎo)教師 職稱(chēng) </p><p> 完成日期
3、 年 月 日</p><p><b> 摘 要</b></p><p> 隨著現(xiàn)代信息技術(shù)的高速發(fā)展,數(shù)據(jù)采集方面的技術(shù)也在不斷地向前發(fā)展,并在信息技術(shù)中占有重要地住。溫度、濕度等環(huán)境參數(shù)在智能家居、工業(yè)控制、智能農(nóng)業(yè)等方面都得到很高的重視。數(shù)據(jù)采集系統(tǒng)是據(jù)采集結(jié)合基于計(jì)算機(jī)的測(cè)量軟硬件產(chǎn)品來(lái)實(shí)現(xiàn)靈活的、用戶自定義的測(cè)量系統(tǒng)。如
4、何實(shí)時(shí)直觀準(zhǔn)確地采集到溫度,亮度等數(shù)據(jù)成為了焦點(diǎn)。</p><p> 本次設(shè)計(jì)的上位機(jī)數(shù)據(jù)接收模塊,將實(shí)現(xiàn)如下功能:通過(guò)上位機(jī)Java程序讀取串口接收到的信息,并將數(shù)據(jù)保存到My SQL數(shù)據(jù)庫(kù)。</p><p> 由于實(shí)驗(yàn)條件限制,本上位機(jī)接收模塊通過(guò)VSPD虛擬串口實(shí)現(xiàn)串口通信,再通過(guò)Java驅(qū)動(dòng)串口通信方式接收無(wú)線收發(fā)模塊上采集的信息,并將其傳送到上住機(jī)(PC機(jī)),再通過(guò)Java程
5、序?qū)⒏黜?xiàng)數(shù)據(jù)保持到My SQL數(shù)據(jù)庫(kù)進(jìn)行分析存儲(chǔ)。</p><p> 關(guān)鍵詞:Java;數(shù)據(jù)采集;上位機(jī)接收;My SQL; </p><p><b> Abstract</b></p><p> With the rapid development of modern information tech
6、nology, data acquisition technology are constantly move forward, and IT in the possession of an important living. Environmental parameters such as temperature, humidity, high attention in the smart home, industrial contr
7、ol, intelligent agriculture. The data acquisition system data acquisition combined with computer-based measurement hardware and software products to achieve a flexible, user-defined measurement system. How real-time visi
8、bility </p><p> Keywords:Java; data collection; to receive the host computer; My SQL;</p><p><b> 目錄 </b></p><p><b> 1引言- 1 -</b></p><p> 1.
9、1設(shè)計(jì)目的和意義- 1 -</p><p> 1.2設(shè)計(jì)內(nèi)容- 1 -</p><p> 2系統(tǒng)使用技術(shù)綜述- 2 -</p><p> 2.1數(shù)據(jù)庫(kù)技術(shù)- 2 -</p><p> 2.2編程語(yǔ)言- 2 -</p><p> 2.3開(kāi)發(fā)工具- 4 -</p><p>
10、2.3.1My SQL簡(jiǎn)介- 4 -</p><p> 2.3.2 VSPD虛擬串口簡(jiǎn)介- 5 -</p><p> 2.3.3 NetBeans 簡(jiǎn)介- 6 -</p><p> 2.3.4串口調(diào)試助手簡(jiǎn)介- 6 -</p><p> 3 系統(tǒng)設(shè)計(jì)- 8 -</p><p> 3.1上位機(jī)接收模塊
11、設(shè)計(jì)- 8 -</p><p> 3.2 My SQL數(shù)據(jù)庫(kù)表設(shè)計(jì)- 9 -</p><p> 3.2.1創(chuàng)建數(shù)據(jù)庫(kù)表- 9 -</p><p> 3.2.2表的結(jié)構(gòu)實(shí)驗(yàn)圖- 10 -</p><p> 3.3java接收串口數(shù)據(jù)- 11 -</p><p> 3.3.1VSPD虛擬串口通信的實(shí)現(xiàn)
12、- 11 -</p><p> 3.3.2JAVA實(shí)時(shí)讀取串口數(shù)據(jù)- 13 -</p><p> 3.4連接數(shù)據(jù)庫(kù)并導(dǎo)入數(shù)據(jù)- 17 -</p><p> 3.4.1Java連接數(shù)據(jù)庫(kù)- 17 -</p><p> 3.4.2導(dǎo)入數(shù)據(jù)庫(kù)表- 18 -</p><p> 3.5合并實(shí)現(xiàn)接收數(shù)據(jù)并存入數(shù)據(jù)
13、庫(kù)- 19 -</p><p> 4結(jié)論- 22 -</p><p> 參考文獻(xiàn)- 23 -</p><p> 附錄1 源程序代碼- 24 -</p><p> 附錄2 畢業(yè)設(shè)計(jì)作品說(shuō)明書(shū)- 29 -</p><p><b> 1引言</b></p><
14、p> 1.1設(shè)計(jì)目的和意義</p><p> 在計(jì)算機(jī)廣泛應(yīng)用的今天,數(shù)據(jù)采集的重要性已經(jīng)變的尤為顯著了。數(shù)據(jù)采集系統(tǒng)是計(jì)算機(jī)與外部物理世界連接的橋梁,在計(jì)算機(jī)的各個(gè)領(lǐng)域都具有重要的作用和影響。數(shù)據(jù)采集,又稱(chēng)數(shù)據(jù)獲取,是利用一種裝置,從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部的一個(gè)接口[1]。</p><p> 數(shù)據(jù)采集已經(jīng)被廣泛應(yīng)用于互聯(lián)網(wǎng)及分布式領(lǐng)域,數(shù)據(jù)采集領(lǐng)域已經(jīng)發(fā)生了重要的變
15、化。首先,分布式控制應(yīng)用場(chǎng)合中的智能數(shù)據(jù)采集系統(tǒng)在國(guó)內(nèi)外已經(jīng)取得了長(zhǎng)足的發(fā)展。其次,總線兼容型數(shù)據(jù)采集插件的數(shù)量不斷增大,與個(gè)人計(jì)算機(jī)兼容的數(shù)據(jù)采集系統(tǒng)的數(shù)量也在增加。國(guó)內(nèi)外的各種數(shù)據(jù)采集機(jī)先后問(wèn)世,將數(shù)據(jù)采集帶入了一個(gè)全新的時(shí)代。數(shù)據(jù)采集就是指從傳感器和其它待測(cè)設(shè)備等模擬和數(shù)字被測(cè)單元中自動(dòng)采集信息的過(guò)程。數(shù)據(jù)采集系統(tǒng)是據(jù)采集結(jié)合基于計(jì)算機(jī)的測(cè)量軟硬件產(chǎn)品來(lái)實(shí)現(xiàn)靈活的、用戶自定義的測(cè)量系統(tǒng)[2]。 </p><p&
16、gt; 本次基于小車(chē)的數(shù)據(jù)采集系統(tǒng)的目的主要是為了探測(cè)小車(chē)周?chē)h(huán)境及測(cè)量溫度、亮度或速度等物理現(xiàn)象?;赑C的數(shù)據(jù)采集主要是通過(guò)模塊化硬件、應(yīng)用軟件和計(jì)算機(jī)的結(jié)合,進(jìn)行測(cè)量采集與接收。盡管數(shù)據(jù)采集系統(tǒng)根據(jù)不同的應(yīng)用需求有不同的定義,但各個(gè)系統(tǒng)采集、分析和顯示信息的目的卻都相同。數(shù)據(jù)采集系統(tǒng)整合了信號(hào)、傳感器、激勵(lì)器、信號(hào)調(diào)理、數(shù)據(jù)采集設(shè)備和應(yīng)用軟件等,本文主要對(duì)信息采集系統(tǒng)上位機(jī)接收部分進(jìn)行設(shè)計(jì)以實(shí)現(xiàn)接收小車(chē)發(fā)送的數(shù)據(jù)并進(jìn)行分析存儲(chǔ)。
17、 </p><p><b> 1.2設(shè)計(jì)內(nèi)容</b></p><p> 設(shè)計(jì)一個(gè)上位機(jī)數(shù)據(jù)接收模塊,通過(guò)上位機(jī)Java程序讀取由串口接收到的信息,并將數(shù)據(jù)保存到My SQL數(shù)據(jù)庫(kù)。根據(jù)上位機(jī)接收系統(tǒng)的實(shí)際要求,本接收模塊設(shè)計(jì)的要求將實(shí)現(xiàn)以下功能:</p><p> 1、通過(guò)Java程序讀取串口數(shù)據(jù);</p>
18、<p> 2、通過(guò)Java程序連接數(shù)據(jù)庫(kù)并把數(shù)據(jù)保存;</p><p><b> 2系統(tǒng)使用技術(shù)綜述</b></p><p><b> 2.1數(shù)據(jù)庫(kù)技術(shù)</b></p><p> 數(shù)據(jù)庫(kù)技術(shù)是信息系統(tǒng)的一個(gè)核心技術(shù)。是一種計(jì)算機(jī)輔助管理數(shù)據(jù)的方法,它研究如何組織和存儲(chǔ)數(shù)據(jù),如何高效地獲取和處理數(shù)據(jù)。是
19、通過(guò)研究數(shù)據(jù)庫(kù)的結(jié)構(gòu)、存儲(chǔ)、設(shè)計(jì)、管理以及應(yīng)用的基本理論和實(shí)現(xiàn)方法,并利用這些理論來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行處理、分析和理解的技術(shù)。數(shù)據(jù)庫(kù)技術(shù)是研究、管理和應(yīng)用數(shù)據(jù)庫(kù)的一門(mén)軟件科學(xué)[3]。 </p><p> 數(shù)據(jù)庫(kù)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),它產(chǎn)生于距今五十年前,隨著信息技術(shù)和市場(chǎng)的發(fā)展,特別是20世紀(jì)90年代以后,數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成為用戶所需要的各種數(shù)據(jù)管理的方式。數(shù)
20、據(jù)庫(kù)有很多種類(lèi)型,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng)都在各個(gè)方面都得到了大量廣泛的應(yīng)用。</p><p> 目前,常用的數(shù)據(jù)庫(kù)管理系統(tǒng)有IBM的DB2、Oracle、Sybase、INFORMIX和INGRES。這些產(chǎn)品都支持多平臺(tái),如 UNIX、VMS、Windows,但支持的程度不一樣。My SQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典My SQL AB公司。由于其體
21、積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了My SQL作為網(wǎng)站數(shù)據(jù)庫(kù)。</p><p><b> 2.2編程語(yǔ)言</b></p><p> C#是一種由C和C++衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言,它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)
22、大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開(kāi)發(fā)的首選語(yǔ)言。C#是微軟公司在2000年7月發(fā)布的一種全新且簡(jiǎn)單、安全、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是專(zhuān)門(mén)為.NET的應(yīng)用而開(kāi)發(fā)的語(yǔ)言。</p><p> Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)(即Java SE,
23、 Java EE, Java ME)的總稱(chēng)。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了 C++ 語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(byte code),然后依賴(lài)各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。下面是2種編程語(yǔ)言的數(shù)據(jù)庫(kù)連接:</p><p> 1)C#數(shù)據(jù)庫(kù)連接:在
24、C#中使用ADO接口操縱SQL等數(shù)據(jù)庫(kù)。由于ADO數(shù)據(jù)源幾乎覆蓋了目前常見(jiàn)的數(shù)據(jù)源類(lèi)型,對(duì)于ODBC所不支持的數(shù)據(jù)源,ADO無(wú)疑是唯一的選擇。而ADO的批更新功能,更是網(wǎng)絡(luò)環(huán)境下大數(shù)據(jù)量更新應(yīng)用的重要因素。由于ADO缺乏大量的第三方廠商的支持,使得ADO目前遠(yuǎn)不如ODBC普及,但其面向?qū)ο蟮奶匦詫⑹笰DO具有比較廣闊的發(fā)展前景[4]。</p><p> 2)Java數(shù)據(jù)庫(kù)連接:(Java Database Co
25、nnectivity,簡(jiǎn)稱(chēng)JDBC)是Java語(yǔ)言中用來(lái)規(guī)范客戶端程序如何來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法。JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程
26、序[5]。在關(guān)系數(shù)據(jù)庫(kù)的"對(duì)象/關(guān)系"映射中,表中的每行對(duì)應(yīng)于類(lèi)的一個(gè)實(shí)例,而每列的值對(duì)應(yīng)于該實(shí)例的一個(gè)屬性,程序員可直接對(duì) Java 對(duì)象進(jìn)行操作;存取數(shù)據(jù)所需的 SQL 調(diào)用將在"掩蓋下"自動(dòng)生成。此外還可提供更復(fù)雜的映射,例如將多個(gè)表中的行結(jié)合進(jìn)一個(gè) Java 類(lèi)中[6]。</p><p> 通常通信的形式可以分為兩種,一種為并行數(shù)據(jù)通信,另一種為串行數(shù)據(jù)通信。通信
27、的主要目的是將數(shù)據(jù)從一端發(fā)送到另一端,來(lái)實(shí)現(xiàn)數(shù)據(jù)的交換。數(shù)據(jù)在到達(dá)正確目的地之前,可能需要經(jīng)過(guò)一系列中間節(jié)點(diǎn),這些中間節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)送工作,以送達(dá)目的地,這些中間節(jié)點(diǎn)稱(chēng)為DSE(Data Switching Equipment,數(shù)據(jù)交換設(shè)備)。終端設(shè)備發(fā)送數(shù)據(jù)時(shí),必須先將數(shù)據(jù)轉(zhuǎn)換為電氣信號(hào),以便在線路上傳遞,而負(fù)責(zé)數(shù)據(jù)與電氣信號(hào)轉(zhuǎn)換的設(shè)備稱(chēng)為DCE(Data Communication Equipment,數(shù)據(jù)通信設(shè)備)。DTE與DC
28、E間的數(shù)據(jù)傳輸線路通常使用RS-232串行通信,而DCE與DSE間的媒體則包括了雙絞線、同軸電纜、光纖或無(wú)線電等等 [7]。</p><p> 串口通信(Serial Communications)的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它能夠非常簡(jiǎn)單的實(shí)現(xiàn)遠(yuǎn)距離通信。典型地,串口用于ASCII碼字符的傳輸
29、。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)[8]。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。波特率是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。數(shù)據(jù)位是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。
30、如何設(shè)置取決于你想傳送的信息。停止位是用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口[8]。同時(shí),串口通信協(xié)議也可以</p><p> 在C#中實(shí)現(xiàn)串口通信,我們有三種方法: 第一:通過(guò)MSCOMM控件這是最簡(jiǎn)單的,最方便的方法。第二:微軟
31、在.NET新推出了一個(gè)串口控件,基于.NET的P/Invoke調(diào)用方法實(shí)現(xiàn),第三:自己用API寫(xiě)串口通信,可以方便實(shí)現(xiàn)想要的各種功能。</p><p><b> 2.3開(kāi)發(fā)工具</b></p><p> 2.3.1My SQL簡(jiǎn)介</p><p> My SQL是最受歡迎的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),它由 My SQL AB開(kāi)發(fā)、發(fā)布和支持
32、。My SQL AB是一家基于My SQL開(kāi)發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來(lái)結(jié)合開(kāi)源價(jià)值和方法論的第二代開(kāi)源公司。My SQL是My SQL AB的注冊(cè)商標(biāo)。My SQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫(kù)服務(wù)器。SQL(結(jié)構(gòu)化查詢語(yǔ)言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫(kù)語(yǔ)言。My SQL是以一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序My SQL和很多不同的客戶程序和庫(kù)組成[9]。My SQL 主要目標(biāo)是快
33、速、強(qiáng)大和易用。最初是因?yàn)槲覀冃枰@樣一個(gè)SQL服務(wù)器,它能處理與任何可不昂貴硬件平臺(tái)上提供數(shù)據(jù)庫(kù)的廠家在一個(gè)數(shù)量級(jí)上的大型數(shù)據(jù)庫(kù),但速度更快,My SQL就開(kāi)發(fā)出來(lái)。自1996年以來(lái),我們一直都在使用My SQL,其環(huán)境有超過(guò) 40 個(gè)數(shù)據(jù)庫(kù),包含 10,000個(gè)表,其中500多個(gè)表超過(guò)7百萬(wàn)行,這大約有100 個(gè)吉字節(jié)(GB)的關(guān)鍵應(yīng)用數(shù)據(jù)與其他數(shù)據(jù)庫(kù)管理系統(tǒng)相比,My SQL具有以下優(yōu)勢(shì):</p><p>
34、 1、My SQL是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。</p><p> 2、My SQL是開(kāi)源的。</p><p> 3、My SQL服務(wù)器是一個(gè)快速的、可靠的和易于使用的數(shù)據(jù)庫(kù)服務(wù)器。</p><p> 4、My SQL服務(wù)器工作在客戶/服務(wù)器或嵌入系統(tǒng)中。</p><p> 5、有大量的My SQL軟件可以使用。</p>
35、<p> 2.3.2 VSPD虛擬串口簡(jiǎn)介</p><p> 本上位機(jī)數(shù)據(jù)接收模塊串口通信部分采用VSPD虛擬串口通信進(jìn)行數(shù)據(jù)接收。該軟件可以將TCP/IP連接成本機(jī)的虛擬COM口,應(yīng)用程序通過(guò)訪問(wèn)虛擬窗口,就可以完成遠(yuǎn)程控制、數(shù)據(jù)傳輸?shù)裙δ?。VSPD虛擬串口軟件具有如下的特性:</p><p> 1)多虛擬串口映射:VSPM可以同時(shí)映射出多個(gè)虛擬串口,這些串口可以相互獨(dú)立
36、,互不干擾;虛擬串口的最大數(shù)量?jī)H受操作系統(tǒng)和電腦配置限制;每虛擬串口可以單獨(dú)設(shè)置參數(shù);支持虛擬串口與串口服務(wù)器串口參數(shù)同步;</p><p> 2)多線程架構(gòu):每個(gè)虛擬串口同時(shí)具備收/發(fā)2個(gè)獨(dú)立線程;所有串口可以同時(shí)工作;此架構(gòu)可以確保在大數(shù)據(jù)量吞吐下,仍可以保持較高的系統(tǒng)穩(wěn)定性;可以獨(dú)立設(shè)置虛擬串口線程的優(yōu)先級(jí),以取得更高的性能;</p><p> 3)自動(dòng)連接、自動(dòng)重新連接:當(dāng)虛擬
37、串口被打開(kāi)時(shí),VSPD會(huì)自動(dòng)與遠(yuǎn)程設(shè)備建立TCP/IP連接(Client模式下);如果發(fā)送數(shù)據(jù)到遠(yuǎn)程設(shè)備失敗,VSPD會(huì)自動(dòng)與遠(yuǎn)程設(shè)備建立TCP/IP連接;</p><p> 4)數(shù)據(jù)監(jiān)控:實(shí)時(shí)顯示虛擬串口的配置參數(shù)、數(shù)據(jù)傳輸狀態(tài)、傳輸數(shù)據(jù)等;</p><p><b> 5)3種工作模式:</b></p><p> Server模式,軟件
38、處于監(jiān)聽(tīng)狀態(tài),等待客戶模式的設(shè)備發(fā)出的TCP/IP連接;Client模式,軟件會(huì)根據(jù)設(shè)置,主動(dòng)與其他服務(wù)器模式設(shè)備建立TCP/IP連接;</p><p> UDP廣播模式,將使用UDP廣播模式傳輸數(shù)據(jù),通常用于組建大規(guī)模的半雙工網(wǎng)絡(luò);</p><p> 軟件在同一時(shí)刻只能運(yùn)行在一種模式下,3種模式切換運(yùn)行;</p><p> 2.3.3 NetBeans 簡(jiǎn)介
39、</p><p> NetBeans 由Sun公司在2000年創(chuàng)立,它是開(kāi)放源運(yùn)動(dòng)以及開(kāi)發(fā)人員和客戶社區(qū)的家園,旨在構(gòu)建世界級(jí)的Java IDE。NetBeans當(dāng)前可以在Solaris、Windows、Linux和Macintosh OS X平臺(tái)上進(jìn)行開(kāi)發(fā),并在SPL(Sun公用許可)范圍內(nèi)使用。 </p><p> NetBeans IDE 的開(kāi)發(fā)環(huán)境下可以編寫(xiě),編譯,調(diào)試工具和使
40、用程序。程序用 Java 書(shū)寫(xiě),但是能夠支持包括 C, C++ 的許多編程語(yǔ)言, XML, HTML 和更多。程序也包括有對(duì)代碼完成,注解,宏和自動(dòng)缺口的支持突出代碼編輯的句法。NetBeans IDE是一個(gè)屢獲殊榮的集成開(kāi)發(fā)環(huán)境,可以很方便的在Windows,Mac,Linux和Solaris等平臺(tái)中運(yùn)行。NetBeans包括開(kāi)源的開(kāi)發(fā)環(huán)境和應(yīng)用平臺(tái),NetBeans IDE可以使開(kāi)發(fā)人員利用Java平臺(tái)能夠快速創(chuàng)建Web、企業(yè)、桌面
41、以及移動(dòng)的應(yīng)用程序,NetBeans IDE目前支持PHP、Ruby、JavaScript、Ajax、Groovy、Grails和C /C + +等開(kāi)發(fā)語(yǔ)言。NetBeans項(xiàng)目由一個(gè)活躍的開(kāi)發(fā)社區(qū)提供支持, NetBean開(kāi)發(fā)環(huán)境提供了豐富的產(chǎn)品文檔和培訓(xùn)資源以及大量的第三方插件[11]。 </p><p> 2.3.4串口調(diào)試助手簡(jiǎn)介</p><p> 一個(gè)小巧的串口調(diào)試助手,支持
42、常用的300-115200bps波特率,能設(shè)置校驗(yàn)、數(shù)據(jù)位和停止位,能以ASCII碼或十六進(jìn)制接收或發(fā)送任何數(shù)據(jù)或字符(包括中文),可以任意設(shè)定自動(dòng)發(fā)送周期,并能將接收數(shù)據(jù)保存成文本文件,能發(fā)送任意大小的文本文件。硬件連接方面,傳統(tǒng)臺(tái)式PC機(jī)支持標(biāo)準(zhǔn)RS232接口,當(dāng)下帶有串口的PC已經(jīng)很少見(jiàn)了,所以需要usb/232轉(zhuǎn)換接口,并且安裝相應(yīng)驅(qū)動(dòng)程序才可以[12]。串口調(diào)試助手的主要功能如下:</p><p>
43、1.定時(shí)發(fā)送數(shù)據(jù); </p><p> 2.自動(dòng)搜索串口,并打開(kāi)串口; </p><p> 3.可以以十六進(jìn)制或ASCII格式,向指定串口發(fā)送數(shù)據(jù);</p><p> 4.接收數(shù)據(jù)時(shí),光標(biāo)始終顯示在最后一行; </p><p> 5.接收數(shù)據(jù)可以進(jìn)行十六進(jìn)制和ASCII切換; </p><p> 6.串口打開(kāi)
44、過(guò)程中,可修改通訊參數(shù),如波特率,停止位等; </p><p> 7.自動(dòng)記錄上次操作參數(shù),如串口號(hào),波特率,校驗(yàn)位等;</p><p> 8.可以發(fā)送專(zhuān)用指令讀寫(xiě)B(tài)OAST數(shù)字傳感器內(nèi)碼,修改地址等;</p><p> 9.線程中監(jiān)控串口事件,無(wú)數(shù)據(jù)時(shí),不接收; </p><p> 10.接收數(shù)據(jù)可以保存為文件,也可打開(kāi)已保存數(shù)據(jù)文
45、件; </p><p><b> 3 系統(tǒng)設(shè)計(jì)</b></p><p> 3.1上位機(jī)接收模塊設(shè)計(jì)</p><p> 通過(guò)智能監(jiān)控系統(tǒng)中上位機(jī)的控制模塊,主要內(nèi)容為設(shè)計(jì)系統(tǒng)圖形界面、建立數(shù)據(jù)庫(kù)及java數(shù)據(jù)庫(kù)連接等部分。上位機(jī)能通過(guò)無(wú)線串口傳輸模塊與智能小車(chē)進(jìn)行通信連接,以上位機(jī)接收模塊進(jìn)行數(shù)據(jù)分析及存儲(chǔ),通過(guò)上位機(jī)控制模塊進(jìn)行數(shù)據(jù)調(diào)用及
46、顯示,以此來(lái)實(shí)現(xiàn)對(duì)小車(chē)的精確控制并在圖形界面中顯示所采集的數(shù)據(jù)。主要目標(biāo)使小車(chē)在運(yùn)行過(guò)程中,能夠自動(dòng)檢測(cè)到障礙物且能避開(kāi)障礙物運(yùn)行,自動(dòng)采集溫度,速度等數(shù)據(jù)存入數(shù)據(jù)庫(kù)中并通過(guò)數(shù)據(jù)庫(kù)調(diào)用顯示。本系統(tǒng)總體設(shè)計(jì)圖為3-1所示。</p><p> 圖3-1智能小車(chē)系統(tǒng)總體設(shè)計(jì)框圖</p><p> 本文主要介紹上位機(jī)的數(shù)據(jù)接收模塊設(shè)計(jì)部分,其中主要內(nèi)容為VSPM模擬串口通信接收、Java連接數(shù)
47、據(jù)庫(kù)及導(dǎo)入數(shù)據(jù)庫(kù)和數(shù)據(jù)圖形界面顯示等部分。上位機(jī)通過(guò)無(wú)線串口傳輸模塊與下位機(jī)進(jìn)行通信連接,以上位機(jī)接收模塊進(jìn)行數(shù)據(jù)分析及存儲(chǔ),通過(guò)上位機(jī)控制模塊進(jìn)行數(shù)據(jù)調(diào)用及顯示,以此來(lái)實(shí)現(xiàn)對(duì)小車(chē)各個(gè)數(shù)據(jù)及狀態(tài)的檢測(cè)與控制。上位機(jī)接收模塊通過(guò)實(shí)現(xiàn)串口通信接收來(lái)自無(wú)線USB模塊的數(shù)據(jù)再把數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)分析存儲(chǔ),如圖3-2所示。</p><p> 圖3-2 上位機(jī)接收模塊框圖</p><p> 3.2
48、My SQL數(shù)據(jù)庫(kù)表設(shè)計(jì)</p><p> My SQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫(kù)服務(wù)器。本上位機(jī)系統(tǒng)安裝了mysql-5.5.19-win32至WIN7系統(tǒng)作為后臺(tái)數(shù)據(jù)庫(kù)運(yùn)行。安裝時(shí)設(shè)置密碼為123。輸入密碼后正式啟動(dòng)My SQL服務(wù),再在NeatBeans7.1.1上通過(guò)JDBC啟動(dòng)服務(wù)數(shù)據(jù)庫(kù)輸入My SQL安裝時(shí)設(shè)定的密碼123即可連接。</p><p> 3.2.1
49、創(chuàng)建數(shù)據(jù)庫(kù)表</p><p> ?。?)在MY SQL中輸入create database YJMS,創(chuàng)建數(shù)據(jù)庫(kù)YJMS,如圖3-3所示:</p><p> 圖3-3 創(chuàng)建數(shù)據(jù)庫(kù)YJMS</p><p> ?。?)在數(shù)據(jù)庫(kù)YJMS中創(chuàng)建數(shù)據(jù)表t1和數(shù)據(jù)表t2。</p><p> 創(chuàng)建t1表的Sql語(yǔ)句為:create table t1(t
50、1_number int(2) not null primary key auto_increment,hours date not null,direction int(4) not null,distance float not null);如圖3-4所示:</p><p> 圖3-4 創(chuàng)建t1表sql語(yǔ)句</p><p> 創(chuàng)建t2表的Sql語(yǔ)句為:create table t2
51、(t2_number int(2) not null, num int(2) not null, kind char(8) not null, much float not null, foreign key(num) references t1(number) on delete cascade on update cascade);如圖3-5所示:</p><p> 圖3-5 創(chuàng)建t2表sql語(yǔ)句</
52、p><p> 3.2.2表的結(jié)構(gòu)實(shí)驗(yàn)圖</p><p> 表的結(jié)構(gòu)實(shí)驗(yàn)圖如圖3-6和3-7所示:</p><p> 圖3-6 t1數(shù)據(jù)表結(jié)構(gòu)類(lèi)型</p><p> 圖3-7 t2數(shù)據(jù)表結(jié)構(gòu)類(lèi)型</p><p> 使用sql語(yǔ)句查看下t1,t2兩個(gè)表格的類(lèi)型,如圖3-8,3-9所示:</p>&l
53、t;p><b> 圖3-8 t1表</b></p><p><b> 圖3-9 t2表</b></p><p> 3.3java接收串口數(shù)據(jù)</p><p> 3.3.1VSPD虛擬串口通信的實(shí)現(xiàn)</p><p> 1)下載支持win7的虛擬串口VSPD(Configure Virt
54、ual Serial Port Driver)并運(yùn)行加載COM1和COM2兩個(gè)虛擬串口,設(shè)置其波特率,數(shù)據(jù)位等數(shù)值一致,如圖3-10所示:</p><p> 圖3-10 VSPD界面</p><p> 2)運(yùn)行串口調(diào)試助手V2.3設(shè)置COM1波特率為9600,校驗(yàn)位為None,數(shù)據(jù)位為8,停止位為One,進(jìn)行數(shù)據(jù)輸入并打開(kāi)串口進(jìn)行數(shù)據(jù)自動(dòng)發(fā)送,時(shí)間間隔為2000ms,各數(shù)據(jù)設(shè)置和Jav
55、a讀取串口數(shù)據(jù)代碼一致,并輸入數(shù)據(jù)。</p><p> 3)用調(diào)試助手V2.3對(duì)虛擬串口進(jìn)行調(diào)試,在COM1發(fā)送如下格式數(shù)據(jù)如圖3-11所示:</p><p> 圖3-11COM1發(fā)送數(shù)據(jù)</p><p> 4)則COM2接收到的數(shù)據(jù)如圖3-12所示:</p><p> 圖3-12 COM2接收數(shù)據(jù)</p><p&
56、gt; 3.3.2JAVA實(shí)時(shí)讀取串口數(shù)據(jù)</p><p> 安裝NeatBeans7.1.1前需安裝jdk1.6包,因在WIN7上安裝所以需設(shè)置環(huán)境變量。首先確定jdk和自己的系統(tǒng)一致:X86對(duì)應(yīng)32,X64對(duì)應(yīng)64。具體步驟為右鍵計(jì)算機(jī) ——> 屬性 ——> 左邊的“高級(jí)系統(tǒng)設(shè)置” ——> “高級(jí)”選項(xiàng)卡 ——> 下面“環(huán)境變量”,點(diǎn)擊系統(tǒng)變量->新建-> 變量名:JA
57、VA_HOME 。變量值:C:/Program Files/Java/jdk1.6.0_18。系統(tǒng)變量->編輯->(這個(gè)一般是有的)變量名:Path 在變量值的最前面加上: %JAVA_HOME%/bin; (注意符號(hào)) 粗體字內(nèi)容若已經(jīng)有Path項(xiàng)無(wú)須另外新建,直接在后面加,但需用;與前面已有的項(xiàng)分隔開(kāi)) 系統(tǒng)變量->新建->(這個(gè)要新建的) 變量名:CLASSPATH 變量值: .;%JAVA_HOME%/
58、lib;%JAVA_HOME%/lib/dt.jar;%JAVA_HOM E%/lib/tools.jar; (注意符號(hào))在運(yùn)行 java命令正常則為成功。</p><p> 1)在JavaApplication/classes下新建Java類(lèi)命名為SimpleRead.java。因?yàn)楸敬嗡\(yùn)行JAVA讀取串口數(shù)據(jù)源代碼中要運(yùn)用到j(luò)avax.commm包。所以從網(wǎng)上下載了javax.commm包,并將文件com
59、m.jar拷貝到%JAVA_HOME%\jre\lib\ext;文件 javax.comm. properties拷貝到%JAVA_HOME%\jre\lib; 文件win32comm.dll拷貝到%JAVA_HOME%\bin。注意%JAVA_HOME%是jdk的路徑,而非jre。在NeatBeans下對(duì)SimpleRead.java調(diào)試運(yùn)行,使得NeatBeans與COM2相連接接收來(lái)自COM1發(fā)送來(lái)的數(shù)據(jù),如圖3-13所示:<
60、;/p><p> 圖3-13 Java讀取串口數(shù)據(jù)</p><p> 2)其實(shí)現(xiàn)命令的主要代碼是:</p><p> import java.io.*;</p><p> import java.util.*;</p><p> import javax.comm.*;</p><p>
61、 public class SimpleRead implements Runnable, SerialPortEventListener {</p><p> static CommPortIdentifier portId;</p><p> static Enumeration portList;//枚舉類(lèi)</p><p> InputStream in
62、putStream;</p><p> SerialPort serialPort;</p><p> Thread readThread;</p><p> public static void main(String[] args) {</p><p> portList = CommPortIdentifier.getPortI
63、dentifiers();/*不帶參數(shù)的getPortIdentifiers方法獲得一個(gè)枚舉對(duì)象,該對(duì)象又包含了系統(tǒng)中管理每個(gè)端口的CommPortIdentifier對(duì)象。注意這里的端口不僅僅是指串口,也包括并口。這個(gè)方法還可以帶參數(shù)。getPortIdentifiers(CommPort)獲得與已經(jīng)被應(yīng)用程序打開(kāi)的端口相對(duì)應(yīng)的CommPortIdentifier對(duì)象。 getPortIdentifier(String portNam
64、e)獲取指定端口名(比如“COM1”)的CommPortIdentifier對(duì)象。*/</p><p> while (portList.hasMoreElements()) {</p><p> portId = (CommPortIdentifier) portList.nextElement();</p><p> if (portId.getPortT
65、ype() == CommPortIdentifier.PORT_SERIAL)/*getPortType方法返回端口類(lèi)型*/ {</p><p> if (portId.getName().equals("COM2"))/* 找Windows下的第一個(gè)串口*/ {</p><p> // if (portId.getName().equals("/de
66、v/term/a"))/*找Unix-like系統(tǒng)下的第一個(gè)串口*/ {</p><p> SimpleRead reader = new SimpleRead();</p><p><b> }</b></p><p><b> }</b></p><p><b> }
67、</b></p><p><b> }</b></p><p> public SimpleRead() {</p><p><b> try {</b></p><p> serialPort = (SerialPort) portId.open("SimpleRea
68、dApp", 2000);/* open方法打開(kāi)通訊端口,獲得一個(gè)CommPort對(duì)象。它使程序獨(dú)占端口。如果端口正被其他應(yīng)用程序占用,將使用 CommPortOwnershipListener事件機(jī)制,傳遞一個(gè)PORT_OWNERSHIP_REQUESTED事件。每個(gè)端口都關(guān)聯(lián)一個(gè) InputStream 何一個(gè)OutputStream。如果端口是用open方法打開(kāi)的,那么任何的getInputStream都將返回相同的數(shù)據(jù)
69、流對(duì)象,除非有close 被調(diào)用。有兩個(gè)參數(shù),第一個(gè)為應(yīng)用程序名;第二個(gè)參數(shù)是在端口打開(kāi)時(shí)阻塞等待的毫秒數(shù)。*/</p><p> } catch (PortInUseException e) {}</p><p><b> try {</b></p><p> inputStream = serialPort.getInputStrea
70、m();/*獲取端口的輸入流對(duì)象*/</p><p> } catch (IOException e) {}</p><p><b> try {</b></p><p> serialPort.addEventListener(this);/*注冊(cè)一個(gè)SerialPortEventListener事件來(lái)監(jiān)聽(tīng)串口事件*/</p>
71、;<p> } catch (TooManyListenersException e) {}</p><p> serialPort.notifyOnDataAvailable(true);/*數(shù)據(jù)可用*/</p><p><b> try {</b></p><p> serialPort.setSerialPortPa
72、rams(9600,</p><p> SerialPort.DATABITS_8,</p><p> SerialPort.STOPBITS_1,</p><p> SerialPort.PARITY_NONE);/*設(shè)置串口初始化參數(shù),依次是波特率,數(shù)據(jù)位,停止位和校驗(yàn)*/</p><p> } catch (Unsupporte
73、dCommOperationException e) {}</p><p> readThread = new Thread(this);</p><p> readThread.start();</p><p><b> }</b></p><p> public void run() {</p>
74、<p><b> try {</b></p><p> Thread.sleep(20000);</p><p> } catch (InterruptedException e) {}</p><p><b> }</b></p><p><b> //串口事件&l
75、t;/b></p><p> public void serialEvent(SerialPortEvent event) {</p><p> switch(event.getEventType()) {</p><p> case SerialPortEvent.BI:/*Break interrupt,通訊中斷*/</p><p
76、> case SerialPortEvent.OE:/*Overrun error,溢位錯(cuò)誤*/</p><p> case SerialPortEvent.FE:/*Framing error,傳幀錯(cuò)誤*/</p><p> case SerialPortEvent.PE:/*Parity error,校驗(yàn)錯(cuò)誤*/</p><p> case Ser
77、ialPortEvent.CD:/*Carrier detect,載波檢測(cè)*/</p><p> case SerialPortEvent.CTS:/*Clear to send,清除發(fā)送*/</p><p> case SerialPortEvent.DSR:/*Data set ready,數(shù)據(jù)設(shè)備就緒*/</p><p> case SerialPort
78、Event.RI:/*Ring indicator,響鈴指示*/</p><p> case SerialPortEvent.OUTPUT_BUFFER_EMPTY:/*Output buffer is empty,輸出緩沖區(qū)清空*/</p><p><b> break;</b></p><p> case SerialPortEven
79、t.DATA_AVAILABLE:/*Data available at the serial port,端口有可用數(shù)據(jù)。讀到緩沖數(shù)組,輸出到終端*/</p><p> byte[] readBuffer = new byte[20];</p><p><b> try {</b></p><p> while (inputStream.
80、available() > 0) {</p><p> int numBytes = inputStream.read(readBuffer);</p><p><b> }</b></p><p> System.out.print(new String(readBuffer));</p><p> }
81、catch (IOException e) {}</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&g
82、t; 3.4連接數(shù)據(jù)庫(kù)并導(dǎo)入數(shù)據(jù)</p><p> 3.4.1Java連接數(shù)據(jù)庫(kù)</p><p> Java數(shù)據(jù)庫(kù)連接(JDBC)由一組用Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成.JDBC為工具/數(shù)據(jù)庫(kù)開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,使他們能夠用純Java API來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序,JDBC是執(zhí)行SQL語(yǔ)句的Java,使用JDBC可以很容易的把SQL語(yǔ)句傳送到任何關(guān)系型數(shù)據(jù)庫(kù)中。JDBC
83、基本功能體現(xiàn)為建立與數(shù)據(jù)庫(kù)的連接,然后發(fā)送SQL語(yǔ),最后處理結(jié)果。Java 連接數(shù)據(jù)庫(kù)一般都是六步,以 My SQL 數(shù)據(jù)庫(kù)為例: </p><p> 1.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng) </p><p><b> try {</b></p><p> Class.forName("com.mysql.jdbc.Driver"); &
84、lt;/p><p> } catch (Exception e) { </p><p> e.printStackTrace();</p><p><b> } </b></p><p><b> 2.連接數(shù)據(jù)庫(kù) </b></p><p><b> try{
85、</b></p><p> conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/yjms","root","123");//獲得數(shù)據(jù)庫(kù)連接,用戶名,密碼,db數(shù)據(jù)庫(kù)名稱(chēng) </p><p> }catch(Exception e){ </p
86、><p> e.printStackTrace(); </p><p><b> } </b></p><p><b> 3.創(chuàng)建執(zhí)行語(yǔ)句 </b></p><p> Statement stmt=conn.createStatement(); </p><p> 3.
87、4.2導(dǎo)入數(shù)據(jù)庫(kù)表</p><p> 4.Sql語(yǔ)句:導(dǎo)入數(shù)據(jù)表t1相應(yīng)變量的數(shù)據(jù)。</p><p> String sql = ("insert into t1 (t1_number,hours,direction,distance) values("6","2012-03-08","50","50&qu
88、ot;)");</p><p><b> 5.返回結(jié)果。 </b></p><p> ResultSet rs=stmt.createStatement("select * from db.table"); </p><p><b> 6.處理結(jié)果 </b></p><
89、;p> while(rs.next()) {</p><p> rs.getString("username"); </p><p> rs.getString("password"); } </p><p> 7.關(guān)閉所有連接(先打開(kāi)的連接后關(guān)閉) </p><p> rs.close
90、(); </p><p> conn.close();</p><p> 經(jīng)過(guò)上面的了解,連接mysql數(shù)據(jù)庫(kù)localhost為3306 ,用戶名為root,密碼為123,可以得出連接數(shù)據(jù)庫(kù)并導(dǎo)入數(shù)據(jù)的具體代碼為:</p><p> public class JavaApplication1 {</p><p> private s
91、tatic String driver;</p><p> public static void main(String[] args) {</p><p> Connection conn = null; </p><p> Statement stmt = null; </p><p> ResultSet rs = null;&
92、lt;/p><p><b> try{</b></p><p> Class. forName("com.mysql.jdbc.Driver"); </p><p> conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/YJMS",
93、"root","123"); </p><p> stmt = (Statement) conn.createStatement();</p><p> String sql = ("insert into t1 (t1_number,hours,direction,distance) values("6""
94、;,"2012-03-08","50","50")"); </p><p> rs = stmt.executeQuery(sql); </p><p> while(rs.next()) </p><p> rs.close(); </p><p> conn.c
95、lose(); </p><p> } catch(Exception e) {</p><p> System.out.print(e); </p><p><b> }</b></p><p><b> }</b></p><p><b> }<
96、;/b></p><p> 在NetBeans IDE上新建java類(lèi)為javaapplication1.java,加載導(dǎo)入數(shù)據(jù)代碼,調(diào)試運(yùn)行文件。如圖3-14所示:</p><p> 圖3-14 導(dǎo)入數(shù)據(jù)成功</p><p> 3.5合并實(shí)現(xiàn)接收數(shù)據(jù)并存入數(shù)據(jù)庫(kù)</p><p> 將SimpleRead.java和JavaAp
97、plication1.java合成一個(gè)代碼DataReceive.java實(shí)現(xiàn)自動(dòng)接收并導(dǎo)入數(shù)據(jù)庫(kù)。合成的代碼如下:</p><p> while (inputStream.available() > 0) {</p><p> int numBytes = inputStream.read(readBuffer);</p><p> String ho
98、urs1="";</p><p> String direction="";</p><p> String distance="";</p><p> int numd=0;</p><p> String[][] a=null;</p><p>
99、 for(int j=0;j<numBytes;j++){</p><p><b> if(j<8){</b></p><p> hours1=hours1+Byte.toString(readBuffer[j]);</p><p><b> }</b></p><p><b
100、> else</b></p><p><b> {</b></p><p><b> if(j==8){</b></p><p> direction=Byte.toString(readBuffer[j]);</p><p><b> }</b>&
101、lt;/p><p><b> else</b></p><p><b> {</b></p><p><b> if(j==9){</b></p><p> distance=Byte.toString(readBuffer[j]);</p><p>
102、;<b> }</b></p><p><b> else{</b></p><p> if(j==10){</p><p> numd=Integer.parseInt(Byte.toString(readBuffer[j]));</p><p> a=new String[numd][
103、2];</p><p><b> }</b></p><p><b> else{</b></p><p> for(int k=0;k<numd;k++){</p><p> a[k][0]=Byte.toString(readBuffer[j]);</p><p
104、><b> j++;</b></p><p> a[k][1]=Byte.toString(readBuffer[j]);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&l
105、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> Connection conn = null; </p><p> Statement stmt = null;
106、</p><p> ResultSet rs = null;</p><p><b> try{</b></p><p> Class. forName("com.mysql.jdbc.Driver"); </p><p> conn=DriverManager.getConnection(&
107、quot;jdbc:mysql://localhost:3306/YJMS","root","123"); </p><p> stmt = (Statement) conn.createStatement();</p><p> String sql = "insert into t1 (t1_number,hours,di
108、rection,distance) values(8,'"+hours1+"',"+direction+","+distance+")"; </p><p> rs = stmt.executeQuery(sql); </p><p> rs.close(); </p><p>
109、; conn.close(); </p><p><b> } </b></p><p> catch(Exception e) {</p><p> System.out.print(e); </p><p><b> }</b></p><p><b&g
110、t; }</b></p><p><b> 4結(jié)論</b></p><p> 本設(shè)計(jì)方案按照任務(wù)書(shū)的要求通過(guò)上位機(jī)的接收模塊,上位機(jī)模塊為通過(guò)無(wú)線USB接收模塊采集到的信息在上位機(jī)上實(shí)時(shí)顯示,從而得到所需各項(xiàng)數(shù)據(jù)和小車(chē)運(yùn)行狀況。本上位機(jī)接收模塊通過(guò)Java驅(qū)動(dòng)串口通信方式接收無(wú)線收發(fā)模塊上采集的信息,并將其傳送到上住機(jī)(PC機(jī)),再通過(guò)Java程序?qū)?/p>
111、各項(xiàng)數(shù)據(jù)導(dǎo)入My SQL數(shù)據(jù)庫(kù)進(jìn)行分析存儲(chǔ)。</p><p> 經(jīng)過(guò)幾個(gè)月的努力,在不斷的尋找突破和程序調(diào)試下,本人設(shè)計(jì)的上位機(jī)接收模塊能實(shí)現(xiàn)VSPD虛擬串口通信,在NetBeans IDE上通過(guò)JAVA程序連接COM2讀取COM1接收到的數(shù)據(jù)并將接收到數(shù)據(jù)按格式導(dǎo)入到數(shù)據(jù)庫(kù)進(jìn)行分析存儲(chǔ)。</p><p> 在設(shè)計(jì)中我們遇到了很多問(wèn)題,但通過(guò)隊(duì)員們的團(tuán)結(jié)合作、認(rèn)真分析問(wèn)題,以及老師的認(rèn)
112、真輔導(dǎo),我們?cè)O(shè)計(jì)出來(lái)的小車(chē)已經(jīng)能夠達(dá)到設(shè)計(jì)要求。由于技術(shù)的有限,目前完成的上位機(jī)系統(tǒng)還存在有一些缺陷,希望在以后的工作中能進(jìn)一步完善。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]徐大勝.3-RSS/S踝關(guān)節(jié)康復(fù)機(jī)器人康復(fù)評(píng)價(jià)系統(tǒng)的研究[D].河北工業(yè)大學(xué),2009.</p><p> [2]謝鑫.船舶管路泄露實(shí)驗(yàn)
113、臺(tái)架的設(shè)計(jì)與實(shí)現(xiàn)[D].重慶交通大學(xué),2011.</p><p> [3]劉松靄等.?dāng)?shù)據(jù)庫(kù)應(yīng)用技術(shù)[J].教育界,2011.</p><p> [4]周虹.在Visual C++中用活動(dòng)數(shù)據(jù)對(duì)象(ADO)操縱數(shù)據(jù)庫(kù)[J].蘇州城建環(huán)保學(xué)院學(xué)報(bào),2001.</p><p> [5]熊鶯.Java分布式技術(shù)在公路工程建設(shè)管理系統(tǒng)中的研究與應(yīng)用[D].中國(guó)石油大學(xué)(
114、北京),2005.</p><p> [6]呂劍光.一種基于MVC模式的網(wǎng)吧實(shí)名制管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京大學(xué),2008.</p><p> [7]范逸之等.Visual Basic與RS-232串行通信控制[M].北京:北京航空航天大學(xué)出版社,2002.</p><p> [8]羅文鋒.基于LabVIEW與PLC的船舶電站監(jiān)控系統(tǒng)的研究[D].武漢理
115、工大學(xué),2009.</p><p> [9]詹永豐.軍隊(duì)士兵體質(zhì)評(píng)測(cè)支持系統(tǒng)[D].大連理工大學(xué),2005.</p><p> [10]陰璽.心電遠(yuǎn)程監(jiān)護(hù)系統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)與數(shù)據(jù)壓縮算法研究[D].重慶大學(xué),2007.</p><p> [11]百度百科. netbeans百科知識(shí)[EB/OL][2012-4-19]..</p><p&g
116、t; [12]百度百科. 串口調(diào)試助手百科知識(shí)[EB/OL][2012-4-19]..</p><p> [13]C.John,R.Hong.Dynamic Caching and ADO datasets.Dr.Dobb’s Journal,2004,29(12):86-89</p><p> [14]F.Alex,E.Natalia.Advanced Delphi Develop
117、er’s Guide to ADO.wordwaare publishing 2000:128-139</p><p> [15] JG John.OPtimi Zation of Control Parameters of GA.IEEE Transon SMC[J],1994,3,24(4):l~20.</p><p> 附錄1 源程序代碼</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于智能小車(chē)的信息采集系統(tǒng)-上位機(jī)數(shù)據(jù)接收模塊設(shè)計(jì)[開(kāi)題報(bào)告]
- 基于智能小車(chē)的信息采集系統(tǒng)-上位機(jī)數(shù)據(jù)接收模塊[文獻(xiàn)綜述]
- 基于智能小車(chē)的信息采集系統(tǒng)-上位機(jī)數(shù)據(jù)接收模塊設(shè)計(jì)[任務(wù)書(shū)]
- 基于智能小車(chē)的信息采集系統(tǒng)-控制單元模塊設(shè)計(jì)[畢業(yè)論文]
- 基于智能小車(chē)的信息采集系統(tǒng)-控制單元模塊設(shè)計(jì)[開(kāi)題報(bào)告]
- 基于單片機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的智能小車(chē)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的智能小車(chē)的設(shè)計(jì) 畢業(yè)論文
- 基于單片機(jī)的智能小車(chē)設(shè)計(jì)-電子信息工程畢業(yè)論文
- 基于單片機(jī)的智能小車(chē)的設(shè)計(jì)-畢業(yè)論文
- 基于單片機(jī)的智能小車(chē)設(shè)計(jì)-電子信息工程畢業(yè)論文
- 基于智能小車(chē)的信息采集系統(tǒng)-控制單元模塊設(shè)計(jì)[任務(wù)書(shū)]
- 基于單片機(jī)的智能循跡小車(chē)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的智能小車(chē)設(shè)計(jì)-畢業(yè)論文.doc
- 基于單片機(jī)的智能小車(chē)設(shè)計(jì)-畢業(yè)論文.doc
- 基于單片機(jī)的多路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的多功能智能小車(chē)設(shè)計(jì)-畢業(yè)論文
- 基于單片機(jī)的多路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的wifi智能小車(chē)畢業(yè)論文
- 基于單片機(jī)的智能避障小車(chē)設(shè)計(jì)【畢業(yè)論文】
評(píng)論
0/150
提交評(píng)論