版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 全站儀與計(jì)算機(jī)之間的數(shù)據(jù)通信是測(cè)量人員通常面對(duì)的問(wèn)題,涉及到全站儀內(nèi)存數(shù)據(jù)的正確下載、格式轉(zhuǎn)換和有效管理等。本文重點(diǎn)介紹了全站儀與計(jì)算機(jī)的數(shù)據(jù)通信概念、技術(shù)方法以及作為存儲(chǔ)介質(zhì)的數(shù)據(jù)庫(kù)和數(shù)據(jù)表設(shè)計(jì)。對(duì)于全站儀的通信方法、VB語(yǔ)言基礎(chǔ)和數(shù)據(jù)庫(kù)的相關(guān)知識(shí)進(jìn)行了綜述和分析,主要開(kāi)展了數(shù)據(jù)庫(kù)中數(shù)據(jù)表的創(chuàng)建、測(cè)后數(shù)據(jù)的有效提取和存儲(chǔ)
2、管理的編程實(shí)踐工作,采用Visual Basic語(yǔ)言的MSComm控件建立全站儀與計(jì)算機(jī)之間的串行端口的聯(lián)系,采用DAO數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)實(shí)現(xiàn)數(shù)據(jù)的有效存儲(chǔ),采用有效的字符串處理函數(shù)和文件讀寫(xiě)操作技術(shù)實(shí)現(xiàn)觀測(cè)數(shù)據(jù)的信息提取和格式轉(zhuǎn)換。通過(guò)對(duì)實(shí)測(cè)數(shù)據(jù)的轉(zhuǎn)換分析驗(yàn)證,所編程序能夠?qū)崿F(xiàn)全站儀數(shù)據(jù)的有效轉(zhuǎn)換與存儲(chǔ)。</p><p> 關(guān)鍵詞:數(shù)據(jù)通信,Visual Basic,MSComm,通信參數(shù), DAO</p&
3、gt;<p><b> Abstract</b></p><p> Total Station and data communication between computers is a measure of the problems for surveyors and are usually involved in the correct memory data to t
4、he total station download, format conversion and effective management. This paper focuses on the total station and computer data communication concepts, technology and methods as well as the storage medium of database an
5、d data table design. Method of communication for the total station, VB language based and database-related knowledge is summar</p><p> Keyword: Data communication, Visual Basic, MSComm, Communication parame
6、ters, DAO</p><p><b> 目 錄</b></p><p> 1 緒 論1</p><p> 1.1 研究目的和意義1</p><p> 1.2 研究現(xiàn)狀分析1</p><p> 1.3 本論文的主要內(nèi)容3</p><p&
7、gt; 2 全站儀與計(jì)算機(jī)的數(shù)據(jù)通信基本知識(shí)5</p><p> 2.1 通信形式5</p><p> 2.2 通信參數(shù)8</p><p> 2.3 RS-232標(biāo)準(zhǔn)10</p><p> 2.4 全站儀的數(shù)據(jù)記錄格式11</p><p> 3 軟件構(gòu)建語(yǔ)言15</p>
8、<p> 3.1 VB語(yǔ)言基礎(chǔ)15</p><p> 3.2 MSComm控件17</p><p><b> 4 數(shù)據(jù)庫(kù)21</b></p><p> 4.1 Access數(shù)據(jù)庫(kù)簡(jiǎn)介21</p><p> 4.2 數(shù)據(jù)訪問(wèn)對(duì)象DAO22</p><p>
9、 5 通信程序設(shè)計(jì)26</p><p> 5.1 程序模塊設(shè)計(jì)26</p><p> 5.2 數(shù)據(jù)流程29</p><p><b> 6 后記36</b></p><p><b> 參考文獻(xiàn)37</b></p><p> 附錄(英文原文)39&l
10、t;/p><p><b> 中文翻譯54</b></p><p><b> 1 緒 論</b></p><p> 1.1 研究目的和意義</p><p> 目前全站儀的使用是越來(lái)越普及,從測(cè)量中對(duì)經(jīng)緯儀的替代,到數(shù)字化成圖過(guò)程中的野外數(shù)據(jù)采集,再到各種工程的變形監(jiān)測(cè),全站儀都在發(fā)揮它的
11、作用。眾所周知全站儀有多種型號(hào),比如拓普康、徠卡、索佳等等。每一款全站儀都有自己的數(shù)據(jù)傳輸軟件,每款全站儀的輸出數(shù)據(jù)格式各不相同,因此在日常工作中運(yùn)用多種型號(hào)全站儀時(shí),不同的數(shù)據(jù)格式會(huì)給測(cè)繪工作者的數(shù)據(jù)處理工作帶來(lái)很多的不便。</p><p> Visual Basic程序設(shè)計(jì)語(yǔ)言是測(cè)繪專(zhuān)業(yè)在本科階段學(xué)習(xí)的程序語(yǔ)言。我們通過(guò)對(duì)本科學(xué)習(xí)階段程序設(shè)計(jì)語(yǔ)言的總結(jié),來(lái)進(jìn)行本次課題研究。本次課題研究是利用Visual B
12、asic的MSComm控件來(lái)進(jìn)行全站儀和計(jì)算機(jī)的聯(lián)機(jī)測(cè)量工作。MSComm控件通過(guò)串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。通過(guò)MSComm控件可完成計(jì)算機(jī)和全站儀之間的數(shù)據(jù)通信,包括計(jì)算機(jī)向全站儀發(fā)出指令和接收全站儀的信號(hào)(狀態(tài)及觀測(cè)結(jié)果)。</p><p> 本次課題利用Visual Basic設(shè)計(jì)一款可接收多種類(lèi)型全站儀的數(shù)據(jù)程序軟件,并對(duì)觀測(cè)數(shù)據(jù)實(shí)施有效的管理。簡(jiǎn)單的講是計(jì)算機(jī)接受全站儀數(shù)據(jù)傳
13、輸,建立獨(dú)立的數(shù)據(jù)庫(kù),通過(guò)DAO訪問(wèn)Access數(shù)據(jù)庫(kù),利用MSComm控件的功能設(shè)計(jì)能接收和傳輸全站儀數(shù)據(jù)的軟件。實(shí)現(xiàn)對(duì)全站儀觀測(cè)數(shù)據(jù)的實(shí)時(shí)而有效的管理,為后續(xù)的開(kāi)發(fā)各類(lèi)聯(lián)機(jī)測(cè)量程序提供技術(shù)支持。</p><p> 1.2 研究現(xiàn)狀分析</p><p> 全站儀的發(fā)展經(jīng)歷了從組合式即光電測(cè)距儀與光學(xué)經(jīng)緯儀組合,到整體式,即將光電測(cè)距儀光波發(fā)射接收系統(tǒng)的光軸和經(jīng)緯儀視準(zhǔn)軸組合為同軸全
14、站儀等幾個(gè)階段。由于全站儀集測(cè)角、測(cè)距和數(shù)據(jù)處理于一體,因而具有觀測(cè)數(shù)據(jù)直觀、數(shù)據(jù)處理簡(jiǎn)單、操作方便、精度高等許多優(yōu)點(diǎn),以致在測(cè)繪行業(yè)日益普及,特別是隨著帶伺服電機(jī)驅(qū)動(dòng)的全站儀的出現(xiàn)(如瑞典的AGA公司生產(chǎn)的540SA,GMT600S,瑞士Leica公司的TCA系列、TCM系列型號(hào)等),更加拓寬了全站儀的應(yīng)用范圍。</p><p> 全站儀的發(fā)展帶動(dòng)了測(cè)繪行業(yè)整體的發(fā)展,尤其是在與計(jì)算機(jī)通信方面有了長(zhǎng)足的進(jìn)步,
15、同時(shí)也產(chǎn)生了許多新技術(shù)。采用Visual Basic語(yǔ)言編制相應(yīng)的數(shù)據(jù)采集和解算軟件,利用ActiveX控件MSComm開(kāi)發(fā)出使用計(jì)算機(jī)串口的通信程序。在全站儀和計(jì)算機(jī)數(shù)據(jù)通信的技術(shù)處理方面,我國(guó)的科研工作者做了大量而豐富的工作。</p><p> 中南工業(yè)大學(xué)的劉興權(quán)認(rèn)真研究了計(jì)算機(jī)和全站儀之間進(jìn)行數(shù)據(jù)通訊的關(guān)鍵技術(shù)。他采用捷創(chuàng)力GDM500系列全站儀并用Visual Basic程序設(shè)計(jì)語(yǔ)言編寫(xiě)了關(guān)鍵的源程序
16、代碼。并且指明計(jì)算機(jī)和全站儀的數(shù)據(jù)通信,涉及到全站儀的句法結(jié)構(gòu),不同的全站儀,其句法結(jié)構(gòu)不同。因而在通過(guò)MSComm控件的Output屬性向全站儀發(fā)出指令時(shí),指令格式串是不同的,但原理是一樣的。只要知道了具體的句法結(jié)構(gòu)(通過(guò)查看隨儀器提供的數(shù)據(jù)通訊手冊(cè)即可知曉),稍加變動(dòng),編寫(xiě)源代碼即可作用于其它全站儀。全站儀和計(jì)算機(jī)之間的通信技術(shù)不僅用于自動(dòng)監(jiān)測(cè)系統(tǒng)的建立,也可用于需要從全站儀獲取數(shù)據(jù)的其它任何場(chǎng)所。</p><p
17、> 另外,桂林工學(xué)院的廖中平,唐詩(shī)華借助微功率RF收發(fā)芯片技術(shù),在Windows環(huán)境下利用Visual Basic 6.0編程工具,通過(guò)引用MSComm串行通信控件及編程,實(shí)現(xiàn)了全站儀與計(jì)算機(jī)之間的無(wú)線數(shù)據(jù)通信。并介紹了無(wú)線數(shù)傳模塊的特點(diǎn),以及有線數(shù)據(jù)通信方式與無(wú)線數(shù)據(jù)通信方式的區(qū)別,給出了編寫(xiě)的通信程序的部分源代碼。國(guó)防科技大學(xué)的封孝生,朱申德闡述了擬SC口匆材控件的特性和方法在VB6.O中的應(yīng)用技巧,介紹此控件在字符串或二進(jìn)
18、制數(shù)據(jù)兩種工作方式下,如何進(jìn)行發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)0~255之間任意字節(jié)數(shù)據(jù)的傳輸。</p><p> 軍械工程學(xué)院的殷軍輝,鄭堅(jiān)認(rèn)為串行通信是一種使用相當(dāng)廣泛的通信方式。他們研究了一種實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng),利用AT89C51單片機(jī)以及MSComm通信控件進(jìn)行信號(hào)采集和數(shù)據(jù)接收,并且給出了數(shù)據(jù)接收處理程序的源代碼及詳細(xì)注釋。該方案簡(jiǎn)單實(shí)用、成本較低、可靠性高,在多串口實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng)中得到成功應(yīng)用。<
19、/p><p> 結(jié)合前人的工作成果,我進(jìn)行了本次論文的寫(xiě)作。</p><p> 1.3 本論文的主要內(nèi)容</p><p> 全站儀傳輸出來(lái)的數(shù)據(jù)格式混亂,為了進(jìn)行更方便的數(shù)據(jù)操作,需要把實(shí)時(shí)測(cè)量出來(lái)的數(shù)據(jù)存入到數(shù)據(jù)庫(kù)中,而人工的從傳輸數(shù)據(jù)中截取數(shù)據(jù)很繁瑣,也很容易出現(xiàn)錯(cuò)誤。而VB 是Microsoft公司推出的基于Windows的可視化編程語(yǔ)言,它采用面向?qū)ο蟆?/p>
20、事件驅(qū)動(dòng)的程序設(shè)計(jì)方法,界面友好,操作簡(jiǎn)便,因此倍受程序設(shè)計(jì)人員的青睞。在Windows下用Visible Basic 6.0 編寫(xiě)了這個(gè)數(shù)據(jù)傳輸程序。</p><p> 本次論文的編寫(xiě)將圍繞全站儀的數(shù)據(jù)傳輸展開(kāi)。以下是各章節(jié)的內(nèi)容</p><p> 第1章簡(jiǎn)要介紹本次論文的主要內(nèi)容、目的和意義。</p><p> 第2章介紹全站儀的通信方式,詳細(xì)的介紹串行通
21、信和并行通信,</p><p> 及兩者之間的區(qū)別,并比較出串行通信的優(yōu)點(diǎn)。并同時(shí)介紹通信參數(shù),多個(gè)通信參數(shù)的介紹。</p><p> 第3章全面介紹全站儀通信傳輸程序中的重要控件——MSComm控件,基于MSComm控件在傳輸軟件中的必要性,我會(huì)單獨(dú)拿出這一章來(lái)進(jìn)行全面介紹,MSComm控件的屬性,事件,方法以及它在軟件中的作用,并會(huì)對(duì)VB語(yǔ)言進(jìn)行簡(jiǎn)單的介紹。</p>
22、<p> 數(shù)據(jù)傳輸完畢之后,對(duì)于數(shù)據(jù)的存儲(chǔ)和管理是十分重要的,因此在第4章里面,我會(huì)詳細(xì)介紹數(shù)據(jù)庫(kù)的相關(guān)內(nèi)容,包括關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn),數(shù)據(jù)庫(kù)中數(shù)據(jù)表的設(shè)計(jì)和創(chuàng)建以及對(duì)于數(shù)據(jù)訪問(wèn)對(duì)象DAO的介紹。</p><p> 第5章作為本次程序設(shè)計(jì)的主要內(nèi)容,程序的編寫(xiě)和修改是本次論文的主要工作,在這一章里我會(huì)詳細(xì)介紹這款軟件的使用方法,以及編寫(xiě)的程序代碼。并在其中演示數(shù)據(jù)轉(zhuǎn)換的過(guò)程和界面。</p>
23、<p> 2 全站儀與計(jì)算機(jī)的數(shù)據(jù)通信基本知識(shí)</p><p><b> 2.1 通信形式</b></p><p> 計(jì)算機(jī)通信是一種以數(shù)據(jù)通信形式出現(xiàn),在計(jì)算機(jī)與計(jì)算機(jī)之間或計(jì)算機(jī)與終端設(shè)備之間進(jìn)行信息傳遞的方式。不同的獨(dú)立系統(tǒng)利用線路互相交換數(shù)據(jù)便是通信,而構(gòu)成整個(gè)通信的線路成為網(wǎng)絡(luò)。交換信息的系統(tǒng)若為計(jì)算機(jī)系統(tǒng),則稱(chēng)為計(jì)算機(jī)網(wǎng)絡(luò)通信。一個(gè)完
24、整的通信系統(tǒng)包括發(fā)送端、接收端、轉(zhuǎn)換數(shù)據(jù)的接口及發(fā)送數(shù)據(jù)的實(shí)際信道或媒體。</p><p> 隨著計(jì)算機(jī)網(wǎng)絡(luò)化和微機(jī)分級(jí)分布式應(yīng)用系統(tǒng)的發(fā)展,通信的功能越來(lái)越重要。通信是指計(jì)算機(jī)與外界的信息傳輸,既包括計(jì)算機(jī)與計(jì)算機(jī)之間的傳輸,也包括計(jì)算機(jī)與外部設(shè)備,如終端、打印機(jī)和磁盤(pán)等設(shè)備之間的傳輸。在進(jìn)行介紹全站儀與計(jì)算機(jī)的數(shù)據(jù)通信之前,首先介紹一下計(jì)算機(jī)的兩種通信方式:并行通信和串行通信。</p><
25、;p> 2.1.1 并行通信</p><p> 在計(jì)算機(jī)和終端之間的數(shù)據(jù)傳輸通常是靠電纜或信道上的電流或電壓變化實(shí)現(xiàn)的。如果一組數(shù)據(jù)的各數(shù)據(jù)位在多條線上同時(shí)被傳輸,這種傳輸方式稱(chēng)為并行通信。 </p><p> 并行數(shù)據(jù)傳輸?shù)奶攸c(diǎn):各數(shù)據(jù)位同時(shí)傳輸,傳輸速度快、效率高,多用在實(shí)時(shí)、快速的場(chǎng)合。并行傳輸?shù)臄?shù)據(jù)寬度可以是1~128位,甚至更寬,但是有多少數(shù)據(jù)位就需要多少根數(shù)據(jù)線,因
26、此傳輸?shù)某杀据^高。在集成電路芯片的內(nèi)部、同一插件板上各部件之間、同一機(jī)箱內(nèi)個(gè)插件板之間的數(shù)據(jù)傳輸都是并行的。 以計(jì)算機(jī)的字長(zhǎng),通常是8位、16位或32位為傳輸單位,一次傳送一個(gè)字長(zhǎng)的數(shù)據(jù)適合于外部設(shè)備與微機(jī)之間進(jìn)行近距離、大量和快速的信息交換。并行數(shù)據(jù)傳輸只適用于近距離的通信,通常傳輸距離小于30米。并行通信很容易因線路的因素而使標(biāo)準(zhǔn)電位發(fā)生變化(常見(jiàn)的是電壓衰減問(wèn)題及信號(hào)間的互相串音干擾使得傳輸?shù)臄?shù)據(jù)發(fā)生錯(cuò)誤)。 </p>
27、<p> 2.1.2 串行通信</p><p> 串行通信是指使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別使用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。使用串口通信時(shí),發(fā)送和接收到的每一個(gè)字符實(shí)際上都是一次一位的傳送的,每一位為1或者為0。串行通信一次只處理一個(gè)標(biāo)準(zhǔn)電位,不容易把數(shù)據(jù)漏失,再加上一些防范措施,要遺
28、漏就更不容易了。</p><p> 串行通信分為兩類(lèi):同步通信和異步通信。</p><p> 同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個(gè)數(shù)據(jù)字符。它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符(CRC)組成。其中同步字符位于幀開(kāi)頭,用于確認(rèn)數(shù)據(jù)字符的開(kāi)始。數(shù)據(jù)字符在同步字符之后,個(gè)數(shù)沒(méi)有限制,由所需傳輸?shù)臄?shù)據(jù)塊長(zhǎng)度來(lái)決定
29、;校驗(yàn)字符有1到2個(gè),用于接收端對(duì)接收到的字符序列進(jìn)行正確性的校驗(yàn)。同步通信的缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格的同步。</p><p> 異步通信中,在異步通行中有兩個(gè)比較重要的指標(biāo):字符幀格式和波特率。數(shù)據(jù)通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過(guò)傳輸線被接收設(shè)備逐幀接收。發(fā)送端和接收端可以由各自的時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。 接收端檢測(cè)到傳輸線上
30、發(fā)送過(guò)來(lái)的低電平邏輯"0"(即字符幀起始位)時(shí),確定發(fā)送端已開(kāi)始發(fā)送數(shù)據(jù),每當(dāng)接收端收到字符幀中的停止位時(shí),就知道一幀字符已經(jīng)發(fā)送完畢。</p><p> 雖然串行通信與并行通信速度有差距,但是并行通信很容易因線路的因素而使標(biāo)準(zhǔn)電位發(fā)生變化(常見(jiàn)的是電壓衰減問(wèn)題及信號(hào)間的互相串音干擾使得傳輸?shù)臄?shù)據(jù)發(fā)生錯(cuò)誤)。而串行通信一次只處理一個(gè)標(biāo)準(zhǔn)電位,不容易把數(shù)據(jù)漏失,再加上一些防范措施,要遺漏就更不
31、容易了。所以一般采用串行通信。</p><p> 2.1.3 全站儀與計(jì)算機(jī)的通信形式</p><p> 全站儀的的數(shù)據(jù)通信是指全站儀與電子計(jì)算機(jī)之間進(jìn)行的雙向數(shù)據(jù)交換。全站儀與計(jì)算機(jī)之間的數(shù)據(jù)通信的方式主要有兩種,一種是利用全站儀配置的PCMCIA卡(簡(jiǎn)稱(chēng)PC卡,也稱(chēng)存儲(chǔ)卡)進(jìn)行數(shù)字通信,特點(diǎn)是通用性強(qiáng),各種電子產(chǎn)品間均可互換使用;另一種是利用全站儀的通信接口,通過(guò)電纜進(jìn)行數(shù)據(jù)傳輸。
32、</p><p> 現(xiàn)在普遍的做法是,全站儀與計(jì)算機(jī)的通信通過(guò)有線的數(shù)據(jù)連接裝置,將全站儀與計(jì)算機(jī)聯(lián)機(jī)在一起。在通信的過(guò)程中,計(jì)算機(jī)的通信參數(shù)與全站儀的通信參數(shù)應(yīng)該保持一致,來(lái)保持通信的有效的進(jìn)行。有線方式程序化控制數(shù)據(jù)處理設(shè)備與全站儀之間的數(shù)據(jù)通信,它的優(yōu)點(diǎn)是避免了人工數(shù)據(jù)記錄與處理當(dāng)中所帶來(lái)的測(cè)量粗差(如口讀、筆記和手工輸入數(shù)據(jù)時(shí),產(chǎn)生的讀錯(cuò)、計(jì)錯(cuò)和敲錯(cuò)數(shù)據(jù)等因素)等問(wèn)題,使得野外數(shù)據(jù)處理程序化、自動(dòng)化,但
33、這種數(shù)據(jù)傳輸方式仍存在較多不足之處。一方面,有線傳輸易受距離限制,其通信方式將數(shù)據(jù)處理設(shè)備和操作數(shù)據(jù)人員限制于測(cè)站旁,而不能實(shí)時(shí)、實(shí)地抵達(dá)鏡站測(cè)點(diǎn)附近,了解測(cè)點(diǎn)周?chē)畔ⅲ涣硪环矫?,在?dāng)今普遍開(kāi)展的數(shù)字化測(cè)圖工作中,數(shù)據(jù)處理工作往往需結(jié)合測(cè)點(diǎn)實(shí)地情況而進(jìn)行相關(guān)繪圖處理。在這種情況下,常規(guī)有線數(shù)據(jù)傳送方式只有借助在鏡站繪制草圖等相應(yīng)辦法加以解決。一般的全站儀都是用的RS-232串行通信。隨著科技的發(fā)展無(wú)線通信方式應(yīng)運(yùn)而生,但是現(xiàn)在應(yīng)用不是很
34、普遍,本次課題不予討論。</p><p><b> 2.2 通信參數(shù)</b></p><p> 計(jì)算機(jī)與全站儀的數(shù)據(jù)通信是一種數(shù)據(jù)交換,為了可以進(jìn)行通信,雙方必須要遵守一定的通信規(guī)則,這個(gè)共同的規(guī)則就是通信端口的初始化。</p><p> 通信端口的初始化有以下幾項(xiàng)必須設(shè)置:</p><p> 2.2.1 數(shù)據(jù)
35、的傳輸?shù)乃俣取ㄌ芈?BaudRate)</p><p> 它所代表的意義是每秒鐘所能產(chǎn)生的最大電壓狀態(tài)改變率(也就是一秒鐘可以震蕩的次數(shù))。串行通信的傳輸受通信雙方設(shè)備性能和通信線路的特性限制,通常我們將傳輸速度稱(chēng)為bps,指的是每秒鐘所發(fā)送的位數(shù)(bit per second)。就儀器或工業(yè)場(chǎng)合來(lái)說(shuō),9600bps是最常見(jiàn)的傳輸速度,現(xiàn)在的個(gè)人計(jì)算機(jī)所提供的串行端口的傳輸速度都可以達(dá)到115 200bps
36、(甚至可達(dá)921 600bps),若傳輸距離較近而設(shè)備也提供時(shí),使用最高的傳輸速度也可以。蔡司ZEISS-EltaC20A的波特率則非常高,為115200bps,選擇過(guò)低則會(huì)出現(xiàn)亂碼。所以相應(yīng)的計(jì)算機(jī)也要選擇115200bps。</p><p> 2.2.2 數(shù)據(jù)的發(fā)送單位——數(shù)據(jù)位(DataBit)</p><p> 一般串行通信端口所發(fā)送的數(shù)據(jù)是字符類(lèi)型的,若用來(lái)傳輸文件,則會(huì)是用
37、二進(jìn)制的數(shù)據(jù)類(lèi)型。當(dāng)使用字符類(lèi)型時(shí),工業(yè)界使用到的ASCII碼和JIS碼;ASCII碼8個(gè)位形成一個(gè)字符,而JIS碼則以7個(gè)位形成一個(gè)字符;我們可以發(fā)現(xiàn),歐美的設(shè)備多使用8 個(gè)位的數(shù)據(jù)組,而日本的設(shè)備則多使用7個(gè)位作為一個(gè)數(shù)據(jù)組。以實(shí)際的RS-232傳輸來(lái)看,由于工業(yè)界常使用的PLC大多只是發(fā)送文字碼,因此只要7個(gè)位九可以將ASCII碼的0-127號(hào)字符表達(dá)出來(lái)(=128,共有128種組合方式),所有的可見(jiàn)字符都落在這個(gè)范圍內(nèi),所以只要
38、7個(gè)數(shù)據(jù)位就夠了。不同的情況下(根據(jù)所使用的協(xié)議不同),會(huì)使用到不同的發(fā)送單位。使用了多少個(gè)位合成一個(gè)字節(jié)必須先行確定。在使用儀器聯(lián)機(jī)控制的場(chǎng)合中,歐美的儀器就常是用8個(gè)位表示一個(gè)字節(jié),日本則是常使用7個(gè)位表示一個(gè)字節(jié)。</p><p> 2.2.3 起始位及停止位(StopBit)</p><p> 由于異步串行傳輸中并沒(méi)有使用同步時(shí)作為基準(zhǔn),故接收端完全不知道發(fā)送端何時(shí)將進(jìn)行數(shù)據(jù)的
39、發(fā)送,而當(dāng)發(fā)送端準(zhǔn)備要開(kāi)始發(fā)送數(shù)據(jù)時(shí),發(fā)送端會(huì)在所送出的字符前后分別加上高電位的起始位(邏輯0)及低電位的停止位(邏輯1),它們分別是所謂的起始位和停止位,也就是說(shuō),當(dāng)發(fā)送端要開(kāi)始發(fā)送數(shù)據(jù)時(shí),便將傳輸在線的電位由低電位提升至高電位,而當(dāng)發(fā)送結(jié)束后,再將電位降至低電位。接收端會(huì)因起始位的觸發(fā)(因電壓由低電位升至高電位)而開(kāi)始接收數(shù)據(jù);并因停止位的通知(因電壓維持在低電位)而確切數(shù)據(jù)的字符信號(hào)已經(jīng)結(jié)束;當(dāng)加入了起始位及停止位也才比較容易達(dá)到
40、多字符的接收能力。起始位固定為1個(gè)位,而停止位則有1和1.5及2個(gè)位等多種選擇,只要通信雙方協(xié)議通過(guò)即可。</p><p> 2.2.4 校驗(yàn)位(Parity)的檢查</p><p> 為了預(yù)防錯(cuò)誤的產(chǎn)生,因此使用校驗(yàn)位作為檢查的機(jī)制;校驗(yàn)位用來(lái)檢查所發(fā)送數(shù)據(jù)正確性的一種核對(duì)碼,其中又分為奇校驗(yàn)位(Odd Parity)和偶校驗(yàn)位(Even Parity)兩種方式,分別是檢查字符碼中1
41、的樹(shù)木是奇數(shù)或偶數(shù)。以偶校驗(yàn)位為例,A的ASCII碼是41H(十六進(jìn)制),將它以二進(jìn)制表示時(shí),是01000001。其中1的數(shù)目是兩個(gè),因此校驗(yàn)位便是0,使1的數(shù)目保持偶數(shù)。同樣,校驗(yàn)位是奇校驗(yàn)位時(shí),A的校驗(yàn)位便是1,使1的數(shù)目保持奇數(shù),傳輸時(shí)候的數(shù)據(jù)格式是:</p><p> 起始位+發(fā)送字符+校驗(yàn)位+停止位</p><p> 因此,假設(shè)在傳輸時(shí)使用了1個(gè)起始位、發(fā)送字符為8個(gè)位、1個(gè)
42、停止位,不使用校驗(yàn)位檢查,這時(shí)每次所傳輸?shù)臄?shù)據(jù)格式如下:</p><p> 1個(gè)起始位+8個(gè)數(shù)據(jù)位+0個(gè)校驗(yàn)位-1個(gè)停止位</p><p> 總共有10個(gè)位,所以此時(shí)最小的傳輸單元是以10位為單位。</p><p> 2.3 RS-232標(biāo)準(zhǔn)</p><p> 常見(jiàn)的串行通信有兩種,一種為RS-232串行通信,另一種為RS-485串
43、行通信,一般的全站儀都是用的RS-232串行通信,所以下面介紹RS-232串行通信。</p><p> 串行通信端口(Serial Communication Port)在系統(tǒng)控制的范疇中一直占據(jù)著極其重要的地位,現(xiàn)在串行通信端口(RS-232)是計(jì)算機(jī)的標(biāo)準(zhǔn)配置,用途則以連接調(diào)制解調(diào)器來(lái)傳輸數(shù)據(jù)最為常見(jiàn)。</p><p> RS-232串行通信端口是每臺(tái)計(jì)算機(jī)上的必要配備,通常有Co
44、m1與Com2兩個(gè)端口,一般的計(jì)算機(jī)將Com1端口以9引腳的接頭接出,而以25引腳的接頭將Com2端口接出,新一代的計(jì)算機(jī)均以9引腳的接頭接出所有的RS-232通信端口。</p><p><b> 引腳意義及方向</b></p><p> 串行通信可以分為同步(Synchronous)及異步(Asynchronous)兩種模式。同步在通信的兩端是用同步信號(hào)作為通信
45、的依據(jù),而異步則是用起始位(Start Bit)及停止位(Stop Bit)作為通信的判斷?,F(xiàn)在則是以使用異步傳輸較多。異步傳輸只要9支引腳就夠了;如果要采用同步傳輸則需要25支引腳。</p><p> 表2-1 引腳編號(hào)及意義</p><p> 表2-2 RS-232引腳方向及意義</p><p> 2.4 全站儀的數(shù)據(jù)記錄格式</p>
46、<p> 對(duì)于全站儀而言,數(shù)據(jù)格式是指內(nèi)存數(shù)據(jù)中測(cè)量信息(水平角、天頂據(jù)、距離及觀測(cè)值形式、儀器型號(hào)、索引號(hào)等等)的組織形式。不同品牌的測(cè)量?jī)x器一般都具有其特有的數(shù)據(jù)格式,如Leica系列的全站儀和電子經(jīng)緯儀采用的是GSI數(shù)據(jù)格式,Zeiss系列全站儀采用的是M5數(shù)據(jù)格式,索佳SET-2100系列全站儀內(nèi)存的觀測(cè)數(shù)據(jù)和坐標(biāo)文件以SDR33的格式存儲(chǔ)等。在這里我會(huì)介紹徠卡,蔡司和尼康三種全站儀的數(shù)據(jù)格式,對(duì)于第五章的程序的編寫(xiě)
47、進(jìn)行鋪墊。</p><p> 2.4.1 徠卡系列全站儀的GSI數(shù)據(jù)格式</p><p> 徠卡所有測(cè)量?jī)x器均采用GSI(Geo Serial Interface,串行接口)數(shù)據(jù)格式結(jié)構(gòu),它是由字索引+測(cè)量數(shù)據(jù)構(gòu)成一個(gè)測(cè)量數(shù)據(jù)塊,一行記錄由一個(gè)或多個(gè)數(shù)據(jù)塊組成。徠卡的數(shù)據(jù)格式十分有規(guī)則,對(duì)于程序設(shè)計(jì)選取有用的數(shù)據(jù)信息,其數(shù)據(jù)格式如表2-3所示</p><p>
48、 表2-3 徠卡數(shù)據(jù)格式</p><p> 2.4.2 蔡司全站儀M5數(shù)據(jù)格式</p><p> 蔡司數(shù)據(jù)格式十分標(biāo)準(zhǔn),蔡司儀器傳輸?shù)母袷绞潜容^規(guī)則的,下面的數(shù)據(jù)是截取全站儀的數(shù)據(jù),摘錄如下</p><p> For M5|Adr 3|PI1 0002 | |Hz
49、 157.37567 DMS |V1 91.12339 DMS | </p><p> For M5|Adr 4|PI1 0003 | |Hz 130.23168 DMS |V1 91.12425 DMS |</p><p> 如上數(shù)據(jù),可以看出,數(shù)據(jù)行
50、以分隔符“|”劃分為5個(gè)數(shù)據(jù)塊,這是Zeiss M5數(shù)據(jù)格式的標(biāo)示符:“Adr”表示數(shù)據(jù)記錄的開(kāi)始:“PI1”表示當(dāng)前記錄的是某點(diǎn)的測(cè)量數(shù)據(jù),其后是測(cè)量點(diǎn)的點(diǎn)號(hào)(還有其它標(biāo)示符,如注釋信息TI、TO等)“Hz”和“V1”自然分別表示水平方向值和天頂距,而“DMS”則表示數(shù)據(jù)記錄的單位是“度分秒”。</p><p> 2.4.3 尼康數(shù)據(jù)格式</p><p> 尼康原始記錄格式,雖然不是
51、十分規(guī)整,但格式還是有規(guī)律可循的其記錄格式如下</p><p><b> 坐標(biāo)記錄控制點(diǎn)記錄</b></p><p> 類(lèi)型 以下代碼:</p><p> UP 上傳點(diǎn)</p><p> MP 人工輸入點(diǎn)</p><p> CC 已計(jì)
52、算坐標(biāo)</p><p> RE 后方交會(huì)點(diǎn)</p><p> pt 點(diǎn)編號(hào)</p><p> (pt id) (點(diǎn)識(shí)別碼)</p><p> 北向 北向坐標(biāo)</p><p> 東向 東向坐標(biāo)</p><p> 高程 高
53、程坐標(biāo)</p><p> 代碼 要素代碼</p><p><b> 測(cè)站記錄</b></p><p> ST 測(cè)站記錄識(shí)別碼 (固定文字)</p><p> stnpt 測(cè)站點(diǎn)編號(hào)</p><p> (stn id)
54、 (測(cè)站識(shí)別碼)</p><p> bspt 后視點(diǎn)編號(hào)</p><p> (bs id) (后視識(shí)別碼)</p><p> hi 儀器高度</p><p> bsazim 后視方位角</p>&
55、lt;p> bsha 后視水平角度</p><p><b> 控制點(diǎn)記錄</b></p><p> CP 控制點(diǎn)記錄識(shí)別碼 (固定文字)</p><p> pt 點(diǎn)編號(hào)</p><p> (pt id)
56、 (點(diǎn)識(shí)別碼)</p><p> ht 目標(biāo)高度</p><p> sd 斜距</p><p> ha 水平角度</p><p> va 垂直角度</p><p> 時(shí)間 24小
57、時(shí)時(shí)間標(biāo)記</p><p> 代碼 要素代碼</p><p><b> ......</b></p><p><b> 3 軟件構(gòu)建語(yǔ)言</b></p><p> 3.1 VB語(yǔ)言基礎(chǔ)</p><p> Visual Basic 是基于Wi
58、ndows 的可視化編程語(yǔ)言,其用戶界面設(shè)計(jì)簡(jiǎn)單,并采用了面向?qū)ο?、事件?qū)動(dòng)的程序設(shè)計(jì)方法,極大地簡(jiǎn)化了用戶編程,因此VB已成為應(yīng)用程序的重要開(kāi)發(fā)工具,是 Windows 軟件系統(tǒng)開(kāi)發(fā)的主要語(yǔ)言之一。Visual Basic 既具有老的 Basic 語(yǔ)言簡(jiǎn)單易學(xué)的優(yōu)點(diǎn),又提供了豐富的控件、擴(kuò)充了許多新的功能,它具有良好的圖形用戶接口并支持面向?qū)ο蟮某绦蛟O(shè)計(jì)和事件驅(qū)動(dòng)編程模式,大大提高了編程效率。</p><p>
59、<b> VB的特點(diǎn):</b></p><p> 1.面向?qū)ο?。VB采用了面向?qū)ο笤O(shè)計(jì)思想,它基本思路是把復(fù)雜設(shè)計(jì)問(wèn)題分解為個(gè)個(gè)能夠完成獨(dú)立功能——相對(duì)簡(jiǎn)單對(duì)象集合。所謂“對(duì)象”就是個(gè)可操作實(shí)體如窗體、窗體中命令按鈕、標(biāo)簽、文本框等面向?qū)?象編程就好像搭積木樣員可根據(jù)和界面設(shè)計(jì)要求直接在屏幕上“畫(huà)\"出窗口、菜單、按鈕等區(qū)別 類(lèi)型對(duì)象并為每個(gè)對(duì)象設(shè)置屬性。 </p>
60、;<p> 2.事件驅(qū)動(dòng)。在Windows環(huán)境下是以事件驅(qū)動(dòng)方式運(yùn)行每個(gè)對(duì)象的都能響應(yīng)多個(gè)區(qū)別事件,每個(gè)事件都能驅(qū)動(dòng)段 代碼——事件過(guò)程該代碼決定了對(duì)象功能通常稱(chēng)這種機(jī)制為事件驅(qū)動(dòng)事件可由用戶操作觸發(fā)也可以由系統(tǒng)或應(yīng)用觸發(fā)例如單擊個(gè)命令按鈕就觸發(fā)了按鈕Click(單擊)事件該事件中代碼就會(huì)被執(zhí)行。若用戶未進(jìn)行任何操作(未觸發(fā)事件)則就處于等待狀態(tài)整個(gè)應(yīng)用就是由彼此獨(dú)立事件過(guò)程構(gòu)成。</p><p>
61、; 3.軟件Software集成式開(kāi)發(fā)。VB為編程提供了個(gè)集成開(kāi)發(fā)環(huán)境在這個(gè)環(huán)境中編程者可設(shè)計(jì)界面、編寫(xiě)代碼、調(diào)試直至把應(yīng) 用編譯成可在Windows中運(yùn)行可執(zhí)行文件并為它生成安裝VB集成開(kāi)發(fā)環(huán)境為編程者提供了很大方便。</p><p> 4.結(jié)構(gòu)化設(shè)計(jì)語(yǔ)言。VB具有豐富數(shù)據(jù)類(lèi)型是種符合結(jié)構(gòu)化設(shè)計(jì)思想語(yǔ)言而且簡(jiǎn)單易學(xué),此外作為一種設(shè)計(jì)語(yǔ)言VB還有許多獨(dú)到之處。</p><p> 5.
62、強(qiáng)大數(shù)據(jù)庫(kù)訪問(wèn)功能。VB利用數(shù)據(jù)Control控件可以訪問(wèn)多種數(shù)據(jù)庫(kù)VB 6.O提供ADOControl控件不但可以用最少代碼實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作和控制也可以取代DataControl控件和RDOControl控件。</p><p> 6.支持對(duì)象鏈接和嵌入技術(shù)。VB核心是對(duì)對(duì)象鏈接和嵌入(OLE)技術(shù)支持它是訪問(wèn)所有對(duì)象種思路方法利用OLE技術(shù)能夠開(kāi)發(fā)集聲音、圖像、動(dòng)畫(huà)、字處理、Web等對(duì)象于體。</p>
63、;<p> 7.網(wǎng)絡(luò)功能。VB 6.O提供了DltTML(Dynamic}tTML)設(shè)計(jì)工具利用這種技術(shù)可以動(dòng)態(tài)創(chuàng)建和編輯Web頁(yè)面使 用戶在VB中開(kāi)發(fā)多功能網(wǎng)絡(luò)應(yīng)用軟件Software。</p><p> 8.多個(gè)應(yīng)用向?qū)?。VB提供了多種向?qū)鐟?yīng)用向?qū)?、安裝向?qū)А?shù)據(jù)對(duì)象向?qū)Ш蛿?shù)據(jù)窗體向?qū)ㄟ^(guò)它們可以快速 地創(chuàng)建區(qū)別類(lèi)型、區(qū)別功能應(yīng)用。</p><p> 9.支持動(dòng)
64、態(tài)交換、動(dòng)態(tài)鏈接技術(shù)。通過(guò)動(dòng)態(tài)數(shù)據(jù)交換(DDE)編程技術(shù)VB開(kāi)發(fā)應(yīng)用能和其他Windows應(yīng)用的間建立數(shù)據(jù)通信通過(guò)動(dòng)態(tài) 鏈接庫(kù)技術(shù)在VB中可方便地用C語(yǔ)言或匯編語(yǔ)言編寫(xiě)也可Windows應(yīng)用接口(.API)。</p><p> lO.聯(lián)機(jī)幫助功能。在VB中利用幫助菜單和F1功能鍵用戶可隨時(shí)方便地得到所需要幫助信息VB幫助窗口中顯示了有 關(guān)舉例代碼通過(guò)復(fù)制、粘貼操作可獲取大量舉例代碼為用戶學(xué)習(xí)和使用提供方便。&l
65、t;/p><p> 3.2 MSComm控件</p><p> 3.2.1 MSComm控件簡(jiǎn)介 </p><p> MSComm控件提供了兩種處理通信的方式:一種為事件驅(qū)動(dòng)方式,該方式相當(dāng)于一般程序設(shè)計(jì)中的中斷方式。當(dāng)串口發(fā)生事件或錯(cuò)誤時(shí),MSComm控件會(huì)產(chǎn)生OnComm事件,用戶程序可以捕獲該事件進(jìn)行相應(yīng)處理。本文的兩個(gè)例子均采用該方式。另一種為查詢(xún)方式,
66、在用戶程序中設(shè)計(jì)定時(shí)或不定時(shí)查詢(xún)MSComm控件的某些屬性是否發(fā)生變化,從而確定相應(yīng)處理。</p><p> 3.2.2 MSComm常用屬性和方法 </p><p> 利用MSComm控件實(shí)現(xiàn)計(jì)算機(jī)通信的關(guān)鍵是理解并正確設(shè)置MSComm控件眾多屬性和方法。以下是MSComm控件的常用屬性和方法: </p><p> Commport:設(shè)置或返回串口號(hào)。 &l
67、t;/p><p> Settings:以字符串的形式設(shè)置或返回串口通信參數(shù)。 </p><p> Portopen:設(shè)置或返回串口狀態(tài)。 </p><p> InputMode:設(shè)置或返回接收數(shù)據(jù)的類(lèi)型。 </p><p> Inputlen:設(shè)置或返回一次從接收緩沖區(qū)中讀取字節(jié)數(shù)。 </p><p> InBu
68、fferSize:設(shè)置或返回接收緩沖區(qū)的大小,缺省值為1024字節(jié)。</p><p> InBufferCount:設(shè)置或返回接收緩沖區(qū)中等待計(jì)算機(jī)接收的字符數(shù)。 </p><p> Input:從接收緩沖區(qū)中讀取數(shù)據(jù)并清空該緩沖區(qū),該屬性設(shè)計(jì)時(shí)無(wú)效, 運(yùn)行時(shí)只讀。 </p><p> OutBufferSize:設(shè)置或返回發(fā)送緩沖區(qū)的大小,缺省值
69、為512字節(jié)。 </p><p> OutBufferCount:設(shè)置或返回發(fā)送緩沖區(qū)中等待計(jì)算機(jī)發(fā)送的字符數(shù)。 Output:向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù),該屬性設(shè)計(jì)時(shí)無(wú)效,運(yùn)行時(shí)只讀。 </p><p> Rthreshold:該屬性為一閥值。當(dāng)接收緩沖區(qū)中字符數(shù)達(dá)到該值時(shí),MSComm控件設(shè)置Commevent屬性為ComEvReceive,并產(chǎn)生OnComm事件。用戶可在OnComm事
70、件處理程序中進(jìn)行相應(yīng)處理。若Rthreshold屬性設(shè)置為0,則不產(chǎn)生OnComm事件。例如用戶希望接收緩沖區(qū)中達(dá)到一個(gè)字符就接收一個(gè)字符,可將Rthreshold設(shè)置為1。這樣接收緩沖區(qū)中接收到一個(gè)字符,就產(chǎn)生一次OnComm事件。 </p><p> Sthreshold:該屬性亦為一閥值。當(dāng)發(fā)送緩沖區(qū)中字符數(shù)小于該值時(shí),MSComm控件設(shè)置Commevent屬性為ComEvSend,并產(chǎn)生OnComm事件
71、。若Sthreshold屬性設(shè)置為0,則不產(chǎn)生OnComm事件。要特別注意的是僅當(dāng)發(fā)送緩沖區(qū)中字符數(shù)小于該值的瞬間才產(chǎn)生OnComm事件,其后就不再產(chǎn)生OnComm事件。例如Sthreshold設(shè)置為3,僅當(dāng)發(fā)送緩沖區(qū)中字符數(shù)從3降為2時(shí),MSComm控件設(shè)置Commevent屬性為ComEvSend,同時(shí)產(chǎn)生OnComm事件,如發(fā)送緩沖區(qū)中字符始終為2,則不會(huì)再產(chǎn)生OnComm事件。這就避免了發(fā)送緩沖區(qū)中數(shù)據(jù)未發(fā)送完就反復(fù)發(fā)生OnCo
72、mm事件。 </p><p> CommEvent:這是一個(gè)非常重要的屬性。該屬性設(shè)計(jì)時(shí)無(wú)效,運(yùn)行時(shí)只讀。一旦串口發(fā)生通信事件或產(chǎn)生錯(cuò)誤,依據(jù)產(chǎn)生的事件和錯(cuò)誤,MSComm控件為CommEvent屬性賦不同的代碼,同時(shí)產(chǎn)生OnComm事件。用戶程序就可在OnComm事件處理程序中針對(duì)不同的代碼,進(jìn)行相應(yīng)的處理。CommEvent屬性的代碼、常數(shù)及含義參見(jiàn)表2-1及表2-2。</p><p&g
73、t; 表3-1 CommEvent通信事件</p><p> 表3-2 CommEvent通信錯(cuò)誤</p><p> 3.2.3 OnComm事件</p><p> Visual Basic提供了兩種處理串行通信的方法:一是事件驅(qū)動(dòng)法;二是查詢(xún)法。這兩種方法各自的特點(diǎn)為:</p><p> 事件驅(qū)動(dòng)法是利用MSComm控件的On
74、Comm事件捕獲并處理通信錯(cuò)誤或事件,是處理串行端口交互作用的一種非常有效的方法。當(dāng)串口接收到或發(fā)送完指定數(shù)量的數(shù)據(jù)時(shí),或當(dāng)狀態(tài)發(fā)生改變時(shí),MSComm控件都將觸發(fā)OnComm事件,該事件也可以捕獲通信中的錯(cuò)誤。當(dāng)應(yīng)用程序捕獲到這些事件后,可通過(guò)檢查MSComm控件的CommEvent屬性的值來(lái)獲知所發(fā)生的事件或錯(cuò)誤,從而執(zhí)行相應(yīng)的處理。這種方法具有相應(yīng)及時(shí),可靠性高等優(yōu)點(diǎn)。</p><p> 查詢(xún)法是在每個(gè)重
75、要的程序之后查詢(xún)MSComm控件的某些屬性(比如CommEvent屬性和InBufferCount屬性)的值來(lái)檢測(cè)事件和通信錯(cuò)誤。</p><p><b> 4 數(shù)據(jù)庫(kù)</b></p><p> 4.1 Access數(shù)據(jù)庫(kù)簡(jiǎn)介</p><p> Access數(shù)據(jù)庫(kù) 美國(guó)Microsoft公司于1994年推出的微機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有界
76、面友好、易學(xué)易用、開(kāi)發(fā)簡(jiǎn)單、接口靈活等特點(diǎn),是典型的新一代桌面數(shù)據(jù)庫(kù)管理系統(tǒng)。 </p><p> Access 數(shù)據(jù)庫(kù)由七種對(duì)象組成,它們是表、查詢(xún)、窗體、報(bào)表、宏、頁(yè)和模塊。 </p><p> 表(Table) ——表是數(shù)據(jù)庫(kù)的基本對(duì)象,是創(chuàng)建其他5種對(duì)象的基礎(chǔ)。表由記錄組成,記錄由字段組成,表用來(lái)存貯數(shù)據(jù)庫(kù)的數(shù)據(jù),故又稱(chēng)數(shù)據(jù)表。 </p><p> 查
77、詢(xún)(Query)——查詢(xún)可以按索引快速查找到需要的記錄,按要求篩選記錄并 能連接若干個(gè)表的字段組成新表。 </p><p> 窗體(Form)——窗體提供了一種方便的瀏覽、輸入及更改數(shù)據(jù)的窗口。還可以創(chuàng)建子窗體顯示相關(guān)聯(lián)的表的內(nèi)容。窗體也稱(chēng)表單。 </p><p> 報(bào)表(Report)——報(bào)表的功能是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)分類(lèi)匯總,然后打印出來(lái),以便分析。 </p><
78、p> 宏(Macro)——宏相當(dāng)于DOS中的批處理,用來(lái)自動(dòng)執(zhí)行一系列操作。Access列出了一些常用的操作供用戶選擇,使用起來(lái)十分方便。 </p><p> 模塊(Module)——模塊的功能與宏類(lèi)似,但它定義的操作比宏更精細(xì)和復(fù)雜,用戶可以根據(jù)自己的需要編寫(xiě)程序。模塊使用Visual Basic編程。頁(yè)——是一種特殊的直接連接到數(shù)據(jù)庫(kù)中數(shù)據(jù)的一種WEB頁(yè)。通過(guò)數(shù)據(jù)訪問(wèn)頁(yè)將數(shù)據(jù)發(fā)布到Internet
79、或Intranet上,并可以適用瀏覽器進(jìn)行數(shù)據(jù)的維護(hù)和操作。</p><p> 其主要特點(diǎn)如下: (1)完善地管理各種數(shù)據(jù)庫(kù)對(duì)象,具有強(qiáng)大的數(shù)據(jù)組織、用戶管理、安全檢查等功能。 (2)強(qiáng)大的數(shù)據(jù)處理功能,在一個(gè)工作組級(jí)別的網(wǎng)絡(luò)環(huán)境中,使用Access開(kāi)發(fā)的多用戶數(shù)據(jù)庫(kù)管理系統(tǒng)具有傳統(tǒng)的XBASE(DBASE、FoxBASE的統(tǒng)稱(chēng))數(shù)據(jù)庫(kù)系統(tǒng)所無(wú)法實(shí)現(xiàn)的客戶服務(wù)器(Cient/Server)結(jié)構(gòu)和相應(yīng)的數(shù)據(jù)庫(kù)安全
80、機(jī)制,Access具備了許多先進(jìn)的大型數(shù)據(jù)庫(kù)管理系統(tǒng)所具備的特征,如事務(wù)處理/出錯(cuò)回滾能力等。 (3)可以方便地生成各種數(shù)據(jù)對(duì)象,利用存儲(chǔ)的數(shù)據(jù)建立窗體和報(bào)表,可視性好。 (4)作為Office套件的一部分,可以與Office集成,實(shí)現(xiàn)無(wú)縫連接。 (5)能夠利用Web檢索和發(fā)布數(shù)據(jù),實(shí)現(xiàn)與Internet的連接。 Access主要適用于中小型應(yīng)用系統(tǒng),或作為客戶機(jī)/服務(wù)器系統(tǒng)中的客戶端數(shù)據(jù)庫(kù)。</p><p>
81、 4.2 數(shù)據(jù)訪問(wèn)對(duì)象DAO</p><p> 4.2.1 DAO簡(jiǎn)介</p><p> Visual Basic提供了數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象(DAO)模型,它是設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)的對(duì)象類(lèi)的集合。于是Visual Basic中的數(shù)據(jù)庫(kù)編程就成了創(chuàng)建數(shù)據(jù)訪問(wèn)對(duì)象,這些數(shù)據(jù)訪問(wèn)對(duì)象對(duì)應(yīng)于被訪問(wèn)物理數(shù)據(jù)庫(kù)的不同部分,如Database、TableDef、Field和Index對(duì)象,用這些對(duì)象的屬
82、性和方法來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。</p><p> DAO就是Database Access Object,數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象的英文縮寫(xiě)。在VB中提供了兩種與Jet數(shù)據(jù)庫(kù)引擎接口的方法:Data控件和數(shù)據(jù)訪問(wèn)對(duì)象(DAO)。Data控件只給出有限的不需編程而能訪問(wèn)現(xiàn)存數(shù)據(jù)庫(kù)的功能,而DAO模型則是全面控制數(shù)據(jù)庫(kù)的完整編程接口。DAO(數(shù)據(jù)訪問(wèn)對(duì)象)是一種應(yīng)用程序編程接口(API),存在于微軟的Visual Basic
83、中,它允許程序員請(qǐng)求對(duì)微軟的Access數(shù)據(jù)庫(kù)的訪問(wèn)。DAO是微軟的第一個(gè)面向?qū)ο蟮臄?shù)據(jù)庫(kù)接口。DAO對(duì)象封閉了Access的Jet函數(shù)。通過(guò)Jet函數(shù),它還可以訪問(wèn)其他的結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)數(shù)據(jù)庫(kù)。</p><p> 4.2.2 DAO對(duì)象模型</p><p> DAO提供了兩種不同的對(duì)象模型,一種對(duì)象模型是通過(guò)Jet引擎來(lái)訪問(wèn)數(shù)據(jù)。另一種對(duì)象模型是通過(guò)ODBCDirect來(lái)訪問(wèn)
84、數(shù)據(jù)。這兩種對(duì)象模型都是層次結(jié)構(gòu)的?,F(xiàn)在分別對(duì)這兩種對(duì)象模型進(jìn)行介紹。</p><p> DBEngine是一個(gè)基于對(duì)象,它包含了兩個(gè)重要的集合(Collection),一個(gè)是Errors集合,另一個(gè)是Workspaces集合。對(duì)DAO的操作總會(huì)產(chǎn)生一些錯(cuò)誤,每產(chǎn)生一個(gè)錯(cuò)誤,DAO就生成一個(gè)Error對(duì)象,這些Error對(duì)象都放在Errors集合中,可以用Errors.Count來(lái)計(jì)算錯(cuò)誤的個(gè)數(shù)。事實(shí)上,對(duì)于每
85、一個(gè)集合,都可以用Collection.Count來(lái)求出該集合中對(duì)象的個(gè)數(shù)。</p><p> 每一個(gè)應(yīng)用程序只能有一個(gè)DBEngine對(duì)象,但可以有多個(gè)Workspace對(duì)象,這些Workspace對(duì)象都包含在Workspace集合中。每個(gè)Workspace對(duì)象都包含了一個(gè)Database對(duì)象對(duì)應(yīng)了一個(gè)數(shù)據(jù)庫(kù),它里面包含了許多用于操作數(shù)據(jù)庫(kù)的對(duì)象。這些對(duì)象中,有一些是Jet數(shù)據(jù)庫(kù)專(zhuān)用的,如Container、
86、TableDef和Relation對(duì)象,有一些則是對(duì)所有數(shù)據(jù)庫(kù)都有用的,如Recordset對(duì)象和QueryDef對(duì)象。</p><p> 下面對(duì)對(duì)象模型中的主要對(duì)象進(jìn)行詳細(xì)的說(shuō)明。</p><p> 1.DBEngine對(duì)象:DBEngine對(duì)象是惟一的,不能創(chuàng)建,也不能聲明。通常,可以用DBEngine對(duì)象的屬性來(lái)設(shè)置數(shù)據(jù)庫(kù)訪問(wèn)的安全性,即設(shè)置訪問(wèn)數(shù)據(jù)庫(kù)缺省用戶名和缺省口令。由于J
87、et數(shù)據(jù)庫(kù)引擎允許用戶定義一個(gè)工作組,對(duì)于工作組中的每一個(gè)用戶可以設(shè)置不同的數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限。必須把存儲(chǔ)這個(gè)工作組有關(guān)信息的文件告訴DAO,方法就是設(shè)置DBEngine對(duì)象的"SystemDB"屬性。當(dāng)使用Jet數(shù)據(jù)庫(kù)引擎時(shí),必須把DBEngine對(duì)象的"DefaultType"屬性設(shè)置為"dbUseJet"。DBEngine對(duì)象還提供了很多方法來(lái)操作工作區(qū)(Workspace)
88、和數(shù)據(jù)庫(kù),如:Creat Workspace方法創(chuàng)建一個(gè)工作區(qū),Creatdatabase創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),OpenDatabase打開(kāi)一個(gè)數(shù)據(jù)庫(kù),CompactDatabase壓縮一個(gè)數(shù)據(jù)庫(kù),RepairDatabase修復(fù)一個(gè)數(shù)據(jù)庫(kù)等等。</p><p> 2.Error對(duì)象:Error對(duì)象是DBEngine對(duì)象的一個(gè)子對(duì)象。在發(fā)生數(shù)據(jù)庫(kù)操作錯(cuò)誤時(shí),可以用標(biāo)準(zhǔn)的VB的Err對(duì)象來(lái)進(jìn)行錯(cuò)誤處理,也可以把錯(cuò)誤信息
89、保存在DAO的Error對(duì)象中。</p><p> 3.Workspace對(duì)象:一個(gè)Workspace對(duì)象定義一個(gè)數(shù)據(jù)庫(kù)會(huì)話(Session)。會(huì)話描述出由Microsoft Jet完成的一系列功能,所有在會(huì)話期間的操作形成了一個(gè)事務(wù)范圍,并服從于由用戶名和密碼決定的權(quán)限。所有的Workspace對(duì)象組合在一起形成了一個(gè)Workspace集合。</p><p> 4.Database對(duì)
90、象:一旦用CreateDatabase創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)或用OpenDatabase打開(kāi)了一個(gè)數(shù)據(jù)庫(kù),就生成了一個(gè)Database對(duì)象。所有的Database對(duì)象都自動(dòng)添加到Database集合中。</p><p> 5.Recordset對(duì)象:Recordset對(duì)象是使用最頻繁的一個(gè)對(duì)象,它代表了數(shù)據(jù)庫(kù)中一個(gè)表或一個(gè)查詢(xún)結(jié)果的記錄等。例如下面的語(yǔ)句在數(shù)據(jù)庫(kù)的第一表中添加一條記錄:For Each tempdb
91、In Workspace(0).Databases</p><p> 4.2.3 基于DAO的數(shù)據(jù)庫(kù)及數(shù)據(jù)表創(chuàng)建</p><p> DAO采用分層的面向?qū)ο笥袛?shù)據(jù)訪問(wèn)模式,對(duì)于數(shù)據(jù)庫(kù)的操作分為若干層次,每一個(gè)層次為一類(lèi)對(duì)象。DAO對(duì)象模型提供了數(shù)據(jù)庫(kù)管理所需要的全部操作的屬性和方法,包括創(chuàng)建數(shù)據(jù)庫(kù),定義表,字段、索引,建立表間關(guān)系,定位和查詢(xún)數(shù)據(jù)庫(kù)等。Accesss數(shù)據(jù)庫(kù)的操作均是采用
92、了DAO技術(shù),包括數(shù)據(jù)庫(kù)的創(chuàng)建、數(shù)據(jù)表的建立、測(cè)量數(shù)據(jù)的存取操作等。結(jié)合本次程序的編寫(xiě),下面我給出創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表的示例代碼:</p><p> Option Explicit</p><p><b> ‘定義參數(shù)類(lèi)型</b></p><p> Public myPath As String '全路徑數(shù)據(jù)庫(kù)
93、</p><p> Public myDatabase As Database '數(shù)據(jù)庫(kù)</p><p> Public MyTabledef As TableDef '表</p><p> Public myRecordSet As Recordset '記錄集</p><p> P
94、ublic MyField As Field '字段</p><p> Public FieldNum As Double '字段數(shù)</p><p> Public DataPath As String '路徑</p><p> Public TableName As Strin
95、g '表名</p><p> Public Function CreatMydb(newDB As String)</p><p> ‘創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表</p><p> Dim myDatabase As Database '數(shù)據(jù)庫(kù)</p><p> Set myDatabase = Wo
96、rkspaces(0).CreateDatabase(newDB, dbLangGeneral)</p><p> Dim MyTabledef As TableDef '表</p><p> Set MyTabledef = myDatabase.CreateTableDef("測(cè)量數(shù)據(jù)表")</p><p> ‘在數(shù)據(jù)
97、庫(kù)中建立數(shù)據(jù)表</p><p> Dim MyField As Field '字段</p><p> Set MyField = MyTabledef.CreateField("點(diǎn)名", dbInteger)</p><p> MyTabledef.Fields.Append MyField</p>
98、<p><b> ‘在表中設(shè)置字段名</b></p><p> Set MyField = MyTabledef.CreateField("水平角Hz", dbSingle)</p><p> MyTabledef.Fields.Append MyField</p><p> Set MyField =
99、 MyTabledef.CreateField("豎直角V1", dbSingle)</p><p> MyTabledef.Fields.Append MyField</p><p> myDatabase.TableDefs.Append MyTabledef '用append方法把表添加到數(shù)據(jù)庫(kù)中</p><p> myDat
100、abase.Close</p><p> End Function</p><p><b> 5 通信程序設(shè)計(jì)</b></p><p> 5.1 程序模塊設(shè)計(jì)</p><p> 在程序中設(shè)計(jì)兩個(gè)模塊:ConvertMdl 模塊和Datamod 模塊。 ConvertMdl 模塊設(shè)計(jì)了蔡司全站儀的傳輸后數(shù)據(jù)的截
101、取,轉(zhuǎn)換成更易明白的數(shù)據(jù)格式。因?yàn)椴趟緝x器傳輸?shù)母袷绞潜容^規(guī)則的,所以可以利用截取字符串的形式來(lái)獲得數(shù)據(jù)。</p><p> 5.1.1 ConvertMdl 模塊設(shè)計(jì)</p><p> Public onTime As Boolean</p><p> Public booSave As Boolean</p><p> Publi
102、c Sett As String '參數(shù)設(shè)置</p><p> Public Comm As Integer '接口控制</p><p> '從文本中截取字符串先寫(xiě)進(jìn)文本文檔中,再進(jìn)行入庫(kù)。</p><p> Public Firstfile As String '原始數(shù)據(jù)文件</p>&
103、lt;p> Public Secondfile As String '轉(zhuǎn)換后文件</p><p> Public StrReceive As String ' StrReceive 是一個(gè)字符串變量(代表行,或者整個(gè)接收文件)</p><p> Public strHz As String, strV1 As String '定義水
104、平角,豎直角</p><p> Public strHzd As String, strHzm As String, strHzs As String '定義水平角 度,分,秒</p><p> Public strV1d As String, strV1m As String, strV1s As String '定義豎直角 度,分,秒</p>
105、<p> Public Sub ConvertZeis(Firstfile As String, Secondfile As String) '蔡司全站儀數(shù)據(jù)轉(zhuǎn)換過(guò)程(測(cè)后)</p><p> '因?yàn)椴趟緝x器傳輸?shù)母袷绞潜容^規(guī)則的,所以可以利用截取字符串的形式來(lái)獲得數(shù)據(jù)。</p><p> '在此過(guò)程需要注意的是寫(xiě)文件</p>
106、<p> Dim i As Integer</p><p> Dim strNum As String '在數(shù)據(jù)的行截取的點(diǎn)名賦給 strNum()</p><p> Open Firstfile For Input As #1</p><p> Open Secondfile For Append As #2</p>
107、<p> Set myDatabase = Workspaces(0).OpenDatabase(myPath, True, False)</p><p> Set myRecordSet = myDatabase.OpenRecordset("測(cè)量數(shù)據(jù)表", dbOpenTable)</p><p> i = 1 '用 i 來(lái)標(biāo)
108、記有數(shù)據(jù)的行</p><p> Print #2, "序號(hào)" & Space(10) & "點(diǎn)名" & Space(13) & "水平角" & Space(20) & "豎直角"</p><p> Do While Not EOF(1)</p>
109、<p> Line Input #1, StrReceive</p><p> If InStr(StrReceive, "|Hz") And InStr(StrReceive, "|V1") Then</p><p> strNum = RTrim(Mid(StrReceive, InStr(StrReceive, "|P
110、I1") + 5, 10)) '截取點(diǎn)名</p><p> If strNum = "" Then strNum = "0"</p><p> strHz = Trim(Mid(StrReceive, InStr(StrReceive, "|Hz") + 3, 15)) '如果數(shù)字是連續(xù)的,則直
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文全站儀
- 專(zhuān)科畢業(yè)設(shè)計(jì)_全站儀配套cad of cass繪圖
- 全站儀檢驗(yàn)
- 全站儀坐標(biāo)放樣圖解 全站儀放樣
- 全站儀使用教程
- 全站儀使用規(guī)定
- 全站儀的使用
- 全站儀操作規(guī)范
- 全站儀的檢定
- 全站儀在工程測(cè)量中的應(yīng)用畢業(yè)設(shè)計(jì)論文
- 蘇一光全站儀操作詳細(xì)步驟(全站儀部分講義)
- 全站儀在道路放樣中的應(yīng)用畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于全站儀三角高程測(cè)量的精密研究
- 全站儀教程(七)設(shè)置
- 全站儀品牌及其參數(shù)
- topcon全站儀的使用
- 全站儀培訓(xùn)資料
- 全站儀的操作步驟方案
- 全站儀的使用說(shuō)明
- 邁拓全站儀操作步驟docx
評(píng)論
0/150
提交評(píng)論