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