亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于LabVIEW和Java存儲(chǔ)過(guò)程的數(shù)據(jù)自動(dòng)采集接口的實(shí)現(xiàn)與應(yīng)用

        2008-01-29 00:26:34,,,,
        船海工程 2008年1期
        關(guān)鍵詞:調(diào)用事務(wù)船舶

        , ,, ,

        (1.中國(guó)船舶科學(xué)研究中心,江蘇 無(wú)錫 214082;2.江南大學(xué) 信息工程學(xué)院,江蘇 無(wú)錫 214122; 3.無(wú)錫職業(yè)技術(shù)學(xué)院,江蘇 無(wú)錫 214121)

        船舶數(shù)字化平臺(tái)項(xiàng)目的主要目標(biāo)是實(shí)現(xiàn)從中國(guó)船舶研究中心重點(diǎn)實(shí)驗(yàn)室試驗(yàn)數(shù)據(jù)的采集、整理、分析和整合,并實(shí)現(xiàn)基于集中的中央數(shù)據(jù)庫(kù)開(kāi)發(fā)艦船性能預(yù)報(bào)系統(tǒng),提供數(shù)據(jù)訪問(wèn)和交換服務(wù)性能預(yù)報(bào)系統(tǒng),提供數(shù)據(jù)訪問(wèn)和交換服務(wù)。利用LabVIEW[1]的數(shù)據(jù)采集[2]和對(duì)數(shù)據(jù)庫(kù)的操作功能以及Java的存儲(chǔ)過(guò)程,在船舶數(shù)據(jù)庫(kù)平臺(tái)上實(shí)現(xiàn)數(shù)據(jù)自動(dòng)采集接口。

        1 LabVIEW數(shù)據(jù)采集

        1.1 LabVIEW程序簡(jiǎn)介

        LabVIEW的程序由前面板和流程圖兩部分組成,整個(gè)程序是基于多線程的設(shè)計(jì),前面板和流程圖各占用一個(gè)線程。前面板是LabVIEW程序的圖形用戶接口,此接口集成了用戶輸入,并顯示程序的輸出,相當(dāng)于傳統(tǒng)儀器的面板。流程圖包含虛擬儀器程序的圖形化源代碼,編程控制和定義在前面板上的輸入和輸出功能。

        1.2 LabVIEW數(shù)據(jù)采集流程

        數(shù)據(jù)采集的整個(gè)過(guò)程見(jiàn)圖1。

        圖1 LabVIEW數(shù)據(jù)采集流程圖

        圖3 LabVIEW數(shù)據(jù)自動(dòng)入庫(kù)

        在數(shù)據(jù)采集之前,程序?qū)?duì)DAQ板卡初始化,板卡上和內(nèi)存中的Buffer是數(shù)據(jù)采集存儲(chǔ)的中間環(huán)節(jié)。采集卡的數(shù)據(jù)先送到Buffer,由于采用的卡有DMA性能,模擬輸入操作就有一個(gè)通向計(jì)算機(jī)內(nèi)存的高速硬件通道,這就意味著所采集的數(shù)據(jù)直接送到計(jì)算機(jī)的內(nèi)存。觸發(fā)涉及初始化、終止或同步DAQ事件的任何方法。觸發(fā)器通常是一個(gè)數(shù)字或模擬信號(hào),其狀態(tài)可確定動(dòng)作的發(fā)生。硬件觸發(fā)讓板卡上的電路管理觸發(fā)器,控制了DAQ事件的時(shí)間分配,有很高的精確度。自動(dòng)采集接口首先由采集到的數(shù)據(jù)通過(guò)通用接口總線傳輸給主機(jī),由 LabVIEW試驗(yàn)系統(tǒng)程序進(jìn)行相應(yīng)處理后,再通過(guò)Java存儲(chǔ)過(guò)程將原始數(shù)據(jù)和信息存儲(chǔ)到數(shù)據(jù)庫(kù)中。

        1.3 LabVIEW數(shù)據(jù)自動(dòng)采集程序結(jié)構(gòu)圖

        在數(shù)據(jù)采集到以后,數(shù)據(jù)將會(huì)進(jìn)行分析,然后將分析處理后的數(shù)據(jù)直接導(dǎo)入到船舶數(shù)字化平臺(tái)中。將分析好的數(shù)據(jù)利用Java的存儲(chǔ)過(guò)程導(dǎo)入到船舶數(shù)字化平臺(tái)中的程序結(jié)構(gòu)見(jiàn)圖2。

        圖2 LabVIEW配置程序

        LabVIEW配置程序圖中描述的是將LabVIEW進(jìn)行數(shù)據(jù)庫(kù)連接的配置,確保每次都能夠連接上數(shù)據(jù)庫(kù)。

        在LabVIEW數(shù)據(jù)自動(dòng)入庫(kù)圖中,LabVIEW設(shè)置了一些參數(shù)的類型和數(shù)據(jù)的格式,然后用call方法來(lái)調(diào)用Java存儲(chǔ)過(guò)程,利用存儲(chǔ)過(guò)程將數(shù)據(jù)自動(dòng)保存到船舶數(shù)字化平臺(tái)中。在保存的過(guò)程中,如果檢測(cè)到數(shù)據(jù)有問(wèn)題或者數(shù)據(jù)格式不對(duì),Java的存儲(chǔ)過(guò)程就會(huì)執(zhí)行事物的回滾,LabVIEW會(huì)提示保存出錯(cuò);如果檢測(cè)不到錯(cuò)誤,LabVIEW會(huì)提示添加成功。

        2 存儲(chǔ)過(guò)程

        2.1 Java的存儲(chǔ)過(guò)程與PL/SQL的存儲(chǔ)過(guò)程

        從Oracle8i開(kāi)始,Oracle已經(jīng)在數(shù)據(jù)庫(kù)中支持Java,從而為存儲(chǔ)過(guò)程提供了不同于PL/SQL的開(kāi)放式和可移植的方法。兩種語(yǔ)言都適用于數(shù)據(jù)庫(kù)編程,對(duì)于要求與SQL進(jìn)行無(wú)縫集成的數(shù)據(jù)庫(kù)中心來(lái)說(shuō)則邏輯使用PL/SQL,從而完成對(duì)數(shù)據(jù)庫(kù)對(duì)象、類型和特性的訪問(wèn)。

        出于與數(shù)據(jù)庫(kù)的無(wú)關(guān)性考慮,可以選擇Java作為開(kāi)放式的語(yǔ)言來(lái)取代PL/SQL,同時(shí)也為了集成和溝通SQL、XML、J2EE和Web服務(wù)等各個(gè)領(lǐng)域。

        2.2 創(chuàng)建存儲(chǔ)過(guò)程的Java方法

        2.2.1 數(shù)據(jù)的處理

        Java的存儲(chǔ)過(guò)程中首先是進(jìn)行數(shù)據(jù)的處理,主要有以下一些處理:

        1) 有些船舶數(shù)字化平臺(tái)中設(shè)定為非空的數(shù)據(jù)如果在LabVIEW中為空,那么在Java的存儲(chǔ)過(guò)程中會(huì)進(jìn)行處理,使數(shù)據(jù)不能保存到船舶數(shù)字化平臺(tái);

        2) 設(shè)定LabVIEW分析好的數(shù)據(jù)的格式全部為字符串類型,在Java的存儲(chǔ)過(guò)程中將會(huì)對(duì)這些字符串?dāng)?shù)據(jù)進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換,使數(shù)據(jù)能和船舶數(shù)字化平臺(tái)中的數(shù)據(jù)類型保持一致;

        3) 在一些包含了許多單獨(dú)字段的字符串,對(duì)其進(jìn)行分割,用字符數(shù)組來(lái)保存這些分割好的數(shù)據(jù)。

        2.2.2 事務(wù)的處理

        在數(shù)據(jù)庫(kù)操作中,一項(xiàng)事務(wù)是指由一條或多條對(duì)數(shù)據(jù)庫(kù)更新的sql語(yǔ)句所組成的一個(gè)不可分割的工作單元。只有當(dāng)事務(wù)中的所有操作都正常完成了,整個(gè)事務(wù)才能被提交到數(shù)據(jù)庫(kù),如果有一項(xiàng)操作沒(méi)有完成,就必須撤消整個(gè)事務(wù)。由于對(duì)數(shù)據(jù)庫(kù)進(jìn)行了多次操作,每一次的執(zhí)行或步驟都是一個(gè)事務(wù).如果數(shù)據(jù)庫(kù)操作在某一步?jīng)]有執(zhí)行或出現(xiàn)異常而導(dǎo)致事務(wù)失敗,這樣有的事務(wù)被執(zhí)行有的就沒(méi)有被執(zhí)行,從而就有了事務(wù)的回滾,取消先前的操作。在jdbcapi中,可以通過(guò)調(diào)用setAutoCommit(false)來(lái)禁止自動(dòng)提交事務(wù)。然后就可以把多條更新數(shù)據(jù)庫(kù)的sql語(yǔ)句做為一個(gè)事務(wù),在所有操作完成之后,調(diào)用commit()來(lái)進(jìn)行整體提交。倘若其中一項(xiàng)sql操作失敗,就不會(huì)執(zhí)行commit()方法,而是產(chǎn)生相應(yīng)的sqlexception,此時(shí)就可以捕獲異常代碼塊中調(diào)用rollback()方法來(lái)撤消事務(wù)。

        2.2.3 自增序列的查詢與插入

        在數(shù)據(jù)庫(kù)的表結(jié)構(gòu)中,有些字段被設(shè)置為主鍵,并且是自增的。在查詢這些字段時(shí)可以采用no_zlcon_s.currval,插入這些字段可以采用no_zlcon_s.nextval。其中no_zlcon_s為其中一張表的sequence。并且在做這些操作的時(shí)候應(yīng)該先做no_zlcon_s.nextval,然后做no_zlcon_s.currval。

        2.3 裝載Java存儲(chǔ)過(guò)程到ORACLE

        LoadJava是加載Java源文件、Java類文件和Java資源文件的實(shí)用程序,它可以用來(lái)驗(yàn)證字節(jié)碼,并將Java類和JAR文件布置到數(shù)據(jù)庫(kù)中。它既可以通過(guò)命令行調(diào)用,也可以通過(guò)包含于DBMS_Java類中的loadJava()方法調(diào)用。為了加載zlcon類,輸入:

        loadJava-user ksx/cssrc@cssrcdb D:zlcon.class。

        其中,ksx為用戶名;cssrc為用戶密碼;cssrcdb為SID,為zlcon類存放的物理位置。

        利用這個(gè)命令,可以將zlcon類裝載到ORACLE數(shù)據(jù)庫(kù)的KSX用戶下。

        2.4 生成存儲(chǔ)過(guò)程調(diào)用

        為了從ORACLE中調(diào)用Java方法(以及從PL/SQl和JDBC中調(diào)用),必須首先通過(guò)Call Spec發(fā)布公共靜態(tài)方法,它為SQL定義方法采用的參數(shù)以及返回的SQL類型。Java存儲(chǔ)過(guò)程可以通過(guò)其Call Spec從以下各項(xiàng)中進(jìn)行調(diào)用:SQL DML語(yǔ)句(INSERT, UPDATE、DELETE、SELECT、CALL、EXPLAIN PLAN、LOCK TABLE和MERGE)、PL/SQL塊、子程序、程序包以及數(shù)據(jù)庫(kù)觸發(fā)器。可以像下面這樣生成調(diào)用的Java存儲(chǔ)過(guò)程:

        create or replace function addzlconzlori(ShipModleID varchar2,PropellerModuleID varchar2,……) return varchar2 as language Java name ‘zlcon.addzlconzlori(Java.lang.String,Java.lang.String,……)’ return Java.lang.String。

        這樣就創(chuàng)建了一個(gè)addzlconzlori存儲(chǔ)過(guò)程,相當(dāng)于在ORACLE里面存在這樣一個(gè)方法,可以被其他程序來(lái)調(diào)用,并且其中還涉及到存儲(chǔ)過(guò)程的返回值。

        3 LabVIEW調(diào)用Java的存儲(chǔ)過(guò)程

        3.1 LabVIEW中訪問(wèn)船舶數(shù)字化平臺(tái)

        LabVIEW本身并不具備數(shù)據(jù)庫(kù)訪問(wèn)功能,因此以LabVIEW編制的虛擬儀器系統(tǒng)需要其它輔助的方法來(lái)進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)。在LabVIEW中訪問(wèn)數(shù)據(jù)庫(kù)的方式主要又以下幾種:

        1) 利用NI公司的附加工具包中的數(shù)據(jù)庫(kù)接口工具包LabVIEW SQL Toolkit[3]進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)。該工具包集成了一系列的高級(jí)功能模塊,這些模塊封裝了大多數(shù)的數(shù)據(jù)庫(kù)操作和一些高級(jí)的數(shù)據(jù)庫(kù)訪問(wèn)功能。

        2) 利用LabVIEW的ActiveX功能,調(diào)用Microsoft ADO對(duì)象,利用SQL語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn)。使用這種方法需要用戶對(duì)Microsoft ADO以及SQL語(yǔ)言有較深的了解。

        3) 通過(guò)第三方開(kāi)發(fā)的免費(fèi)工具包LabSQL訪問(wèn)。LabSQL利用Microsoft ADO以及SQL語(yǔ)言來(lái)完成數(shù)據(jù)庫(kù)訪問(wèn),將復(fù)雜的底層ADO及SQL操作封裝成一系列的LabSQL VIs,簡(jiǎn)單易用。

        出于對(duì)程序的可靠性和快速性考慮,數(shù)據(jù)自動(dòng)采集接口訪問(wèn)數(shù)字化平臺(tái)采用的是第1)種方式。

        3.2 LabVIEW中執(zhí)行存儲(chǔ)過(guò)程

        LabVIEW SQL Toolkit是用于數(shù)據(jù)庫(kù)訪問(wèn)的附加工具包,它集成了一系列的高級(jí)功能模塊,這些模塊封裝了大多數(shù)的數(shù)據(jù)庫(kù)操作和一些高級(jí)的數(shù)據(jù)庫(kù)訪問(wèn)功能,以使用LabVIEW SQL Toolkit在LabVIEW中支持ODBC的本地或遠(yuǎn)程數(shù)據(jù)庫(kù),例如Microsoft Access,Microsoft SQL Sever,Sybase SQL Server以及Oracle等。

        使用DB Tools List Tables以一維數(shù)組形式列出指定數(shù)據(jù)庫(kù)中的所有表,同時(shí)顯示在前面板數(shù)組控件tables中。用戶指定Table Index后,通過(guò)索引數(shù)組函數(shù)Index Array索引其中一個(gè)表。然后將表名連接到DB Tools List Columns和DB Tools Select All Data。

        接下來(lái)先將采集的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,賦給addzlconzlori方法里面的參數(shù),然后連接到數(shù)據(jù)庫(kù)后,可以通過(guò)執(zhí)行下面的SQL語(yǔ)句來(lái)調(diào)用Java的存儲(chǔ)。

        Call addzlconzlori (?,?,……..) into:msg;

        select :msg from dual;

        然后LabVIEW會(huì)根據(jù)存儲(chǔ)過(guò)程的返回值來(lái)顯示是否操作成功。

        4 結(jié)束語(yǔ)

        LabVIEW的數(shù)據(jù)采集的技術(shù)。經(jīng)實(shí)踐證明效果明顯,大量減少了人工的參與,同時(shí)也提高了數(shù)據(jù)采集的安全性和穩(wěn)定性。對(duì)于需要進(jìn)行大量數(shù)據(jù)采集的系統(tǒng)有很好的借鑒意義。

        [1] Robert H.Bishop LabVIEW 6i 實(shí)用教程[M].北京:電子工業(yè)出版社, 2004.

        [2] 楊樂(lè)平,李海濤.LabVIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.

        [3] 黎洪生,李 超,劉俊剛,等.LabVIEW中利用ADO接口訪問(wèn)數(shù)據(jù)庫(kù)的方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2001(11):73-74.

        猜你喜歡
        調(diào)用事務(wù)船舶
        “事物”與“事務(wù)”
        基于分布式事務(wù)的門架數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        《船舶》2022 年度征訂啟事
        船舶(2021年4期)2021-09-07 17:32:22
        河湖事務(wù)
        船舶!請(qǐng)加速
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        BOG壓縮機(jī)在小型LNG船舶上的應(yīng)用
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        船舶壓載水管理系統(tǒng)
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        国产精品永久在线观看| 中文字幕一区二区三区.| 加勒比av在线一区二区| 99国产精品久久久久久久成人热 | 女的把腿张开男的猛戳出浆| 精品日韩av专区一区二区| 色婷婷精品久久二区二区蜜桃| 女人张开腿让男桶喷水高潮| 911国产精品| 熟女丝袜美腿亚洲一区二区三区| 久久99热只有频精品8国语| 亚洲av无码专区亚洲av伊甸园| 国产在线白丝DVD精品| 亚洲人av毛片一区二区| 日本免费一区二区三区影院 | 一区二区三区天堂在线| 无码不卡av东京热毛片| 久久国产亚洲AV无码麻豆| 亚洲一区二区三区最新视频| 免费毛儿一区二区十八岁| 97久久香蕉国产线看观看| 最新欧美一级视频| 精品私密av一区二区三区| 蜜桃日本免费观看mv| 国产免费久久精品国产传媒| 亚洲精品中文字幕尤物综合 | 美女露屁股无内裤视频| 日韩精品熟女中文字幕| 国语自产偷拍精品视频偷| 国产在线拍偷自拍偷精品| 日本韩国三级在线观看| 国产电影一区二区三区| 精品日韩国产欧美在线观看| 国产日产免费在线视频| 亚洲中文字幕午夜精品| 亚洲人成色777777老人头| 999久久久免费精品国产牛牛| 人妻少妇av中文字幕乱码| 曰欧一片内射vα在线影院| 国产日韩久久久精品影院首页| 国产午夜精品综合久久久|