999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

.NET與LabVIEW混合環境的一種串口通信編程

2014-03-14 02:11:03陳式清齊洪喜
電腦與電信 2014年5期
關鍵詞:環境

陳式清 齊洪喜

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

.NET與LabVIEW混合環境的一種串口通信編程

陳式清 齊洪喜

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

針對使用LabVIEW在編程開發串口通信過程中遇到的不足,本文提出基于在.NET與LabVIEW混合環境下編程開發串口通信的方法。該方法主要采用串口收發觸發中斷事件,優點是代碼量少、方法簡潔、效率高。在實際工程運用過程中,開發人員可以綜合利用.net與LabVIEW的優勢來解決串口通信開發因為LabVIEW環境造成的不足。

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

1.引言

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

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

2.實現

.net的開發環境:Microsoft Visual Studio 2008,編程語言:C#;LabVIEW的開發環境:National Instruments Lab-VIEW 2010;操作系統:windows XP或windows 7.0。

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

2.1 實現邏輯

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

圖1 混合環境下的串口通信接收邏輯圖

圖2 混合環境下的串口通信發送邏輯圖

2.2 .net環境部分的實現

本文設計中沒有將硬件觸發的中斷事件直接交給Lab-VIEW,而是創建一個新的事件,讓LabVIEW環境去訂閱(或叫注冊)這個新的事件。這樣做的好處是在C#端和在Lab-VIEW端都有機會處理這個事件,這樣就可以結合這兩個環境的優點將一部分處理仿在C#中,處理完后再交由Lab-VIEW處理。

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

圖3 直接拖放的20個串口控件

部分核心代碼:---

//根據readMsg的值進行C#端的處理

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

//這里處理完C#端后,發給LabVIEW端處理,GotDate在LabVIEW中已經訂閱

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

}

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

串口數據發送實現相對簡單,函數簽名如下:

public void SerialPortSend(string sendData,string com)

2.3 LabVIEW環境部分的實現

因為主要的串口通信邏輯都已在C#端實現,在Lab-VIEW端只需要調用C#端的構造函數來構造這個串口集合對象(這是實現混合編程的關鍵,方法是:打開LabVIEW的程序框圖面板,然后鼠標右鍵打開函數面板,進入“互聯接口》.net》...”,這里都是供LabVIEW調用.net函數的節點),對于事件處理,只需要注冊該事件和編寫事件回調子vi函數,對其它的非事件功能調用,只需要通過C#的對象句柄引用利用LabVIEW的“調用節點”直接調用C#中的函數。主要的程序實現框圖如下:

圖4 直接調用C#端的關閉所有串口函數

圖5 直接調用C#端的發送串口信息函數

圖6 直接調用C#端的打開所有串口函數

圖7 清空接收文本框內顯示的串口數據

圖8 串口接收回調子vi函數

圖9 軟件測試界面運行效果

3.結束語

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

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

[2]任麗麗,張志杰.基于LABVIEW的串口數據采集系統[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

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

猜你喜歡
環境
長期鍛煉創造體內抑癌環境
一種用于自主學習的虛擬仿真環境
孕期遠離容易致畸的環境
不能改變環境,那就改變心境
環境與保護
環境
孕期遠離容易致畸的環境
高等院校環境類公選課的實踐和探討
掌握“三個三” 兜底環境信訪百分百
我國環境會計初探
中國商論(2016年33期)2016-03-01 01:59:38
主站蜘蛛池模板: 日韩区欧美国产区在线观看| 激情无码字幕综合| 91在线精品麻豆欧美在线| 国产激爽大片高清在线观看| 亚洲综合极品香蕉久久网| 国产精品亚洲专区一区| 99无码中文字幕视频| 国产在线观看一区精品| 欧美天堂在线| 中国国产高清免费AV片| 超碰aⅴ人人做人人爽欧美 | 亚洲福利片无码最新在线播放| 成人免费午夜视频| 亚洲 欧美 偷自乱 图片| 免费Aⅴ片在线观看蜜芽Tⅴ| 亚洲国产一成久久精品国产成人综合| 韩国自拍偷自拍亚洲精品| 国产成人成人一区二区| 亚洲欧美不卡中文字幕| 丰满人妻一区二区三区视频| 最新国产高清在线| 国产精品香蕉在线观看不卡| 亚洲国产中文综合专区在| 99re精彩视频| 香蕉eeww99国产在线观看| 538精品在线观看| 国产成人一区在线播放| 国产香蕉97碰碰视频VA碰碰看| 午夜福利无码一区二区| 高清不卡一区二区三区香蕉| 国产一区二区三区夜色| 国产性精品| 亚洲永久免费网站| 99国产精品国产| 久久中文字幕不卡一二区| V一区无码内射国产| 九色综合视频网| 欧美午夜在线播放| 欧美亚洲第一页| 欧美日韩国产在线人| 久久亚洲AⅤ无码精品午夜麻豆| 国产小视频在线高清播放| 成人午夜亚洲影视在线观看| 91精品小视频| 亚洲AⅤ无码国产精品| 亚洲视频免| 亚洲日韩精品无码专区97| 国产精品.com| 在线观看视频一区二区| 欧美日韩专区| 中文字幕在线视频免费| 精品视频一区二区观看| 91精品日韩人妻无码久久| 国产精品毛片在线直播完整版| 欧美国产在线看| 日韩国产黄色网站| 国产成人成人一区二区| 亚洲第一黄色网址| 国产精品美女自慰喷水| 真实国产精品vr专区| 国产情精品嫩草影院88av| 伊人91视频| 福利在线免费视频| a级毛片一区二区免费视频| 亚洲美女久久| 999国产精品永久免费视频精品久久| 真实国产乱子伦视频| 色一情一乱一伦一区二区三区小说| 欧美一区中文字幕| 一级毛片网| 国产美女在线免费观看| 久久久久亚洲Av片无码观看| 精品一区二区三区波多野结衣 | 国产精品自在自线免费观看| 91亚洲视频下载| 亚洲精品黄| 全部毛片免费看| av一区二区三区在线观看| 精品伊人久久久香线蕉| 国产99在线观看| 亚洲午夜久久久精品电影院| 亚洲天堂视频网|