講義教程設(shè)計(jì)_第1頁(yè)
講義教程設(shè)計(jì)_第2頁(yè)
講義教程設(shè)計(jì)_第3頁(yè)
講義教程設(shè)計(jì)_第4頁(yè)
講義教程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、誠(chéng)信本人:我所呈交的本科畢業(yè)設(shè)計(jì)是本人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝中所羅列的內(nèi)容以外,中不包含其他人已經(jīng)或撰寫(xiě)過(guò)的研究成果。與我一同工作的對(duì)本本做的任何貢的法律結(jié)果由已在中作了明確的說(shuō)明并表示了謝意。本人完全本人承擔(dān)。申請(qǐng)與資料若有不實(shí)之處,本人承擔(dān)一切相關(guān)責(zé)任。本人簽名:日期:年月日畢業(yè)設(shè)計(jì)()任務(wù)書(shū)設(shè)計(jì)()題目:數(shù)據(jù)庫(kù)的 LabVIEW 接口程序設(shè)計(jì)學(xué)院:信息學(xué)院專(zhuān)業(yè):自 控班級(jí):自控 1106學(xué)生:李 碩指導(dǎo)教師(含):(講師) 專(zhuān)業(yè):李大字 1. 設(shè)計(jì)()的主要任務(wù)及目標(biāo)研究 SQIite 數(shù)據(jù)庫(kù)的配置與操作;研究如何使用 C#語(yǔ)言操

2、作 SQIite 數(shù)據(jù)庫(kù);以LabVIEW 為混合編程實(shí)現(xiàn)子 VI 調(diào)用 SQIite 數(shù)據(jù)庫(kù)。2. 設(shè)計(jì)()的基本要求和內(nèi)容符合 SQL 語(yǔ)言的基本語(yǔ)范;能準(zhǔn)確運(yùn)用 SQL 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)操作;選取流程工業(yè)數(shù)據(jù),實(shí)現(xiàn)子 VI 對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)操作的基本指令。3. 主要參考文獻(xiàn)1BASTIDA H, PONCE P, RAMREZ R. Mand Control for CoupledUsingLabviewC/Mechatronics,Electronics and Automotive Engineering (ICMEAE),2013ernational Conference on.

3、IEEE,2013:127-133.2數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)J. 單片機(jī)與嵌,.入式系統(tǒng)應(yīng)用, 2008, (6).3開(kāi)發(fā)方法的研究J.化工自動(dòng)化及儀表, 2002,扶碧波,29(3).虛擬儀器:10.3969/j.i.1000-3932.2002.03.010.4. 進(jìn)度安排設(shè)計(jì)()各階段名稱(chēng)起 止日期1閱讀文獻(xiàn),撰寫(xiě)相關(guān)1 月 1 日1 月 31 日2完成文獻(xiàn)綜述,并做初步研究3 月 7 日3 月 31 日3根據(jù)課題,學(xué)習(xí)與 C 的基本內(nèi)容4 月 1 日4 月 20 日4以具體要求代碼實(shí)現(xiàn)4 月 20 日5 月 10 日5完成5 月 10 日6 月初摘要近年來(lái)隨著系統(tǒng)迅速發(fā)展數(shù)據(jù)庫(kù)在數(shù)據(jù)整

4、合管理方面給予了嵌入與 LabVIEW 的接式系統(tǒng)強(qiáng)大的技術(shù)支持,本課題旨在設(shè)計(jì)開(kāi)發(fā)口程序。數(shù)據(jù)庫(kù)本文首先介紹了 LabVIEW 圖形化開(kāi)發(fā)環(huán)境和虛擬現(xiàn)實(shí)技術(shù)的現(xiàn)狀與發(fā)展,針對(duì)其各自特點(diǎn)及優(yōu)勢(shì)進(jìn)行了探討,然后簡(jiǎn)明扼要的概括了數(shù)據(jù)庫(kù)的特點(diǎn)及優(yōu)勢(shì),并確定選題的研究意義;其次通過(guò)對(duì) LabVIEW 各類(lèi)控件及接口,C#語(yǔ)言編程技術(shù)及數(shù)據(jù)庫(kù)的幾種 DLL 文件的技術(shù)分析,提出了幾種可以完成接口程序設(shè)計(jì)的方案,并結(jié)合自身實(shí)際情況及方案可完成度,總結(jié)出了設(shè)計(jì)開(kāi)發(fā)接口程序的總體設(shè)計(jì)方案;接下來(lái)嚴(yán)格按照設(shè)計(jì)方案進(jìn)度開(kāi)始設(shè)計(jì)程序,經(jīng)過(guò)前期的摸索,逐步實(shí)現(xiàn)了基礎(chǔ)程序模塊設(shè)計(jì),從新建數(shù)據(jù)庫(kù)開(kāi)始,依次完成了創(chuàng)建表格、

5、刪除等基本操作,并最終實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢(xún)反饋等重要功能。數(shù)據(jù)、修改表格內(nèi)容、課題最后使用 LabVIEW 將自行設(shè)計(jì)的程序生成了安裝文件和可執(zhí)行程序(EXE)供用戶(hù)使用,實(shí)現(xiàn)用戶(hù)對(duì)數(shù)據(jù)庫(kù)的基本操作及了該設(shè)計(jì)的可行性。,繼而完成本課題預(yù)期目的,證明數(shù)據(jù)庫(kù);虛擬儀器;LabVIEW:ABSTRACTIn recent years,database gave embedded system aerful technical supportin dataegration management with the radevelopment of embedded system.Thecontent of t

6、his disserion involves the design and development of theerface programbetn LabVIEW andly, the thesis.roduLabVIEW graphical development environment, thepresent situation and development of virtual reality technology, their characteristics andadvantages are discussed respectively, based on which the r

7、esearch purport is decided, Thensuccinctly sums up the characteristics and advantages ofdatabase, and identifyingthe research significance of this topic; Secondly, byyzing the technical of various typesof controls anderfafor LabVIEW, C# language programming and DLL files ofdatabase, several schemes

8、for designing theerface program are summarized.Combined with my own actual situation and the completing degree of programs, sums upthe design and development of the overall design for theerface program. Next, start toprogram the design pros strictly according to the design plan, after the early expl

9、oration,Gradually achieve the foundation program module design, followed by completing the creation of a table, insert the data, modify table contents, deleting and other basic operations, and ultima y the important function of the database query feedback.Finally, the thesis generate a self-designed

10、 program to the installation files andexecutable (EXE) for users by using LabVIEW, achieving the basic operation andmaenance of the database users and then completing theended pure of this projectto prove the feasibility of the design.Key words:embedded database,virtual instrument,LabVIEW目錄前言1第 1 章

11、緒論2第 1.1 節(jié) 課題研究背景2第 1.2 節(jié) LabVIEW 和發(fā)展現(xiàn)狀31.2.1 LabVIEW 的發(fā)展31.2.2現(xiàn)狀3第 1.3 節(jié) 課題意義和主要內(nèi)容4第 2 章 接口程序設(shè)計(jì)技術(shù)分析5第 2.1 節(jié)第 2.2 節(jié)第 2.3 節(jié)術(shù)分析5接LabVIEW 調(diào)用技術(shù)5接口程序設(shè)計(jì)框架6第 3 章 基礎(chǔ)程序模塊設(shè)計(jì)實(shí)現(xiàn)8第 3.1 節(jié) LabVIEW數(shù)據(jù)庫(kù)8創(chuàng)建(或打開(kāi)已有)數(shù)據(jù)庫(kù)8執(zhí)行 SQL 語(yǔ)句9LabVIEW 和 DLL 之間參數(shù)配置說(shuō)明13對(duì)數(shù)據(jù)庫(kù)進(jìn)行基本操作14第 3.2 節(jié) LabVIEW 調(diào)用C#DLL 文件數(shù)據(jù)庫(kù)173.2.1 C#創(chuàng)建和調(diào)用 DLL173.2.2

12、LabVIEWC#編寫(xiě)的 DLL21使用 VS2010 生成預(yù)定的 DLL 文件21使用LabVIEW2014 調(diào)用生成的 dll23建立工程子 VI24常見(jiàn)錯(cuò)誤處理28第 4 章 接口程序設(shè)計(jì)實(shí)現(xiàn)及調(diào)試30第 4.1 節(jié) 生成可供調(diào)用的 DLL 文件30第 4.2 節(jié) 創(chuàng)建工程編寫(xiě)程序 VI32逐個(gè)編寫(xiě)子 VI32主程序功能實(shí)現(xiàn)35第 4.3 節(jié) 生成可執(zhí)行文件38生成前準(zhǔn)備38生成可執(zhí)行程序38論42結(jié)參考文獻(xiàn)43致謝45前言系統(tǒng)成為當(dāng)前 IT 行業(yè)的焦點(diǎn)之一,已在計(jì)算機(jī)技術(shù)的飛速發(fā)展的當(dāng)下,被廣泛應(yīng)用于各個(gè)領(lǐng)域。的用戶(hù)群也越來(lái)越希望能對(duì)產(chǎn)品中的數(shù)據(jù)進(jìn)行更有效的管理。數(shù)據(jù)庫(kù)便是一個(gè)非常有效

13、的工具,它能夠使用戶(hù)在產(chǎn)品中方便地、刪除或修改數(shù)據(jù),按照用戶(hù)要求對(duì)數(shù)據(jù)進(jìn)行排序查詢(xún),還具有如數(shù)據(jù)加密這樣更實(shí)用的功能。系統(tǒng)在國(guó)內(nèi)的研發(fā)也是近年來(lái)才起步的,然而發(fā)展極為迅速。但隨著應(yīng)用領(lǐng)域的不斷擴(kuò)展,需要處理的數(shù)據(jù)量也在不斷增加,文本式的數(shù)據(jù)管理模式漸漸呈現(xiàn)出局限性,成了系統(tǒng)研發(fā)的瓶頸,對(duì)數(shù)據(jù)的整合管理需求上升是 2000 年開(kāi)發(fā)出來(lái)的系統(tǒng)中。它的源代碼完全開(kāi)到數(shù)據(jù)庫(kù)層面,一種中小型系統(tǒng)迫切需要數(shù)據(jù)庫(kù)技術(shù)支持。數(shù)據(jù)庫(kù),可以較為方便地運(yùn)用于放,可以免費(fèi)用于任何用途,包括商業(yè)目的。把數(shù)據(jù)庫(kù)應(yīng)用于系統(tǒng)中進(jìn)行數(shù)據(jù)管理,不僅可以使程序的運(yùn)行效率大大提高,還會(huì)讓源程序具有更好的可讀性和可性。LabVIEW

14、是一種程序開(kāi)發(fā)環(huán)境,類(lèi)似于 C 和 BASIC 開(kāi)發(fā)環(huán)境,但是 LabVIEW與其他計(jì)算機(jī)語(yǔ)言的顯著區(qū)別是:其他計(jì)算機(jī)語(yǔ)言都是采用基于文本的語(yǔ)言產(chǎn)生代碼,而 LabVIEW 使用的是圖形化編輯語(yǔ)言 G 編寫(xiě)程序,產(chǎn)生程序是框圖的形式,所以嘗試用 LabVIEW 開(kāi)發(fā)數(shù)據(jù)庫(kù)更加方便快捷,具有更加廣闊的發(fā)展前景。通常的應(yīng)用中,對(duì)數(shù)據(jù)的操作用到的都是數(shù)據(jù)庫(kù)的最基本的功能,如建立表格、查詢(xún)等完全能夠滿(mǎn)足這些功能要求,并且它的 API 極其易于使用,等。精干高效的只需要三個(gè)用來(lái)執(zhí)行 SQL 和獲得數(shù)據(jù)的函數(shù)。LabVIEW 和 C#語(yǔ)言接口的方法使用方便,可以根據(jù)實(shí)際應(yīng)用的需要,充分利用 C#語(yǔ)言及其優(yōu)

15、勢(shì)來(lái)擴(kuò)展 LabVIEW 的功能,與此同時(shí)混合編程的完成極大增強(qiáng)了 LabVIEW 同其他應(yīng)用程序之間的數(shù)據(jù)傳輸與共享能力。根據(jù)上述現(xiàn)狀,本課題設(shè)計(jì)了基于 LabVIEW 的數(shù)據(jù)庫(kù)接口程序,通過(guò)充分認(rèn)知 LabVIEW 中的與其他應(yīng)用程序之間的 API,搭建起調(diào)用數(shù)據(jù)庫(kù)的 DLL文件的子 VI,繼而使用 DLL 文件內(nèi)已經(jīng)封裝的多個(gè)函數(shù)以 LabVIEW 為編寫(xiě)程序完成對(duì)數(shù)據(jù)庫(kù)的基本操作,如建立表格、查詢(xún)、修改、刪除、排序等等,通過(guò)上述程序能夠很好地充分利用并實(shí)現(xiàn)數(shù)據(jù)庫(kù)最強(qiáng)大的查詢(xún)管理功能。第 1 章 緒論第 1.1 節(jié) 課題研究背景虛擬儀器是計(jì)算機(jī)、現(xiàn)代測(cè)試、儀器儀表等技術(shù)結(jié)合的產(chǎn)物,通過(guò)應(yīng)

16、用程序?qū)⒂?jì)算機(jī)與功能模塊硬件結(jié)合起來(lái),采用交互式圖形界面操作計(jì)算機(jī)來(lái)控制各種功能模塊,完成對(duì)被測(cè)試量、分析處理等任務(wù),突破了傳統(tǒng)儀器在功能單一和數(shù)據(jù)交換不易等方面的局限1,2。而隨著系統(tǒng)的廣泛應(yīng)用及用戶(hù)對(duì)數(shù)據(jù)處理和管理需求的不斷提高,數(shù)據(jù)庫(kù)技術(shù)與各種智能設(shè)備的緊密結(jié)合得到重視,數(shù)據(jù)庫(kù)除了具有傳統(tǒng)數(shù)據(jù)庫(kù)的主要功能,還具有和支持移動(dòng)技術(shù)兩種特性,因此通常設(shè)備中3,4。通過(guò) LabVIEW 與 C 混合編程的接口被用在掌上電腦、移動(dòng)等程序調(diào)用數(shù)據(jù)庫(kù)的技術(shù)不再受單一操作系統(tǒng)的限制,可以隨時(shí)隨地處理業(yè)務(wù)、傳遞信息,可以說(shuō),這種技術(shù)的發(fā)展能提高數(shù)據(jù)信息接入的普遍性,使人們可以隨時(shí)隨地獲取信息,實(shí)現(xiàn)更為快捷

17、的信息傳遞5-7。系統(tǒng)的研發(fā)是近年來(lái)才起步的,然而其發(fā)展極為迅速,隨著應(yīng)用領(lǐng)域的不斷擴(kuò)展,層面,需要處理的數(shù)據(jù)量也在不斷增加,對(duì)數(shù)據(jù)的整合管理需求上升到數(shù)據(jù)庫(kù)系統(tǒng)迫切需要數(shù)據(jù)庫(kù)技術(shù)支持,而的問(wèn)世則解決了以上難題。系統(tǒng)中,可以運(yùn)行在所有主流操8-11沒(méi)有外部依賴(lài)性,更容易地應(yīng)用于作系統(tǒng)中,它提供對(duì) SQL 的大多數(shù)支持,包括多表、索引、事務(wù)、視圖、觸發(fā)和一系列的用戶(hù)接口及驅(qū)動(dòng),的設(shè)計(jì)目標(biāo)是的,而且目前已經(jīng)在很多設(shè)備中,可能只需要幾百 K 的內(nèi)存產(chǎn)品中使用了它,它占用資源非常的低,在就夠了12;的移植性很好,它的數(shù)據(jù)庫(kù)文件在其所支持的所有操作系統(tǒng)、硬件體系結(jié)構(gòu)和字節(jié)順序上都是兼容的二進(jìn)制且;作為程

18、序庫(kù),提供完整的最簡(jiǎn)單最易用的 API,不僅具有很好的文檔而且很直觀,它的設(shè)計(jì)有助于從多方面定制,例如可以通過(guò) C#語(yǔ)言實(shí)現(xiàn)自己定制的 SQL 函數(shù),更重要的是開(kāi)源社區(qū)創(chuàng)建交互13-15,例如 C#、LabVIEW 等。以上的一些了很多種語(yǔ)言和程序庫(kù)用來(lái)與特性使其成為強(qiáng)大而靈活的關(guān)系型數(shù)據(jù)庫(kù)前端,簡(jiǎn)單而緊湊的 B-tree 后端。此外,提供的源代碼模塊清晰,注釋完整,并且易理解、易定制,方便獲取,可以根據(jù)需要重編譯應(yīng)用于其他,例如 LabVIEW 等。第 1.2 節(jié) LabVIEW 和發(fā)展現(xiàn)狀1.2.1 LabVIEW 的發(fā)展近些年,世界各國(guó)的許多大型自動(dòng)測(cè)控和儀器公司均相繼研發(fā)了不少的虛擬儀

19、器開(kāi)發(fā),但最早和最具的還是NI 公司的圖形化開(kāi)發(fā)LabVIEW,而作為新興技術(shù),虛擬儀器在國(guó)內(nèi)處于起步階段,在數(shù)據(jù)處理如測(cè)量結(jié)果的頻譜分析,快速變換,各種數(shù)字濾波器等方面做出了一些成就。例如用 LabVIEW 編制的虛擬示波器的出現(xiàn)改變了原有示波器的整體設(shè)計(jì)思路,用代替了硬件,將傳統(tǒng)儀器由硬件實(shí)現(xiàn)的數(shù)據(jù)分析與顯示功能,改由功能強(qiáng)大的計(jì)算機(jī)及其顯示器來(lái)完成,使工程技術(shù)可以用一部筆記本電腦到現(xiàn)場(chǎng)就可輕松完成信號(hào)、處理及頻譜分析和波形分析16-18。而 LabVIEW 本身使用的是圖形化編輯語(yǔ)言 G 語(yǔ)言編寫(xiě)程序,以框圖的形式生成程序,是目前應(yīng)用最廣、發(fā)展最快、功能最強(qiáng)的圖形化開(kāi)發(fā)集成環(huán)境。但虛擬儀

20、器亦存在其,如不適于或不擅長(zhǎng)于完成大量數(shù)據(jù)處理的任務(wù);不能調(diào)用系統(tǒng)程序?qū)崿F(xiàn)底層操作等,所以嘗試通過(guò) LabVIEW 調(diào)用開(kāi)發(fā)數(shù)據(jù)庫(kù)更加方便快捷,既彌補(bǔ)了 LabVIEW 在這方面的,更充分利用了 G 語(yǔ)言編程方便快捷和開(kāi)源靈活的特點(diǎn),在數(shù)據(jù)處理,信息管理等方面具有更加廣闊的發(fā)展前景。1.2.2現(xiàn)狀數(shù)據(jù)庫(kù)提供了以源碼發(fā)布的方式,要在眾多的硬件進(jìn)行移植,操作系可以根據(jù)不同對(duì)源碼進(jìn)行交叉編譯來(lái)實(shí)現(xiàn)。數(shù)據(jù)庫(kù)通常是與統(tǒng)及具體的應(yīng)用集成在一起,無(wú)需獨(dú)立運(yùn)行數(shù)據(jù)庫(kù)引擎,由程序直接調(diào)用相應(yīng)的 API19-21是一個(gè)實(shí)現(xiàn)了內(nèi)置的進(jìn)程型就可實(shí)現(xiàn)對(duì)數(shù)據(jù)的存取操作。庫(kù),它實(shí)現(xiàn)了自我包含,無(wú)服務(wù)器,零配置,事務(wù)型的 S

21、QL 數(shù)據(jù)庫(kù)引擎,其完全免費(fèi)的源代碼可以用于任何目的,包括商業(yè)的開(kāi)發(fā)。在項(xiàng)目開(kāi)發(fā)中,筆者發(fā)現(xiàn)是以 API設(shè)備和開(kāi)發(fā)函數(shù)庫(kù)的方式被開(kāi)發(fā)所調(diào)用的。隨著數(shù)據(jù)庫(kù)在桌面產(chǎn)品益廣泛的使用,對(duì)于使用作為數(shù)據(jù)庫(kù)管理系統(tǒng)的來(lái)說(shuō),能否準(zhǔn)確的知道當(dāng)前數(shù)據(jù)庫(kù)的狀況,能否方便的調(diào)試和數(shù)據(jù)庫(kù)的執(zhí)行,這對(duì)于減少數(shù)據(jù)庫(kù)設(shè)計(jì)方面的錯(cuò)誤和縮短產(chǎn)品的開(kāi)發(fā)周期都是的。第 1.3 節(jié) 課題意義和主要內(nèi)容虛擬儀器能通過(guò)應(yīng)用程序?qū)⒂?jì)算機(jī)與功能模塊硬件結(jié)合起來(lái),采用交互式圖形界面操作計(jì)算機(jī)來(lái)控制各種功能模塊,完成對(duì)被測(cè)試量、分析處理等任務(wù),突破數(shù)據(jù)庫(kù)除了具有傳統(tǒng)數(shù)了傳統(tǒng)儀器在功能單一和不易等方面的局限。據(jù)庫(kù)的主要功能,還具有可移植性、緊湊性

22、、簡(jiǎn)單性、靈活性、可靠性和易用性等其他強(qiáng)大特性,更是一個(gè)非常有效的工具,它能夠使用戶(hù)在產(chǎn)品中方便地、刪除或修改數(shù)據(jù),按照用戶(hù)要求對(duì)數(shù)據(jù)進(jìn)行排序查詢(xún),通過(guò) LabVIEW 與 C 混合編程的接口程序調(diào)用數(shù)據(jù)庫(kù)的技術(shù)不再受單一操作系統(tǒng)的限制,可以隨時(shí)隨地處理業(yè)務(wù)、傳遞信息,這種技術(shù)的發(fā)展能提高數(shù)據(jù)信息接入的普遍性,使人們可以隨時(shí)隨地獲取信息,實(shí)現(xiàn)更為快捷的信息傳遞。在本次課題中以 LabVIEW 為混合編程實(shí)現(xiàn)子 VI 調(diào)用數(shù)據(jù)庫(kù),此時(shí)就可通過(guò)在 LabVIEW 中調(diào)用 C 來(lái)實(shí)現(xiàn),實(shí)踐證明該方法高效易行,是增強(qiáng) LabVIEW 整體功能的一條相當(dāng)可靠的途徑。事實(shí)證明,LabVIEW 和數(shù)據(jù)庫(kù)的廣

23、泛應(yīng)用一定是未來(lái)領(lǐng)域發(fā)展的一個(gè)重要方向,而以其體積小巧、功能強(qiáng)大、接口方便、開(kāi)源免費(fèi)等優(yōu)勢(shì)成為數(shù)據(jù)庫(kù)領(lǐng)域的新寵。因此,間。數(shù)據(jù)庫(kù)必將擁有廣闊的市場(chǎng)和極度良好的發(fā)展空本課題的主要任務(wù)是設(shè)計(jì) LabVIEW 與數(shù)據(jù)庫(kù)的接口程序,通過(guò) LabVIEW與 C 的混合編程更好的展示虛擬儀器與數(shù)據(jù)庫(kù)在編程和數(shù)據(jù)管理方面的強(qiáng)大功能。主要內(nèi)容:1. 查閱大量國(guó)內(nèi)外關(guān)于LabVIEW 和對(duì)課題進(jìn)行全面系統(tǒng)地了解。數(shù)據(jù)庫(kù)的理論研究和應(yīng)用方面的文獻(xiàn),2.(1) 研究數(shù)據(jù)庫(kù)的 LabVIEW 接口程序具體設(shè)計(jì),主要包括:數(shù)據(jù)庫(kù)的配置與操作;(2) 研究如何使用 C#語(yǔ)言操作數(shù)據(jù)庫(kù);(3) 以 LabVIEW 為編程實(shí)

24、現(xiàn)子 VI 調(diào)用3.dll 文件操作數(shù)據(jù)庫(kù);(4) 利用 C#語(yǔ)言編程生成符合 SQL 語(yǔ)言并能實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的 DLL 文件,由 LabVIEW編程實(shí)現(xiàn) VI 調(diào)用操作數(shù)據(jù)庫(kù);(5) 程序完成以上功能后,將程序生成可執(zhí)行文件或者進(jìn)一步地生成安裝文件。第 2 章 接口程序設(shè)計(jì)技術(shù)分析第 2.1 節(jié)接術(shù)分析是一個(gè)小型的 C 程序庫(kù),實(shí)現(xiàn)了獨(dú)立的、可嵌入的、零配置的 SQL 數(shù)據(jù)庫(kù)引擎,其特性包括事務(wù)操作是原子的,一致的,孤立的,并且持久的(ACID 特性),它不像常見(jiàn)的客戶(hù)-服務(wù)器范例,但在大多數(shù)常見(jiàn)操作上比主流的客戶(hù)-服務(wù)器數(shù)據(jù)庫(kù)引擎更快;引擎不是個(gè)程序與之通信的獨(dú)立進(jìn)程,而是連接到程序

25、中成為它的一個(gè)主要部分。所以主要的通信協(xié)議是在編程語(yǔ)言?xún)?nèi)的直接 API 調(diào)用,這在消耗總量、延遲時(shí)間和整體簡(jiǎn)單性上有積極的作用,在設(shè)計(jì)具體的 API 函數(shù)之前,先簡(jiǎn)明一下很多 API 函數(shù)中都用到的兩個(gè)重要的參數(shù)類(lèi)型:3*和3 stmt*,從數(shù)據(jù)庫(kù)打開(kāi)開(kāi)始,庫(kù)打開(kāi)時(shí),就要為3*這個(gè)類(lèi)型準(zhǔn)備內(nèi)存,直到數(shù)據(jù)庫(kù)關(guān)閉為止。當(dāng)數(shù)據(jù)3*類(lèi)型的變量就代表了需要操作的數(shù)據(jù)庫(kù);3 stmt*數(shù)據(jù)類(lèi)型了一條已經(jīng)把 SQL 語(yǔ)句了并用本身標(biāo)記的 SQL 語(yǔ)句。整個(gè)數(shù)據(jù)庫(kù)(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上在一個(gè)單一的 dll到的,不需要進(jìn)文件中,該文件的源代碼在Home Page 主頁(yè)上是可以免費(fèi)行安裝和管理

26、,封裝簡(jiǎn)單,易于使用的 API 函數(shù),并且可用于任何用途,它的簡(jiǎn)單的設(shè)計(jì)是通過(guò)在開(kāi)始一個(gè)事務(wù)的時(shí)候鎖定整個(gè)數(shù)據(jù)文件而完成的,內(nèi)建 TCL 綁定,另外提供可用于許多其它語(yǔ)言的綁定,這也為本課題提供了方便,可于 LabVIEW 平臺(tái)上直接通過(guò)自帶的調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(Call Library Function Node)調(diào)用。第 2.2 節(jié)LabVIEW 調(diào)用技術(shù)LabVIEW 是一種用圖標(biāo)代替文本行創(chuàng)建應(yīng)用程序的圖形化編程語(yǔ)言。傳統(tǒng)文本編程語(yǔ)言根據(jù)語(yǔ)句和指令的先后順序決定程序執(zhí)行順序,而 LabVIEW 則采用數(shù)據(jù)流編程方式,程序框圖點(diǎn)之間的數(shù)據(jù)流向決定了 VI 及函數(shù)的執(zhí)行順序。LabVIEW提供

27、很多外觀與傳統(tǒng)儀器類(lèi)似的控件,可用來(lái)方便地創(chuàng)建用戶(hù)界面。用戶(hù)界面在LabVIEW 中被稱(chēng)為前面板。使用圖標(biāo)和連線,可以通過(guò)編程對(duì)前面板上的對(duì)象進(jìn)行控制。這就是圖形化源代碼。LabVIEW 的圖形化源代碼在某種程度上類(lèi)似于流程圖,因此又被稱(chēng)作程序框圖代碼。但是現(xiàn)有的 LabVIEW 版本本身并不具備數(shù)據(jù)庫(kù)功能,不能像 VB、VC+、Delphi、erBuilder 那樣非常方便的進(jìn)行數(shù)據(jù)庫(kù)程序的開(kāi)發(fā)。因此以 LabVIEW 編制的虛擬儀器系統(tǒng)需要其它輔助的方法來(lái)進(jìn)行數(shù)據(jù)庫(kù)。(1) 利用 NI 公司的附加工具包中的數(shù)據(jù)庫(kù)接口工具包 LabVIEW SQL Toolkit 進(jìn)行數(shù)據(jù)庫(kù)。該工具包集成了

28、一系列的高級(jí)功能模塊,這些模塊封裝了大多數(shù)的數(shù)據(jù)庫(kù)操作和一些高級(jí)的數(shù)據(jù)庫(kù)功能。它的優(yōu)點(diǎn)是易于理解,操作簡(jiǎn)單,用戶(hù)可以不學(xué)習(xí) SQL 語(yǔ)法。缺點(diǎn)是需要另外且價(jià)格昂貴,無(wú)疑會(huì)增加系統(tǒng)成本。(2) 利用 LabVIEW 的 ActiveX 功能,調(diào)用ADO 對(duì)象,利用 SQL 語(yǔ)言ADO 以及 SQL 語(yǔ)言有較深實(shí)現(xiàn)數(shù)據(jù)庫(kù)的。使用這種方法需要用戶(hù)對(duì)的了解。(3) 通過(guò)第開(kāi)發(fā)的免費(fèi)工具包 LabSQL。LabSQL 利用ADO 以及 SQL 語(yǔ)言來(lái)完成數(shù)據(jù)庫(kù),將復(fù)雜的底層LabSQL Vis 以供用戶(hù)使用。ADO 及 SQL 操作封裝成一系列的(4) 通過(guò)調(diào)用動(dòng)態(tài)庫(kù) DLL (Dynamic Link

29、 Library)。先利用其它語(yǔ)言如Visual C+編寫(xiě) DLL,再利用 LabVIEW 的調(diào)用庫(kù)函數(shù)節(jié)點(diǎn) CLFN(Calling LibraryFunction Node)調(diào)用此 DLL數(shù)據(jù)庫(kù)。但這種方法需要從底層進(jìn)行復(fù)雜的編程才能實(shí)現(xiàn),對(duì)非專(zhuān)業(yè)編程來(lái)講是不現(xiàn)實(shí)的。(5) 利用中間文件存取數(shù)據(jù)。先將數(shù)據(jù)存入文件之中,待測(cè)量結(jié)束后再用專(zhuān)門(mén)的工數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)之中。這種方法需要磁盤(pán)文件作為中介,而且不具有實(shí)時(shí)性,不方便使用。的特點(diǎn),擬采用 C#編寫(xiě) DLL針對(duì)上面提到的五種數(shù)據(jù)庫(kù)的特點(diǎn),結(jié)合文件實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的。第 2.3 節(jié) 接口程序設(shè)計(jì)框架通過(guò)上兩節(jié)內(nèi)容的分析,本課題擬采用以下設(shè)計(jì)方法實(shí)現(xiàn)

30、程序設(shè)計(jì):首先以LabVIEW 開(kāi)發(fā)編寫(xiě)程序,程序 VI 包括 3 個(gè)部分:程序前面板、框圖程序和圖標(biāo)/連接器。程序前面板用于用戶(hù)設(shè)置輸入數(shù)值和觀察輸出量,生成模仿傳統(tǒng)儀器的控制面板;每一個(gè)程序前面板都對(duì)應(yīng)著一段框圖程序,框圖程序用 LabVIEW 圖形編程語(yǔ)言編寫(xiě),類(lèi)似傳統(tǒng)程序的源代碼,連接器是子程序 SubVI 被其它 VI 調(diào)用的接口。數(shù)據(jù)庫(kù)提供了完整的 API 接口,本次課題通過(guò) LabVIEW 的 API其次使用接口功能即調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(在程序框圖界面右鍵選擇互聯(lián)接口庫(kù)與可執(zhí)行程序調(diào)用庫(kù)函數(shù)節(jié)點(diǎn))來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。圖 21 是數(shù)據(jù)庫(kù)的操作流程。第 3 章 基礎(chǔ)程序模塊設(shè)計(jì)實(shí)現(xiàn)第

31、3.1 節(jié) LabVIEW數(shù)據(jù)庫(kù)3.1.1 創(chuàng)建(或打開(kāi)已有)數(shù)據(jù)庫(kù)打開(kāi)數(shù)據(jù)庫(kù)用到的是3_open(const char *filename, 3 *ppDb);3_open()。函數(shù)原型如下:/* Database filename (UTF-8) */* OUT:db handle */通過(guò)該函數(shù)開(kāi)始數(shù)據(jù)庫(kù)操作之前,需要輸入的參數(shù)是數(shù)據(jù)庫(kù)文件的完整路徑,例如:c:test.db。3 * 返回的是數(shù)據(jù)庫(kù)的操作句柄(),是一個(gè) 32 位有符號(hào)整型_OK(0)則表示操作正常。數(shù)據(jù)。函數(shù)返回值表示操作是否正確,如果返回圖 31:LabVIEW 中打開(kāi)數(shù)據(jù)庫(kù)節(jié)點(diǎn)圖 32:3_open 參數(shù)配置3.1

32、.2 執(zhí)行 SQL 語(yǔ)句執(zhí)行一條 SQL 語(yǔ)句需要三個(gè)步驟,與之相關(guān)的函數(shù)為:3_prepare()、3_step()、3_finalize(),即編譯 SQL 字節(jié)碼、執(zhí)行語(yǔ)句與銷(xiāo)毀字節(jié)碼,下面詳細(xì)的展示了這幾個(gè)函數(shù)的作用和用法。a. SQL 語(yǔ)句(編譯)中并不能直接識(shí)別 SQL 語(yǔ)句,在執(zhí)行 SQL 操作前需要先將 SQL 語(yǔ)句編譯3_prepare()函數(shù)來(lái)執(zhí)行SQL成可識(shí)別的二進(jìn)制字節(jié)碼,為此提供了語(yǔ)句的編譯。3_prepare()函數(shù)原型為: 3_prepare(3 *db, const char *zSql,nByte,3_stmt *ppStmt, const char *pzT

33、ail);/* Database handle */* SQL sement, UTF-8 encoded */*um length of zSql in bytes. */* OUT: Semenndle */* OUT: Poer to unused portion of zSql */函數(shù)返回的參數(shù) Stmt 是已成功編譯的二進(jìn)制字節(jié)碼,提供給后續(xù)的操作函數(shù)使用,如圖 34。圖 33:LabVIEW 中編譯 SQL 語(yǔ)句節(jié)點(diǎn)圖 34:3_prepare()接口函數(shù)3_prepare 參數(shù)配置數(shù)據(jù)庫(kù)是當(dāng)前比較便捷的使用法。注:輸入?yún)?shù)中只有第一條 SQL 語(yǔ)句才會(huì)被接口函數(shù)編譯。b. 執(zhí)行

34、 SQL 語(yǔ)句在 SQL準(zhǔn)備好之后, 需要調(diào)用3_step()函數(shù)來(lái)執(zhí)行 SQL 語(yǔ)句。3_step()函數(shù)原型:3_step(3_stmt*);圖 35:LabVIEW 中執(zhí)行 SQL 語(yǔ)句節(jié)點(diǎn)成功執(zhí)行完UPDATE、CREATE3_step() 后并不會(huì)返回_OK(0),在執(zhí)行 INSERT 、TABLE、DELETE 等數(shù)據(jù)庫(kù)操作時(shí),如果 SQL 語(yǔ)句執(zhí)行成功或者正常3_step() 函數(shù)將返回_DONE(101),否則將返回錯(cuò)誤代碼。在執(zhí)行 SELETE 操作時(shí),如果 SQL 返回了查詢(xún)結(jié)果,_ROW(100)。3_step() 函數(shù)將返回圖 36:3_step 參數(shù)配置圖 37:La

35、bVIEW 中結(jié)束 SQL 語(yǔ)句節(jié)點(diǎn)圖 38:3_finalize 參數(shù)配置c. 結(jié)束 SQL 語(yǔ)句在關(guān)閉數(shù)據(jù)庫(kù)之前,必須先將所有之前已經(jīng)準(zhǔn)備好的3_prepare()函數(shù)之后,任何時(shí)候都可以通過(guò)調(diào)用并銷(xiāo)毀,在執(zhí)行了3_finalize()函數(shù)將一個(gè)準(zhǔn)備好的 SQL銷(xiāo)毀。3_finalize()函數(shù)原型:3_finalize(d.關(guān)閉數(shù)據(jù)庫(kù)3_stmt*);3_finalize()函數(shù)將 SQL3_close()函數(shù)通過(guò)調(diào)用銷(xiāo)毀之后,即可用關(guān)閉已打開(kāi)的數(shù)據(jù)庫(kù),內(nèi)存資源。3_close()函數(shù)原型:3_close(3 *);圖 39:LabVIEW 中關(guān)閉數(shù)據(jù)庫(kù)節(jié)點(diǎn)圖 310:3_close 參

36、數(shù)配置運(yùn)用上述操作完成在 LabVIEW 中通過(guò)調(diào)用3 中的函數(shù)創(chuàng)建數(shù)據(jù)表實(shí)例,圖 312 和圖 313 分別是該實(shí)例的程序框圖和運(yùn)行后的前面板的顯示情況。圖 311:LabVIEW 中創(chuàng)建數(shù)據(jù)表實(shí)例程序框圖圖 312:運(yùn)行后前面板顯示情況3.1.3 LabVIEW 和 DLL 之間參數(shù)配置說(shuō)明DLL 和 LabVIEW 之間傳遞參數(shù),最常用的三種數(shù)據(jù)類(lèi)型是數(shù)值、數(shù)值型數(shù)組和字符串。C 語(yǔ)言中經(jīng)常把指針或者數(shù)據(jù)的地址在函數(shù)間傳遞,在 32 位操作系統(tǒng)中,可以使用 32 數(shù)值來(lái)表示指針。因此,當(dāng)需要在 LabVIEW 中傳遞指針數(shù)據(jù)時(shí),可以使用 I32 或 U32 數(shù)值類(lèi)型來(lái)表示這個(gè)地址類(lèi)型的數(shù)

37、據(jù)。但是,64 位的程序中,數(shù)據(jù)的地址只能使用 I64 或 U64 來(lái)表示。這樣,如果一個(gè)調(diào)用了 DLL 函數(shù)的 VI,并且函數(shù)參數(shù)中有地址型數(shù)據(jù),使用固定數(shù)據(jù)類(lèi)型的數(shù)值來(lái)表示地址,就要準(zhǔn)備兩份代碼。解決方法是使用 LabVIEW 中的新的數(shù)據(jù)類(lèi)型 Poer-sizedeger。這個(gè)數(shù)據(jù)類(lèi)型的長(zhǎng)度在不同的上會(huì)自動(dòng)使用32 位或 64 位長(zhǎng)度。如果在 C 語(yǔ)言函數(shù)參數(shù)中有 const 關(guān)鍵字,可以選中 Constant選項(xiàng)。類(lèi)型在 DLL 函數(shù)和 LabVIEW VI 之間傳遞沒(méi)有專(zhuān)有的數(shù)據(jù)類(lèi)型,是利用值轉(zhuǎn)變?yōu)閿?shù)值,在傳遞給 DLL 函數(shù);輸出時(shí)再數(shù)值類(lèi)型來(lái)傳遞的。輸入時(shí)先把把數(shù)值轉(zhuǎn)為值。對(duì)于數(shù)

38、組的傳遞,LabVIEW 只支持 C 數(shù)據(jù)類(lèi)型中的數(shù)值型數(shù)組,傳遞數(shù)組類(lèi)型需要注意的是“Array Format”要選擇“Array Data Poer”。這個(gè)設(shè)置中還有其他兩個(gè)選項(xiàng),帶有“Handle”的參數(shù)類(lèi)型都是表示 LabVIEW 定義的特殊類(lèi)型的。的 DLL 中不會(huì)使用到數(shù)組參數(shù)作為輸出值時(shí),要記得為輸出的數(shù)組數(shù)在第開(kāi)辟空間。開(kāi)辟數(shù)據(jù)空間的方法有兩種:第法,創(chuàng)建一個(gè)長(zhǎng)度滿(mǎn)足要求的數(shù)組,作為初始值傳遞給參數(shù),輸出數(shù)的數(shù)據(jù)就會(huì)被放置在輸入數(shù)組的所在的內(nèi)存空間內(nèi)。第二種方法是直接在參數(shù)配置面板上進(jìn)行設(shè)置。在 Minimum size 中寫(xiě)入一個(gè)固定的數(shù)值,LabVIEW 就會(huì)按此大小為輸出

39、的數(shù)組開(kāi)辟空間。在 Minimum size 中選擇函數(shù)的其它數(shù)值參數(shù),而不是固定數(shù)值。這樣 LabVIEW 會(huì)按照當(dāng)時(shí)被選擇的參數(shù)值的大小來(lái)開(kāi)辟空間。字符串與使用與數(shù)組是非常類(lèi)似的,實(shí)際上在 C 語(yǔ)言中字符串就是一個(gè)I8 數(shù)組。3.1.4 對(duì)數(shù)據(jù)庫(kù)進(jìn)行基本操作圖 312 所示為利用 LabVIEW 在數(shù)據(jù)庫(kù) test 中創(chuàng)建簡(jiǎn)單的空白數(shù)據(jù)表格的過(guò)程,接下來(lái)對(duì)該表格進(jìn)行簡(jiǎn)單的操作如 insert、select、update 和 delete 等。a. insert使用insert 命令可以向表格中一次一條,insert 語(yǔ)句的一般格式:insertotable (column_list) va

40、lues (value_list);其中變量 table 為數(shù)據(jù)要表的名稱(chēng),變量column_list 為用逗號(hào)分隔的表中必須存在的字段名稱(chēng),變量 value_list 是用逗號(hào)分隔的值列表,值與字段必須一一對(duì)應(yīng)。下面向已經(jīng)建立好的 student 表格里一條數(shù)據(jù),指令為 inserto student (id,number,name)values (NULL,2011014178,lishuo);運(yùn)行程序之后打開(kāi)數(shù)據(jù)庫(kù) teststudent 可以看到剛才b.select的數(shù)據(jù),如圖 314 所示。使用select 形式的insert 命令可以一次多行,其形式為select * from t

41、able wherepredicate,下面重新創(chuàng)建空白表格 student2,執(zhí)行下列語(yǔ)句 inserto student2 select *from student;即可把 student 表格中的數(shù)據(jù)完全所示。到 student2 中,如圖 315 和 316c. delete使用 delete 命令可以刪除表中的,其一般格式為 delete from table where圖 313:執(zhí)行 insert 命令后表 student 情況圖 314:update 語(yǔ)句執(zhí)行前圖 315:表 student2 完全相同于 student圖 316:delete 語(yǔ)句執(zhí)行后第一行被刪除predi

42、cate;其中 where 子句的用法同 select,但其作用是確定需要被刪除的。如圖 317 所示,語(yǔ)句 delete from student where name=LISHUO;被執(zhí)行之后表 student中第一行數(shù)據(jù)即被刪除。d.update用 update 命令可以修改一個(gè)表中一行或多行中的一個(gè)或多個(gè)字段,其一般格式為update table set update_list where predicate;其中 update_list 是一個(gè)或多個(gè)“字段賦值”的列表,字段賦值格式為 column_name=value。where 的用法同 select 語(yǔ)句例如輸入update s

43、tudent set name=LISHUO315 和 318 所示。wherename=lishuo;執(zhí)行語(yǔ)句前后情況對(duì)比如圖圖 317:update 語(yǔ)句執(zhí)行后第 3.2 節(jié) LabVIEW 調(diào)用 C#DLL 文件數(shù)據(jù)庫(kù)3.2.1 C#創(chuàng)建和調(diào)用 DLL新建一個(gè)類(lèi);在類(lèi)內(nèi)添加代碼實(shí)現(xiàn)一個(gè)功能簡(jiǎn)單的實(shí)例對(duì)象,代碼如下; using System;using System.Collections.Generic; using System.Linq;using System.Text;namespace DllTest1public class Class1public void ShowMe

44、ssage()Console.Wriine(調(diào)用DLL文件成功!);Console.ReadKey();3. 配置輸出:打開(kāi)解決方案管理器在解決方案 DllTest1 上右鍵屬性,在應(yīng)用程序選卡中需要注以下三個(gè)方面。1.程序集名稱(chēng) 2.默認(rèn)命名空間 3.輸出類(lèi)型。圖 318:配置詳情此處這樣定義 1.DllTest1;2.DllTest1;3.類(lèi)庫(kù);這些設(shè)置對(duì)后續(xù)調(diào)用非常重要。4. 生成 dll,在菜單欄單擊生成生成 DllTest1(U),或者按 shfit+F6,此時(shí)輸出窗口顯示生成成功,且在目錄下能找到生成的 dll 文件;圖 329:生成 DLLTest1 及結(jié)果5.用。6.調(diào)用該 d

45、ll:新建一個(gè)名為 DLLExle1 控制臺(tái)應(yīng)用程序,來(lái)實(shí)現(xiàn)該 dll 的調(diào)在新建的項(xiàng)目?jī)?nèi)添加,該 dll。圖 320:結(jié)果7.成功后,即可在程序中調(diào)用。using System;using System.Collections.Generic; using System.Linq;using System.Text;using System.Runtime.using DllTest1;eropServi;namespace DLLexclass Programle1DllImport(DllTest1.dll)public sic extern void ShowMessage();sic

46、 void Main(string args)DllTest1.Class1 i = new Class1();i.ShowMessage();8.調(diào)用結(jié)果。圖 321:調(diào)用結(jié)果3.2.2 LabVIEWC#編寫(xiě)的 DLL 使用 VS2010 生成預(yù)定的 DLL 文件1. 新建一個(gè)類(lèi)庫(kù)名為 ConSys;注意:此處的.NET 框架選擇 3.5 版本,與后面調(diào)用的工具 LabVIEW2014 相對(duì)應(yīng),否則調(diào)用會(huì)出錯(cuò)。圖 322:解決方案配置2. 在中添加 System.Data.;該文件可在:此處應(yīng)注意到,適合系統(tǒng)版本的文件,如下圖為適用于 32 位 Windows 系統(tǒng)的安裝文件

47、,安裝解壓后在相應(yīng)的路徑下會(huì)產(chǎn)生相應(yīng)的 DLL 文件。圖 323:DLL 文件頁(yè)面3. 在類(lèi)中編寫(xiě)代碼,實(shí)現(xiàn)預(yù)定的功能,利用代碼生成 dll 文件;using System;using System.Collections.Generic; using System.Linq;using System.Text;using System.Data;using System.Data.;namespace ConSyspublic class Class/ / 創(chuàng)建/ 數(shù)據(jù)庫(kù)文件/ 要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)文件完整路徑/ 執(zhí)行的SQL查詢(xún)語(yǔ)句,創(chuàng)建表 public sic void Create(stri

48、ng dbPath, string dbTableName)using ( Source= + dbPath)Connection connection = newConnection(Dataconnection.Open();using mand(connection)(mandd=newmandText = create table student (idegerprimary key,numbereger,name text) ;mandText = dbTableName;d.ExecuteNonQuery();mandText = drop table student;mand.E

49、xecuteNonQuery();注意:在更改.cs 文件后直接運(yùn)行生成的 dll 文件無(wú)法更新,必須用屬性更改文件名的形式重新生成 dll 文件,這時(shí)程序內(nèi)容才能得到修改。 使用 LabVIEW2014 調(diào)用生成的 dll注意:.NET Framework 2.0、3.0 和 3.5 使用 CLR 2.0。但不能配置 LabVIEW2014 使用 CLR 4.0 指向較早版本 CLR 的程序集在 CLR 4.0 中運(yùn)行,且可能不按預(yù)期方式執(zhí)行。如需啟用下列對(duì)象加載指向 CLR 2.0 的.NET 混合模式程序集,必須使用下面的配置文件:按照下列步驟,配置 LabVIEW2014

50、 加載指向 CLR 2.0 的.NET 混合模式程序集:1. 打開(kāi)文本編輯器。2. 將下列文本supported Runtime ver=v4.0.30319/將該配置文件保存在LabVIEW.exe 同一個(gè)目錄下。將文件命名為L(zhǎng)abVIEW. exe. config。重新啟動(dòng) LabVIEW2014。重啟后 LabVIEW2014 將加載指向 CLR 2.0 的.NET 混合模式程序集,此處LabVIEW 較早版本不用進(jìn)行以上配置,可直接進(jìn)行下面工作。 建立工程子 VI切換到建立 vi 的程序框圖,右鍵選擇互聯(lián)接口.NET構(gòu)造器節(jié)點(diǎn)到程序框圖:圖 324:.NET 面板此時(shí)將自

51、動(dòng)打開(kāi)選擇.NET 構(gòu)造器,如下圖所示:圖 325:.NET 構(gòu)造器點(diǎn)擊瀏覽按鈕,選擇要調(diào)用的 DLL:點(diǎn)擊確定后在對(duì)象中選擇 Class:,如下圖 3.28 所示:圖 326:選擇 Class()點(diǎn)擊確定按鈕關(guān)閉框。右鍵選擇互聯(lián)接口.NET調(diào)用節(jié)點(diǎn)(.NET)到程序框圖見(jiàn)圖 3.29。圖 327:.NET 面板調(diào)用節(jié)點(diǎn)將構(gòu)造器節(jié)點(diǎn)的“新”輸出端與調(diào)用節(jié)點(diǎn)的“”輸入端連接起來(lái),然后點(diǎn)擊調(diào)用節(jié)點(diǎn)上的“方法”,選擇要使用的方法,這里選擇 Cre3()如圖 3.30。圖 328:選擇函數(shù) Cre3()右鍵選擇互聯(lián)接口.NET關(guān)閉到程序框圖,并連接調(diào)用節(jié)點(diǎn)的“輸出”輸出端到關(guān)閉如下圖所示。的“”輸入端

52、,右鍵關(guān)閉的錯(cuò)誤輸出創(chuàng)建顯示控件,圖 329:.NET 關(guān)閉對(duì)應(yīng)的 VI 程序框圖界面:圖 330:VI 程序框圖前面板顯示情況為:圖 331:前面板面板 db TableName 字符串輸入控件中輸入 SQL 語(yǔ)句 createtable student (idbrowser 查看生egrimary key,numbereger,name text);運(yùn)行程序后利用成的數(shù)據(jù)庫(kù)表如圖 3.34:圖 332:創(chuàng)建 student 表格由此可知程序已經(jīng)成功調(diào)用 dll 文件并運(yùn)行成功。同樣輸入下列 SQL 語(yǔ)句:insert insertinserto student values (1,2011

53、014177,Li Haozhang);o student values (NULL,2011014178,Li Shuo);o student values (NULL,2011014179,Zou Yanbin);運(yùn)行程序后,刷新數(shù)據(jù)表如圖,已經(jīng)在表 student 中了 3 行數(shù)據(jù)如圖 3.35。圖 333:數(shù)據(jù)圖 334:修改數(shù)據(jù)輸入 update student set name=LISHUO where name=Li Shuo;語(yǔ)句,運(yùn)行程序刷新數(shù)據(jù)表,結(jié)果表中 Li Shuo 數(shù)據(jù)被修改為 LISHUO,如圖。輸入 delete from student where name=

54、LISHUO;語(yǔ)句并運(yùn)行程序,數(shù)據(jù)表中LISHUO 數(shù)據(jù)所在的行被刪除如下圖。圖 335:刪除數(shù)據(jù) 常見(jiàn)錯(cuò)誤處理在運(yùn)行 LabVIEW 程序時(shí)可能出現(xiàn)下面的錯(cuò)誤:調(diào)用節(jié)點(diǎn)異常 System.Dll NotFound Exception: 無(wú)法加載.erop.DLL 文件,找不到指定的模塊。這個(gè)問(wèn)題是在程序綠化 System.Data.法:.dll 的時(shí)候出現(xiàn)的,有以下幾種解決辦1 在下面的的 1.0.81 版本的單文件整合型的 dll 是可以直接使用的。/2 在下面的的 Setups for 32-bit Windows (.NET Framework 3.5 SP1)的安裝文件

55、安裝后也是可以解決問(wèn)題的但上面兩種都有可能不是最理想的解決方案,1方案的 dll 是 2010 年 4 月 18 日更新的版本,有點(diǎn)老舊,2方案需要在電腦上進(jìn)行一次dll 文件,如你所知是通過(guò)單獨(dú)調(diào)用就可以的,于是在setup的安裝,而的piled來(lái)上Binaries for 32-bit Windows (.NET Framework 3.5 SP1)成了最佳解決方案,此處的是一個(gè) zip 壓縮文件,解壓后里面的 dll 直接放在應(yīng)用程序目錄下即可以解決問(wèn)題,但這樣的 zip 也有兩個(gè)選擇。3 一個(gè)是帶有 bundle 字樣的單 dll 形式的,經(jīng)測(cè)試,在.Net 2.0 安裝正確的前提下,

56、這個(gè)方案也是可以解決問(wèn)題的。4 還有一種是不帶有 bundle 字樣的,內(nèi)會(huì)多出一個(gè).erop.DLL 文件,這個(gè)文件雖然在編程的時(shí)候不用添加 ,但是在程序運(yùn)行的時(shí)候需要和 System.Data.dll 放在同一目錄下才可以。本課題中直接采用第4種方案解決出現(xiàn)。第 4 章 接口程序設(shè)計(jì)實(shí)現(xiàn)及調(diào)試第 4.1 節(jié) 生成可供調(diào)用的 DLL 文件按照第 節(jié)所述創(chuàng)建一個(gè)類(lèi)庫(kù)并進(jìn)行同樣設(shè)置,添加所需,具體過(guò)程不再贅述,在類(lèi)中編寫(xiě)如下代碼,using System;using System.Collections.Generic; using System.Linq;using Syste

57、m.Text;using System.Data;System. Data.using System.Data.;namespace ConSyspublic class Class/ / 創(chuàng)建/ 數(shù)據(jù)庫(kù)文件/ 要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)文件完整路徑/ 執(zhí)行的SQL查詢(xún)語(yǔ)句創(chuàng)建表 public sic void Create(string dbPath, string dbTableName)using ( Source= + dbPath)Connection connection = newConnection(Dataconnection.Open();using (mandd =d(connect

58、ion)mandText = create table student (idegerprimary key, numbereger, name text) ;mandText = dbTableName; d.ExecuteNonQuery();mandText = drop table student;mand.ExecuteNonQuery();public s public sic string result;ic string SELECT1(string sql, string dbTableName)using ( Source= + dbTableName)Connection

59、 connection =newConnection(Dataconnection.Open();using mand(connection)(mandd=newDataSet data = new DataSet();DataAdapter da = newDataAdapter();mandcmd=d(sql,connection);mand = cmd;DataReader dr = cmd.ExecuteReader(); while (dr.Read()result += dr.GetString(0) + ;/da.Fill(data,name);/result = daables

60、name.ToString();return result;確認(rèn)無(wú)誤后生成解決方案和 DLL。第 4.2 節(jié) 創(chuàng)建工程編寫(xiě)程序 VI4.2.1 逐個(gè)編寫(xiě)子 VI如前面所述新建項(xiàng)目“畢設(shè)”,并右鍵電腦新建VI,添加多個(gè)子 VI 并分別命名,圖 41:子 VI 樹(shù)圖按照各個(gè)子 VI 預(yù)定的目的在程序框圖界面進(jìn)行編程,編程方法同第 3 章類(lèi)似,這里不再詳細(xì)描述,只說(shuō)明各個(gè) VI 的功能,其中 create.vi 的功能為創(chuàng)建(或打開(kāi)已有)數(shù)據(jù)庫(kù),并創(chuàng)建表格或索引等,如圖 4.2 所示,其中參數(shù) dbPath 為數(shù)據(jù)庫(kù)文件的絕對(duì)路徑,參數(shù) dbTableName 為面板輸入的 SQL 語(yǔ)句(如 cre

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論