freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

一種基于3g的煤層氣采氣井站遠程監(jiān)控系統(tǒng)碩士論文-資料下載頁

2025-06-22 04:38本頁面
  

【正文】 示部分主要采用了DirectDraw 技術(shù),使用諸如off_screen 畫面和比特操作的技術(shù)。主要依靠顯卡來實現(xiàn)畫面的放大和縮小方面的功能,因為如果通過軟件來進行圖像縮放,將會占用大量CPU資源。為此,軟件開發(fā)包提供了一個函數(shù)接口NET_DVR_IsSupport函數(shù),在程序中可以用它測試系統(tǒng)中播放器是否能正常工作。另外系統(tǒng)是不支持24位的,顯示屬性里的顏色設(shè)置應(yīng)該設(shè)置為16位或32位的。在此有必要介紹一下DirectShow技術(shù)和監(jiān)控軟件對顯卡的要求。DirectShow技術(shù)是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上提出的新一代圖像處理技術(shù),該技術(shù)實際是一種基于COM的軟件開發(fā)包[27]。使用DirectShow可以很輕松地實現(xiàn)圖像采集、預(yù)覽和存儲的功能。因此本軟件開發(fā)包的圖像方面的功能主要由DirectShow開發(fā)包開發(fā)。DirectShow技術(shù)的核心是一種叫過濾器(filter)的插件式模塊,圖像的采集、存儲就是對過濾器的連接和操作[28]。合適的顯卡也是監(jiān)控軟件能夠運行的前提條件,顯卡的顯存需要24M以上,要具備對圖像進行放大和縮小的能力。在視頻的解碼方面,本軟件使用軟解碼的方式。在編寫程序中可以通過調(diào)用函數(shù)接口NET_DVR_SetPlayerBufNumber來調(diào)節(jié)所播放視頻的流暢程度和實時性屬性。視頻的流暢度和實時性這兩個屬性是成反比的,也就是說要想視頻流暢那么視頻就會出現(xiàn)比較明顯地延時,若想沒有延時則要犧牲視頻的流暢程度。改變函數(shù)的dwBufNum值就可調(diào)節(jié)前兩個屬性。該函數(shù)必須緊跟在NET_DVR_RealPlay后使用,在圖像播放停止后再設(shè)置則沒有任何意義。 建立多窗體文檔。多文檔應(yīng)用程序的建立和普通的單文檔應(yīng)用程序的建立有很大區(qū)別。多文檔應(yīng)用程序是由一個主窗體(也稱父窗體)和若干個子窗體組成。運行時,子窗體顯示在父窗體的工作空間之內(nèi),每個子窗體顯示為一個文檔,這時可以操作子窗體中的功能。由于多文檔界面應(yīng)用程序需要同時管理多個文檔,所以在設(shè)計上要比單文檔界面應(yīng)用程序復(fù)雜一些。Windows Forms為開發(fā)多文檔界面應(yīng)用程序提供了多方面的支持,所以在Visual ,設(shè)計這種類型的應(yīng)用程序不是一件難事。設(shè)計一個完整的多文檔界面應(yīng)用程序需要完成的工作有:創(chuàng)建父窗體、創(chuàng)建子窗體、實現(xiàn)父窗體功能、實現(xiàn)子窗體功能、運行多文檔應(yīng)用程序。在本程序中窗體Form1是父窗體,其它窗體都包含于它。在建立窗體Form1后需要改的屬性是IsMdiContainer,將其值設(shè)為True。IsMdiContainer表示確定該窗體是否為MDI容器。Form1中還需要一個toolStrip控件,使用 ToolStrip 及其關(guān)聯(lián)的類,可以創(chuàng)建具有 Microsoftamp。reg。 Windowsamp。reg。 XP、Microsoft Office、Microsoft Internet Explorer 或自定義的外觀和行為的工具欄及其他用戶界面元素。這些元素支持溢出及運行時項目重新排序。ToolStrip 控件可為設(shè)計者提供許多功能,包括就地激活和編輯、自定義布局、漂?。垂ぞ邫诠蚕硭交虼怪笨臻g的能力)。在工具欄上的按鈕中添加以下代碼就可是窗體Form4成為Form1的子窗體,并實現(xiàn)打開子窗體的功能。Form4 review = new Form4()。 //定義一個Form4類并實例化 = this。 //指定該窗體的父類()。 //顯示窗體 系統(tǒng)初始化模塊的設(shè)計所謂的初始化是指對SDK的正確初始化,這是系統(tǒng)軟件正常應(yīng)用的前提。初始化SDK是調(diào)用其他函數(shù)接口的先決條件。這一部分需要用到的函數(shù)接口有兩個,分別是初始化SDK NET_DVR_Init和釋放SDK資源NET_DVR_Cleanup。這兩個接口函數(shù)都是具有返回值的并且返回值都是布爾型。返回值TRUE表示成功,F(xiàn)ALSE表示失敗。在程序中的應(yīng)用代碼如下:protected override void Dispose(bool disposing){if (m_bInitSDK == true){NET_DVR_Cleanup()。}if (disposing){if (ponents != null){Components. Dispose ()。}}Base. Dispose (disposing)。}需要說明的是,調(diào)用初始化接口之前必須確保已有的SDK資源全部釋放。實現(xiàn)方法如上面代碼,在自動回收資源函數(shù)void Dispose(bool disposing) 中釋放SDK資源。系統(tǒng)初始化模塊的全部代碼在父窗體Form1中完成。 參數(shù)配置模塊的設(shè)計參數(shù)配置模塊實現(xiàn)對現(xiàn)場設(shè)備各參數(shù)的設(shè)置,只有對視頻服務(wù)器設(shè)備正確配置后才能使用網(wǎng)絡(luò)視頻服務(wù)器的功能。: 參數(shù)配置模塊函數(shù)調(diào)用流程Fig. Process parameter configuration module function calls實現(xiàn)參數(shù)配置首先必須做好初始化SDK和用戶注冊這兩個步驟,將用戶注冊接口返回的ID號作為配置接口的首個參數(shù)。在每次設(shè)置某類參數(shù)之前,必須先調(diào)用獲取參數(shù)的接口(NET_DVR_GetDVRConfig)得到完整的參數(shù)結(jié)構(gòu)。需要更改的參數(shù)作為設(shè)置參數(shù)接口中的輸入?yún)?shù),最后調(diào)用設(shè)置參數(shù)接口(NET_DVR_SetDVRConfig),返回成功即設(shè)置成功。這一部分最重要的是用戶注冊設(shè)備接口NET_DVR_Login_V30,成功注冊設(shè)備后系統(tǒng)才能調(diào)用設(shè)備的各項功能。下面重點介紹NET_DVR_Login_V30函數(shù)接口及其在監(jiān)控程序中應(yīng)用。設(shè)備參數(shù)結(jié)構(gòu)體和用戶注冊函數(shù)如下:Public struct NET_DVR_DEVICEINFO_V30 { public byte[] sSerialNumber。 public byte byAlarmInPortNum。 public byte byAlarmOutPortNum。 public byte byDiskNum。 public byte byDVRType。 public byte byChanNum。 public byte byStartChan。 }結(jié)構(gòu)體參數(shù)的含義為: 設(shè)備參數(shù)結(jié)構(gòu)體參數(shù)的含義Tab. Device parameters structure meaning of the parameters參數(shù)名參數(shù)含義sSerialNumber設(shè)備序列號AlarmInPortNum報警輸入個數(shù)AlarmOutPortNumDVR報警輸出個數(shù)DiskNum系統(tǒng)磁盤數(shù)量DVRTypeDVR型號ChanNumDVR通道數(shù)StartChan起始通道號NET_DVR_Login_V30在程序中的定義如下:[DllImport()]public static extern Int32 NET_DVR_Login_V30(string sDVRIP, Int32 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo)。 : 用戶登錄函數(shù)的參數(shù)Tab. User login function parameter參數(shù)名參數(shù)含義sDVRIP設(shè)備的IP地址wDVRPort設(shè)備的端口號碼sUserName設(shè)備用戶名sPassword默認密碼IpDeviceInforef 關(guān)鍵字使參數(shù)按引用傳遞相當(dāng)于一個指向設(shè)備參數(shù)信息結(jié)構(gòu)體NET_DVR_DEVICEINFO的指針,通過該指針可以知道設(shè)備的相關(guān)信息該函數(shù)的返回值是一個長整形變量,1表示失敗,其他值表示返回的用戶ID值。該用戶ID具有唯一性,后續(xù)對設(shè)備的操作都需要通過此ID實現(xiàn)。該函數(shù)在程序中的應(yīng)用代碼如下:private void btnlogin_Click(object sender, EventArgs e){if ( == || == || == || == ){ (請輸入?yún)?shù))。 return。}string DVRIPAddress = 。Int16 DVRPortNumber = ( )。 string DVRUserName = 。string DVRPassword = 。NET_DVR_DEVICEINFO_V30 DeviceInfo = new NET_DVR_DEVICEINFO_V30()。m_lUserID = NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo)。if (m_lUserID == 1){ (login error!)。 return。 } else { (Login Success!)。 } }:可以看到,在這個畫面中可以設(shè)置對應(yīng)設(shè)備的IP地址、端口號、用戶名和密碼。在系統(tǒng)最終應(yīng)用的時候,將有三種方式供用戶選擇,分別是被動訪問方式、主動上傳方式和定時巡檢方式。 設(shè)備參數(shù)設(shè)置畫面Fig. Device parameter setting screen 視頻瀏覽模塊視頻瀏覽模塊是在視頻瀏覽窗口中實現(xiàn)的,是整個監(jiān)控軟件的核心部分,涉及到C不同窗體間傳遞變量和實時顯示視頻等問題。 窗體間的變量傳遞為了清晰劃分系統(tǒng)的各功能,不同功能模塊往往分別處在不同的窗口中。如用戶設(shè)備注冊模塊的功能就處在設(shè)備參數(shù)配置窗口中,而監(jiān)控視頻瀏覽功能和視頻參數(shù)設(shè)置功能則設(shè)在監(jiān)控圖像瀏覽窗口中。設(shè)備配置窗口中設(shè)備登陸函數(shù)NET_DVR_Login調(diào)用后會計算出用戶ID值,而視頻瀏覽窗口中的監(jiān)控圖像預(yù)覽函數(shù)接口NET_DVR_RealPlay的一個形參m_lUserID就是用戶ID值。因此這里就涉及到不同窗口間變量的傳遞問題,具體的說就是在程序中Form2窗體中的m_lUserID變量值要傳遞到Form3中去。解決方法如下:在父窗體Form1中定義一個Form2類并實例化,同時定義一個Form3類,但不做實例化處理。代碼如下:Form2 config = new Form2()。Form3 view。在父窗體Form1的構(gòu)造函數(shù)中再對Form3實例化,在這里同時要進行的還有SDK初始化工作,代碼如下:public Form1() { InitializeComponent()。 m_bInitSDK = NET_DVR_Init()。 if (m_bInitSDK == false) { (NET_DVR_Init error!)。 return。 } view = new Form3(config )。 }可以看出Form2窗體config變量是作為窗體屬性傳遞給了Form3窗體view變量的。在窗體Form3中的代碼如下: public Form3(Form2 form) { Form2 = form。 InitializeComponent()。 }這樣載入窗體時就可以使用傳遞來的ID值了,該部分代碼如下: private void Form3_Load(object sender, EventArgs e) { mID = 。 m_lUserID=form2 .m_lUserID 。 = ()。 }至此,F(xiàn)orm2窗體到Form3窗體的參數(shù)傳遞就完成了,可見在C中不同窗體之間的參數(shù)傳遞是十分復(fù)雜的。因此程序設(shè)計時必須盡量減少不同窗體間的參數(shù)傳遞,本程序中也僅有這一次窗口間參數(shù)傳遞。這也是本文程序設(shè)計時將視頻瀏覽、存儲、視頻參數(shù)設(shè)置等功能放到一個窗口中的原因之一。 相關(guān)流程及主要接口視頻圖像瀏覽模塊是本監(jiān)控軟件的核心部分。軟件開發(fā)包提供了兩種實時流解碼方式分別如下:方式一:將預(yù)覽接口NET_DVR_RealPlay_V30中預(yù)覽參數(shù)的播放窗口句柄賦成有效句柄,則由SDK實現(xiàn)解碼功能。在初始化SDK和注冊設(shè)備兩步驟后,直接調(diào)用啟動預(yù)覽和停止預(yù)覽接口。方式二:用戶可以通過設(shè)置預(yù)覽接口NET_DVR_RealPlay_V30中的播放窗口句柄預(yù)覽參數(shù)為空值,并通過調(diào)用捕獲數(shù)據(jù)的接口(即設(shè)置NET_DVR_RealPlay_V30接口中的回調(diào)函數(shù)或調(diào)用NET_DVR_SetRealDataCallBack)獲取碼流數(shù)據(jù),這樣才能進行后續(xù)解碼播放處理。 在軟件的測試階段采用方式一,當(dāng)確??梢缘玫揭曨l圖像時改用第二種方式。相比之下使用方式二可以為軟件進行后續(xù)圖像處理功能提供條件。播放器的顯示部分,主要采用了DirectDraw 技術(shù)。目前使用了兩種方式顯示畫面:第一種是創(chuàng)建使用off_screen 畫面并Blt(位轉(zhuǎn)換或位傳輸,可做縮放、旋轉(zhuǎn)、鏡像等效果)到主畫面。第二種是創(chuàng)建使用OVERLAY畫面。這兩種方式有以下特點:第一種方式由于建立使用了off_screen畫面,因此可以進行多路視頻通道的播放,而每一路視頻信號之間互相獨立不受影響。但是在進行圖像縮放操作時會受硬件系統(tǒng)的影響,若使用的顯卡支持縮放功能則不存在問題,若使用的顯卡不支
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1