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

正文內(nèi)容

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

2025-06-22 04:38本頁(yè)面
  

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