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

        ?

        .NET與LabVIEW混合環(huán)境的一種串口通信編程

        2014-03-14 02:11:03陳式清齊洪喜
        電腦與電信 2014年5期
        關(guān)鍵詞:控件調(diào)用中斷

        陳式清 齊洪喜

        (中船重工集團(tuán)公司第七一〇研究所試驗(yàn)站,上海 201900)

        .NET與LabVIEW混合環(huán)境的一種串口通信編程

        陳式清 齊洪喜

        (中船重工集團(tuán)公司第七一〇研究所試驗(yàn)站,上海 201900)

        針對(duì)使用LabVIEW在編程開發(fā)串口通信過程中遇到的不足,本文提出基于在.NET與LabVIEW混合環(huán)境下編程開發(fā)串口通信的方法。該方法主要采用串口收發(fā)觸發(fā)中斷事件,優(yōu)點(diǎn)是代碼量少、方法簡潔、效率高。在實(shí)際工程運(yùn)用過程中,開發(fā)人員可以綜合利用.net與LabVIEW的優(yōu)勢來解決串口通信開發(fā)因?yàn)長abVIEW環(huán)境造成的不足。

        串口通信;.net;LabVIEW;Visa;C#;mscom32.ocx;vi

        1.引言

        眾所周知串口通信在工業(yè)控制,信號(hào)和數(shù)據(jù)的收發(fā)傳輸,設(shè)備檢查、調(diào)試、維修等方面都發(fā)揮著重要的作用,有大量各行各業(yè)的工業(yè)設(shè)備采用了串口通信的方式工作。Lab-VIEW環(huán)境下提供的串口編程是利用National Instruments的VISA實(shí)現(xiàn)的,它的不足之處在于只能實(shí)現(xiàn)輪詢方式的數(shù)據(jù)收發(fā),無法實(shí)現(xiàn)中斷方式的數(shù)據(jù)收發(fā)。我們知道如果程序在不斷地一直輪詢,串口將會(huì)占用大量不必要的cpu系統(tǒng)資源,使得程序效率低下。這對(duì)運(yùn)行單獨(dú)的運(yùn)算量較小的中、小型應(yīng)用程序,且只有少量的串口通信時(shí),是可以很好地滿足要求。但是如果一個(gè)應(yīng)用程序里面很多時(shí)候可能包含了10幾個(gè)串口數(shù)據(jù)收發(fā)甚至是20幾個(gè)串口數(shù)據(jù)收發(fā),如果每個(gè)串口都在不停地輪詢,并且應(yīng)用程序中還有高頻數(shù)據(jù)采集和信號(hào)處理程序的話,LabVIEW環(huán)境下的串口通信VISA實(shí)現(xiàn)就無法滿足實(shí)際需求了。

        這時(shí)大家通常的做法是放棄LabVIEW環(huán)境下的VISA實(shí)現(xiàn),而是在LabVIEW環(huán)境加入微軟的一個(gè)串口通信com組件mscom32.ocx。這個(gè)ocx文件是一個(gè)ActivX組件,這種做法和以往在VB6.0或CV6.0下的串口通信沒有什么區(qū)別,都是在開發(fā)環(huán)境中加入這個(gè)mscom32.ocx的ActivX組件來實(shí)現(xiàn)中斷方式編程。但是這個(gè)com組件的使用比較復(fù)雜,實(shí)現(xiàn)的代碼量也比較多,需要有足夠經(jīng)驗(yàn)的開發(fā)人員根據(jù)微軟提供的mscom32.ocx使用文檔進(jìn)行這部分的開發(fā)。這部分的內(nèi)容如果使用LabVIEW來編寫的話會(huì)顯得復(fù)雜而凌亂,不利于日后的項(xiàng)目維護(hù)。因此本文提出一種不需要使用mscom32.ocx組件來實(shí)現(xiàn)中斷方式通信的編程方法。

        2.實(shí)現(xiàn)

        .net的開發(fā)環(huán)境:Microsoft Visual Studio 2008,編程語言:C#;LabVIEW的開發(fā)環(huán)境:National Instruments Lab-VIEW 2010;操作系統(tǒng):windows XP或windows 7.0。

        我們知道,在.net框架的C#開發(fā)環(huán)境內(nèi)集成了很多的窗口控件,比如:按鈕、文本框、下拉框等,在軟件開發(fā)的時(shí)候只需要將這些工具直接拖到窗體上就可以自動(dòng)生成相應(yīng)的代碼。對(duì)于C#的串口通信編程,它也同樣提供了類似于按鈕、文本框控件一樣可以直接拖放的串口工具。我們編程時(shí)只需要簡單地拖放控件、設(shè)置控件屬性,實(shí)現(xiàn)一下事件代碼就可以了。

        2.1 實(shí)現(xiàn)邏輯

        為了描述方便,將原始中斷事件用小細(xì)圓圈表示,封裝后的事件用大粗圓圈表示。當(dāng)串口數(shù)據(jù)通過串口線路進(jìn)入設(shè)備的串口硬件,操作系統(tǒng)的串口驅(qū)動(dòng)做出相應(yīng)的響應(yīng),在C#的串口控件中封裝了所有的這些響應(yīng),我們只要按特定的需求進(jìn)行相應(yīng)的設(shè)置,即可實(shí)現(xiàn)這些響應(yīng)的處理。接收邏輯與發(fā)送邏輯分別如下圖1、圖2所示:

        圖1 混合環(huán)境下的串口通信接收邏輯圖

        圖2 混合環(huán)境下的串口通信發(fā)送邏輯圖

        2.2 .net環(huán)境部分的實(shí)現(xiàn)

        本文設(shè)計(jì)中沒有將硬件觸發(fā)的中斷事件直接交給Lab-VIEW,而是創(chuàng)建一個(gè)新的事件,讓LabVIEW環(huán)境去訂閱(或叫注冊)這個(gè)新的事件。這樣做的好處是在C#端和在Lab-VIEW端都有機(jī)會(huì)處理這個(gè)事件,這樣就可以結(jié)合這兩個(gè)環(huán)境的優(yōu)點(diǎn)將一部分處理仿在C#中,處理完后再交由Lab-VIEW處理。

        筆者項(xiàng)目中使用了20個(gè)串口控件,為了簡化編程任務(wù),這里采用了一個(gè)技巧,即C#端將一個(gè)窗口封裝在dll中(使用時(shí)只需創(chuàng)建這個(gè)窗體,而不顯示這個(gè)窗體),在該窗口內(nèi)直接拖放20個(gè)串口控件,然后編寫相應(yīng)的源代碼(這里需要注意在編譯項(xiàng)目的時(shí)候需要選擇編譯成動(dòng)態(tài)鏈接庫,而不是windows應(yīng)用程序)。如下圖3所示:

        圖3 直接拖放的20個(gè)串口控件

        部分核心代碼:---

        //根據(jù)readMsg的值進(jìn)行C#端的處理

        。。。。//這里省略的部分為需要加入的C#端的數(shù)據(jù)處理

        //這里處理完C#端后,發(fā)給LabVIEW端處理,GotDate在LabVIEW中已經(jīng)訂閱

        RaiseGotDate(new MyEventArgs(readMsg,serialPort1.PortName));

        }

        上面代碼中GotDate為創(chuàng)建的新事件,用它來封裝串口接收事件,它將在LabVIEW端被訂閱。serialPort1_DataReceived為串口硬件接收中斷事件的處理函數(shù),其它串口的事件處理函數(shù)和該函數(shù)類似,可以命名為serialPort2_DataReceived、serialPort3_DataReceived等等。RaiseGotDate為觸發(fā)LabVIEW端處理串口事件的事件觸發(fā)函數(shù)。

        串口數(shù)據(jù)發(fā)送實(shí)現(xiàn)相對(duì)簡單,函數(shù)簽名如下:

        public void SerialPortSend(string sendData,string com)

        2.3 LabVIEW環(huán)境部分的實(shí)現(xiàn)

        因?yàn)橹饕拇谕ㄐ胚壿嫸家言贑#端實(shí)現(xiàn),在Lab-VIEW端只需要調(diào)用C#端的構(gòu)造函數(shù)來構(gòu)造這個(gè)串口集合對(duì)象(這是實(shí)現(xiàn)混合編程的關(guān)鍵,方法是:打開LabVIEW的程序框圖面板,然后鼠標(biāo)右鍵打開函數(shù)面板,進(jìn)入“互聯(lián)接口》.net》...”,這里都是供LabVIEW調(diào)用.net函數(shù)的節(jié)點(diǎn)),對(duì)于事件處理,只需要注冊該事件和編寫事件回調(diào)子vi函數(shù),對(duì)其它的非事件功能調(diào)用,只需要通過C#的對(duì)象句柄引用利用LabVIEW的“調(diào)用節(jié)點(diǎn)”直接調(diào)用C#中的函數(shù)。主要的程序?qū)崿F(xiàn)框圖如下:

        圖4 直接調(diào)用C#端的關(guān)閉所有串口函數(shù)

        圖5 直接調(diào)用C#端的發(fā)送串口信息函數(shù)

        圖6 直接調(diào)用C#端的打開所有串口函數(shù)

        圖7 清空接收文本框內(nèi)顯示的串口數(shù)據(jù)

        圖8 串口接收回調(diào)子vi函數(shù)

        圖9 軟件測試界面運(yùn)行效果

        3.結(jié)束語

        采用本文方法開發(fā)的項(xiàng)目經(jīng)測試表明響應(yīng)速度比過去有明顯的提高,在大數(shù)據(jù)量收發(fā)過程中CPU占用率≤10%,并且如果單純采用LabVIEW開發(fā)相同功能的項(xiàng)目,我們發(fā)現(xiàn)往往是vi框圖要么龐大而混亂,要么就是子vi眾多。而采用本文方法進(jìn)行項(xiàng)目開發(fā)后變得結(jié)構(gòu)清晰、邏輯簡單、代碼量少,vi框圖一目了然,大大提升了項(xiàng)目后期的易維護(hù)性和易擴(kuò)展性。

        [1]王定遠(yuǎn),胡吉朝,李媛.基于MScomm32和LabVIEW的串口通信技術(shù)[J].國外電子測量技術(shù),2006,(04).

        [2]任麗麗,張志杰.基于LABVIEW的串口數(shù)據(jù)采集系統(tǒng)[J].微計(jì)算機(jī)信息,2008,(07).

        AKind of Serial Communication Programming with.NET and LabVIEW

        Chen Shinqing Qi Hongxi
        (710 Institute ShangHai Test Station,The Chinese Heavy Industry Group CO.,Shanghai 201900)

        Aiming at the deficiency of LabVIEW used in the development of serial Communication,this paper puts forward a programming method based on.net mixed with LabVIEW.It triggers the interrupt events mainly with the serial port,having the advantage of less code,simple method and high efficiency.In the practical project,this method can solve the deficiency of programming with LabVIEW efficiently.

        serial communication;.net;LabVIEW;Visa;C#;mscom32.ocx;vi

        陳式清,男,江西贛州人,碩士,助理工程師,研究方向:軟件編程,電磁散射計(jì)算與仿真,微波信號(hào)分析與仿真,艦船物理場測量與計(jì)算。

        猜你喜歡
        控件調(diào)用中斷
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
        就這樣玩會(huì)VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        久久国产成人精品国产成人亚洲| 区三区久久精品水蜜桃av| 亚洲一区二区三区在线最新| 亚洲无av在线中文字幕| 97精品人妻一区二区三区香蕉| 一区二区韩国福利网站| 亚洲国产精品天堂久久久| 无码少妇丰满熟妇一区二区 | 久久91精品国产一区二区| 国产卡一卡二卡3卡4乱码| 人妻无码一区二区三区四区| 久久精品无码一区二区三区不卡| 深夜日韩在线观看视频| 高h喷水荡肉爽文np肉色学校| 亚洲av无码一区二区三区性色| 日韩无码尤物视频| 亚洲av成人一区二区| 国产午夜成人av在线播放| 亚洲欧美在线播放| 性视频毛茸茸女性一区二区| 精品人妻中文av一区二区三区| 国产精品国产三级国av在线观看| 大陆一级毛片免费播放| 全程国语对白资源在线观看| 国产精品久久久久久久久久红粉| 97久久香蕉国产线看观看| 亚洲国产综合专区在线电影| 在线视频观看一区二区| 99久久精品人妻一区二区三区| 久久精品中文字幕| 乱人伦中文字幕成人网站在线| 国产午夜亚洲精品不卡免下载| 日本一区二区三区光视频| 大肉大捧一进一出好爽视频| 久久无码一一区| 国产91九色免费视频| 国产放荡对白视频在线观看| 有码精品一二区在线| 青青草视频在线免费观看91| 极品粉嫩嫩模大尺度无码视频| 日韩a毛片免费观看|