版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、111章章導(dǎo)讀第第 家庭視頻監(jiān)控系統(tǒng)(C# 4.0+Microsoft Access 2003+視頻采集卡實(shí)現(xiàn))本章使用C#4.0+視頻采集卡制作一個(gè)簡(jiǎn)單的家庭視頻監(jiān)控系統(tǒng),并將系統(tǒng)劃分為幾個(gè)模塊進(jìn)行詳細(xì)講解。通過(guò)對(duì)這些模塊的學(xué)習(xí),讀者完全可以掌握視頻監(jiān)控系統(tǒng)的開(kāi)發(fā)技術(shù)及原理。筆者通過(guò)簡(jiǎn)潔的程序代碼和通俗的技術(shù)講解,將家庭視頻監(jiān)控系統(tǒng)的奧秘完全展示在讀者面前,使讀者可以更輕松地理解其中的內(nèi)容。通過(guò)閱讀本章,讀者可以學(xué)習(xí)到:: 了解單元測(cè)試及常用單元測(cè)試工具: 了解Access 2003數(shù)據(jù)庫(kù)和數(shù)據(jù)表的創(chuàng)建: 掌握如何在WinForms程序中操作Access 2003數(shù)據(jù)庫(kù): 掌握視頻采集卡的使
2、用: 掌握Pelco-D協(xié)議: 掌握如何使用Pelco-D協(xié)議進(jìn)行云臺(tái)控制: 掌握如何讀取和寫入注冊(cè)表信息1.1 開(kāi) 發(fā) 背 景XXX家庭為了緊隨逐漸加快的生活節(jié)奏,并適應(yīng)不斷增加的工作壓力,現(xiàn)需要委托其他單位開(kāi)發(fā)一個(gè)視頻監(jiān)控系統(tǒng)。該系統(tǒng)的主要作用是:當(dāng)用戶外出時(shí),可以使用該系統(tǒng)監(jiān)控家里的各種情況,并可以將家里的變化情況錄制成視頻文件,以供后期查看。 系 統(tǒng) 分 析1.2.1 需求分析隨著生活節(jié)奏的加快,工作壓力的增加,人們用于照顧家庭的時(shí)間越來(lái)越少。年幼孩子的看護(hù)、年邁父母的照管、家庭財(cái)產(chǎn)的防竊等一系列問(wèn)題經(jīng)常纏繞著人們,成為人們忙碌中揮之不去的牽掛。本章使用C#語(yǔ)言結(jié)合視頻采集卡制作了一個(gè)
3、簡(jiǎn)單的家庭視頻監(jiān)控系統(tǒng),以解決上面出現(xiàn)的各種問(wèn)題。 可行性分析根據(jù)GB856788計(jì)算機(jī)軟件產(chǎn)品開(kāi)發(fā)文件編制指南中可行性分析的要求,制定可行性研究報(bào)告如下。1引言 編寫目的為了給企業(yè)的決策層提供是否進(jìn)行項(xiàng)目實(shí)施的參考依據(jù),現(xiàn)以文件的形式分析項(xiàng)目的風(fēng)險(xiǎn)、項(xiàng)目需要的投資與效益。 背景XXX家庭為了在外出時(shí)可以監(jiān)控家里的各種情況,現(xiàn)委托相關(guān)公司開(kāi)發(fā)一個(gè)視頻監(jiān)控系統(tǒng),項(xiàng)目名稱為家庭視頻監(jiān)控系統(tǒng)。2可行性研究的前提 要求家庭視頻監(jiān)控系統(tǒng)要求能夠提供視頻監(jiān)控、快照、錄像和自動(dòng)監(jiān)控等功能。 目標(biāo)家庭視頻監(jiān)控系統(tǒng)的主要目標(biāo)是保證家里的安全。 條件、假定和限制項(xiàng)目需要在1個(gè)月內(nèi)交付用戶使用,系統(tǒng)分析人員需要兩天
4、內(nèi)到位,用戶需要3天時(shí)間確認(rèn)需求分析文檔,去除其中可能出現(xiàn)的問(wèn)題,例如用戶可能臨時(shí)有事,占用5天時(shí)間確認(rèn)需求分析。那么程序開(kāi)發(fā)人員需要在23天內(nèi)進(jìn)行系統(tǒng)設(shè)計(jì)、程序編碼、系統(tǒng)測(cè)試、程序調(diào)試和系統(tǒng)打包部署工作,期間還包括員工每周的休息時(shí)間。3投資及效益分析 支出根據(jù)系統(tǒng)的規(guī)模及項(xiàng)目的開(kāi)發(fā)周期(1個(gè)月),公司決定投入3個(gè)人。此外,公司將直接支付3萬(wàn)元的工資及各種福利待遇。在項(xiàng)目安裝及調(diào)試階段,用戶培訓(xùn)、員工出差等費(fèi)用支出需要1萬(wàn)元。在項(xiàng)目維護(hù)階段,預(yù)計(jì)需要投入1.5萬(wàn)元的資金。累計(jì)項(xiàng)目投入需要5.5萬(wàn)元資金。 收益用戶提供項(xiàng)目資金10萬(wàn)元。對(duì)于項(xiàng)目運(yùn)行后進(jìn)行的改動(dòng),采取協(xié)商的原則,根據(jù)改動(dòng)規(guī)模額外提
5、供資金。因此從投資與收益的效益比上,公司可以獲得4.5萬(wàn)元的利潤(rùn)。項(xiàng)目完成后,會(huì)給公司提供資源儲(chǔ)備,包括技術(shù)、經(jīng)驗(yàn)的積累,其后再開(kāi)發(fā)類似項(xiàng)目時(shí),可以極大地縮短項(xiàng)目開(kāi)發(fā)周期。4結(jié)論根據(jù)前面的分析,在技術(shù)上不會(huì)存在問(wèn)題,因此項(xiàng)目延期的可能性很小。在效益上公司投入3個(gè)人、1個(gè)月的時(shí)間獲利4.5萬(wàn)元,比較可觀;在公司今后發(fā)展上可以儲(chǔ)備軟件開(kāi)發(fā)的經(jīng)驗(yàn)和資源,因此認(rèn)為該項(xiàng)目可以開(kāi)發(fā)。 編寫項(xiàng)目計(jì)劃書(shū)根據(jù)GB856788計(jì)算機(jī)軟件產(chǎn)品開(kāi)發(fā)文件編制指南中的項(xiàng)目開(kāi)發(fā)計(jì)劃要求,結(jié)合單位實(shí)際情況,設(shè)計(jì)項(xiàng)目計(jì)劃書(shū)如下。1引言 編寫目的為了保證項(xiàng)目開(kāi)發(fā)人員按時(shí)保質(zhì)地完成預(yù)訂目標(biāo),更好地了解項(xiàng)目實(shí)際情況,按照合理的順序開(kāi)
6、展工作,現(xiàn)以書(shū)面的形式將項(xiàng)目開(kāi)發(fā)生命周期中的項(xiàng)目任務(wù)范圍、項(xiàng)目團(tuán)隊(duì)組織結(jié)構(gòu)、團(tuán)隊(duì)成員的工作責(zé)任、團(tuán)隊(duì)內(nèi)外溝通協(xié)作方式、開(kāi)發(fā)進(jìn)度、檢查項(xiàng)目工作等內(nèi)容描述出來(lái),作為項(xiàng)目相關(guān)人員之間的統(tǒng)一約定和項(xiàng)目生命周期內(nèi)的所有項(xiàng)目活動(dòng)的行動(dòng)基礎(chǔ)。 背景家庭視頻監(jiān)控系統(tǒng)是由XXX家庭委托我公司開(kāi)發(fā)的小型視頻監(jiān)控系統(tǒng),主要用于監(jiān)控家里的人員活動(dòng)情況,項(xiàng)目周期為1個(gè)月。項(xiàng)目背景規(guī)劃如表1.1所示。表1.1 項(xiàng)目背景規(guī)劃項(xiàng) 目 名 稱項(xiàng)目委托單位任務(wù)提出者項(xiàng)目承擔(dān)部門家庭視頻監(jiān)控系統(tǒng)XXX家庭王經(jīng)理研發(fā)部門測(cè)試部門2概述 項(xiàng)目目標(biāo)項(xiàng)目目標(biāo)應(yīng)當(dāng)符合SMART原則,把項(xiàng)目要完成的工作用清晰的語(yǔ)言描述出來(lái)。家庭視頻監(jiān)控系統(tǒng)的
7、項(xiàng)目目標(biāo)如下:家庭視頻監(jiān)控系統(tǒng)的主要目的是隨時(shí)對(duì)家里的情況進(jìn)行監(jiān)控,并可以由用戶靈活控制監(jiān)控方向。另外,用戶還可以設(shè)置自動(dòng)監(jiān)控、對(duì)監(jiān)控畫面進(jìn)行快照和錄像等。 應(yīng)交付成果項(xiàng)目開(kāi)發(fā)完成后,交付的內(nèi)容如下: 以光盤的形式提供家庭視頻監(jiān)控的源程序、系統(tǒng)數(shù)據(jù)庫(kù)文件和系統(tǒng)使用說(shuō)明書(shū)。 系統(tǒng)發(fā)布后,進(jìn)行無(wú)償維護(hù)和服務(wù)6個(gè)月,超過(guò)6個(gè)月進(jìn)行系統(tǒng)有償維護(hù)與服務(wù)。 項(xiàng)目開(kāi)發(fā)環(huán)境開(kāi)發(fā)本項(xiàng)目所用的操作系統(tǒng)可以是Windows XP、Windows Server 2003或Windows 7,開(kāi)發(fā)工具為Visual Studio 2010+視頻采集卡,數(shù)據(jù)庫(kù)采用Microsoft Access 2003。 項(xiàng)目驗(yàn)收方式
8、與依據(jù)圖1.1 項(xiàng)目團(tuán)隊(duì)組織結(jié)構(gòu)圖項(xiàng)目驗(yàn)收分為內(nèi)部驗(yàn)收和外部驗(yàn)收兩種方式。在項(xiàng)目開(kāi)發(fā)完成后,首先進(jìn)行內(nèi)部驗(yàn)收,由測(cè)試人員根據(jù)用戶需求和項(xiàng)目目標(biāo)進(jìn)行驗(yàn)收。項(xiàng)目在通過(guò)內(nèi)部驗(yàn)收后交給用戶進(jìn)行外部驗(yàn)收,驗(yàn)收的主要依據(jù)為需求規(guī)格說(shuō)明書(shū)。3項(xiàng)目團(tuán)隊(duì)組織 組織結(jié)構(gòu)為了完成家庭視頻監(jiān)控系統(tǒng)的開(kāi)發(fā),公司組建了一個(gè)臨時(shí)的項(xiàng)目團(tuán)隊(duì),由項(xiàng)目經(jīng)理、軟件工程師和測(cè)試人員構(gòu)成,如圖1.1所示。 人員分工為了明確項(xiàng)目團(tuán)隊(duì)中每個(gè)人的任務(wù)分工,現(xiàn)制定人員分工表,如表1.2所示。表1.2 人員分工表姓 名技 術(shù) 水 平所 屬 部 門角 色工 作 描 述王某MBA項(xiàng)目開(kāi)發(fā)部項(xiàng)目經(jīng)理負(fù)責(zé)項(xiàng)目的前期分析、策劃,項(xiàng)目開(kāi)發(fā)進(jìn)度的跟蹤,項(xiàng)目質(zhì)
9、量的檢查劉某高級(jí)軟件工程師項(xiàng)目開(kāi)發(fā)部軟件工程師負(fù)責(zé)系統(tǒng)功能分析、軟件設(shè)計(jì)與編碼張某中級(jí)系統(tǒng)測(cè)試工程師項(xiàng)目開(kāi)發(fā)部測(cè)試人員對(duì)軟件進(jìn)行測(cè)試、編寫軟件測(cè)試文檔1.3 系 統(tǒng) 設(shè) 計(jì) 系統(tǒng)目標(biāo)本系統(tǒng)屬于小型的家庭視頻監(jiān)控系統(tǒng),可以對(duì)指定的區(qū)域進(jìn)行適時(shí)監(jiān)控。本系統(tǒng)主要實(shí)現(xiàn)以下 目標(biāo): 系統(tǒng)采用人機(jī)交互的方式,界面美觀友好,視頻監(jiān)控靈活、方便。 靈活控制云臺(tái),以監(jiān)控某一區(qū)域的各個(gè)角落。 適時(shí)對(duì)監(jiān)控畫面進(jìn)行快照和錄像操作。 選擇觀看已經(jīng)錄制的視頻文件。 完善的系統(tǒng)注冊(cè)功能。 系統(tǒng)最大限度地實(shí)現(xiàn)易維護(hù)性和易操作性。 系統(tǒng)功能結(jié)構(gòu)家庭視頻監(jiān)控系統(tǒng)的功能結(jié)構(gòu)如圖1.2所示。圖1.2 家庭視頻監(jiān)控系統(tǒng)功能結(jié)構(gòu)圖 業(yè)務(wù)
10、流程圖家庭視頻監(jiān)控系統(tǒng)的業(yè)務(wù)流程圖如圖1.3所示。圖1.3 家庭視頻監(jiān)控系統(tǒng)業(yè)務(wù)流程圖 系統(tǒng)預(yù)覽家庭視頻監(jiān)控系統(tǒng)由多個(gè)程序窗體組成,下面僅列出幾個(gè)典型窗體,其他窗體參見(jiàn)光盤中的源程序。系統(tǒng)登錄窗體如圖1.4所示,主要用于實(shí)現(xiàn)用戶登錄。主窗體如圖1.5所示,主要用于實(shí)現(xiàn)視頻監(jiān)控及云臺(tái)控制等功能。 圖1.4 系統(tǒng)登錄窗體(光盤TM01) 圖1.5 主窗體(光盤TM01)監(jiān)控管理窗體如圖1.6所示,主要用于添加、修改和刪除用戶功能。軟件注冊(cè)窗體如圖1.7所示,主要用于實(shí)現(xiàn)軟件注冊(cè)功能。 圖1.6 監(jiān)控管理窗體(光盤TM01) 圖1.7 軟件注冊(cè)窗體(光盤TM01) 程序運(yùn)行環(huán)境本系統(tǒng)的程序運(yùn)行環(huán)境具
11、體如下。 系統(tǒng)開(kāi)發(fā)平臺(tái):Microsoft Visual Studio 2010。 系統(tǒng)開(kāi)發(fā)語(yǔ)言:C# 4.0。 數(shù)據(jù)庫(kù)管理系統(tǒng)軟件:Microsoft Access數(shù)據(jù)庫(kù)。 運(yùn)行平臺(tái):Windows XP(SP3)/Windows Server 2003(SP2)/Windows 7。 運(yùn)行環(huán)境:Microsoft.NET Framework SDK v4.0。 分辨率:最佳效果1024768像素。 編碼規(guī)范1數(shù)據(jù)庫(kù)命名規(guī)范 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)命名以字母“db”開(kāi)頭(小寫),后面加數(shù)據(jù)庫(kù)相關(guān)英文單詞或縮寫。下面將舉例進(jìn)行說(shuō)明,如表1.3所示。 數(shù)據(jù)庫(kù)命名數(shù)據(jù)庫(kù)名稱描 述db_VWMS視頻監(jiān)控管理系
12、統(tǒng)數(shù)據(jù)庫(kù) 數(shù)據(jù)表數(shù)據(jù)表命名以字母“tb”開(kāi)頭(小寫),后面加數(shù)據(jù)表相關(guān)英文單詞或縮寫。下面將舉例進(jìn)行說(shuō)明,如表1.4所示。表1.4 數(shù)據(jù)表命名數(shù)據(jù)表名稱描 述tb_admin管理員信息表 字段字段一率采用英文單詞或詞組(可利用翻譯軟件)命名,如找不到專業(yè)的英文單詞或詞組,可以用相同意義的英文單詞或詞組代替。下面將舉例進(jìn)行說(shuō)明,如表1.5所示。表1.5 字段命名字 段 名 稱描 述name名字id密碼 視圖視圖命名以字母view開(kāi)頭(小寫),后面加表示該視圖作用的相關(guān)英文單詞或縮寫。下面將舉例進(jìn)行說(shuō)明,如表1.6所示。表1.6 視圖命名視 圖 名 稱描 述view_AdminInfo視圖全名vi
13、ew視圖AdminInfo查看管理員信息 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程命名以字母proc開(kāi)頭(小寫),后面加表示該存儲(chǔ)過(guò)程作用的相關(guān)英文單詞或縮寫。下面將舉例進(jìn)行說(shuō)明,如表1.7所示。表1.7 存儲(chǔ)過(guò)程命名存儲(chǔ)過(guò)程名稱描 述proc_Login存儲(chǔ)過(guò)程全名proc存儲(chǔ)過(guò)程Login實(shí)現(xiàn)登錄功能 觸發(fā)器觸發(fā)器命名以字母trig開(kāi)頭(小寫),后面加表示該觸發(fā)器作用的相關(guān)英文單詞或縮寫。下面將舉例進(jìn)行說(shuō)明,如表1.8所示。表1.8 觸發(fā)器命名觸發(fā)器名稱描 述trig_inAdmin觸發(fā)器全名trig觸發(fā)器inAdmin插入管理員信息2程序代碼命名規(guī)范(1)變量及對(duì)象名稱定義規(guī)則根據(jù)不同的程序需要,編寫代碼時(shí)都需
14、要定義一定的變量或常量。下面介紹一種常見(jiàn)的變量及常量命名規(guī)則,如表1.9所示。 變量及常量命名規(guī)則變量及常量級(jí)別命 名 規(guī) 則舉 例模塊級(jí)變量M_+數(shù)據(jù)類型簡(jiǎn)寫+變量名稱M_int_xx全局變量G_+數(shù)據(jù)類型簡(jiǎn)寫+變量名稱G_int_xx局部變量P_+數(shù)據(jù)類型簡(jiǎn)寫+變量名稱P_dbl_sl模塊級(jí)常量Mc_+數(shù)據(jù)類型簡(jiǎn)寫+常量名稱Mc_str_xx全局常量Gc_+數(shù)據(jù)類型簡(jiǎn)寫+常量名稱Gc_str_xx過(guò)程級(jí)常量Pc_+數(shù)據(jù)類型簡(jiǎn)寫+常量名稱Pc_str_xx(2)數(shù)據(jù)類型簡(jiǎn)寫規(guī)則程序中定義常量、變量或方法等內(nèi)容時(shí),常常需要指定類型。下面介紹一種常見(jiàn)的數(shù)據(jù)類型簡(jiǎn)寫規(guī)則,如表1.10所示。表1.1
15、0 數(shù)據(jù)類型簡(jiǎn)寫規(guī)則數(shù) 據(jù) 類 型簡(jiǎn) 寫整型int字符串str布爾型bl短整型sint長(zhǎng)整型lint單精度浮點(diǎn)型flt雙精度浮點(diǎn)型dbl字節(jié)型bt(3)控件命名規(guī)則所有的對(duì)象名稱都為自然名稱的拼音簡(jiǎn)寫,出現(xiàn)沖突可采用不同的簡(jiǎn)寫規(guī)則。另外,在編碼過(guò)程中涉及不到編碼的控件,其名稱可以取默認(rèn)名稱。控件命名規(guī)則如表1.11所示。表1.11 控件命名規(guī)則控 件縮 寫 形 式FormfrmTextBoxtxtButtonbtnComboBoxcboxLabellabDataGridViewdgvListBoxlb續(xù)表 控 件縮 寫 形 式TimertmrCheckBoxchbLinkLabelllblRi
16、chTextBoxrtboxCheckedListBoxclboxRadioButtonrbtnNumericUpDownnudownPanelplGroupBoxgboxTabControltclErrorProvidereproImageListilistHelpProviderhproListViewlvTreeViewtvPictrueBoxpboxNotifyIconniconDateTimePickerdtpickerMonthCalendarmcalenToolTipttipProgressBarpbar 數(shù)據(jù)庫(kù)設(shè)計(jì)一套完善的系統(tǒng)離不開(kāi)數(shù)據(jù)庫(kù)的設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞直接影響系統(tǒng)運(yùn)
17、行的效率,所以在制作某個(gè)系統(tǒng)之前,首先要根據(jù)項(xiàng)目的成本以及整個(gè)系統(tǒng)的信息量去選擇數(shù)據(jù)庫(kù),然后根據(jù)系統(tǒng)的具體要求和功能去設(shè)計(jì)數(shù)據(jù)庫(kù)。1數(shù)據(jù)庫(kù)分析在家庭視頻監(jiān)控系統(tǒng)中,因?yàn)橄到y(tǒng)的信息量不是很大,并且系統(tǒng)的項(xiàng)目成本不高,數(shù)據(jù)庫(kù)主要用來(lái)存儲(chǔ)用戶登錄系統(tǒng)的名字和密碼,因此對(duì)數(shù)據(jù)庫(kù)的要求并不是很高,所以本系統(tǒng)采用MicrosoftAccess 2003作為后臺(tái)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)命名為db_VWMS,其中包含了一張數(shù)據(jù)表,用于存儲(chǔ)用戶登錄信息。詳細(xì)信息如圖1.8所示。2數(shù)據(jù)庫(kù)概念設(shè)計(jì)在系統(tǒng)開(kāi)發(fā)過(guò)程中,數(shù)據(jù)庫(kù)設(shè)計(jì)占有重要地位,數(shù)據(jù)庫(kù)設(shè)計(jì)的原則是根據(jù)系統(tǒng)的整體需求而定的。例如,在本系統(tǒng)中,為了增加系統(tǒng)的安全性,每個(gè)
18、用戶首先都要通過(guò)系統(tǒng)登錄模塊的驗(yàn)證才能進(jìn)入主窗體,這時(shí),就要在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)存儲(chǔ)登錄名和登錄密碼的管理員基本信息表。管理員基本信息實(shí)體E-R圖如圖1.9所示。 圖1.8 數(shù)據(jù)庫(kù)db_ VWMS中的所有表 圖1.9 管理員信息實(shí)體E-R圖3數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)設(shè)計(jì)好的E-R圖在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表,本系統(tǒng)中只有一個(gè)tb_admin表,主要用于保存管理員登錄的基本信息,其結(jié)構(gòu)如表1.12所示。表1.12 管理員登錄信息表字 段 名數(shù) 據(jù) 類 型主 鍵描 述name文本否登錄用戶名pwd文本否登錄密碼圖1.10 項(xiàng)目文件夾組織結(jié)構(gòu) 文件夾組織結(jié)構(gòu)每個(gè)項(xiàng)目都會(huì)有相應(yīng)的文件夾組織結(jié)構(gòu),如果項(xiàng)目中窗體數(shù)
19、量很多,可以將所有的窗體及資源放在不同的文件夾中。如果項(xiàng)目中窗體不是很多,可以將圖片、公共類或者程序資源文件放在相應(yīng)的文件夾中,而窗體可以直接放在項(xiàng)目根目錄下。家庭視頻監(jiān)控系統(tǒng)就是按照后者的文件夾組織結(jié)構(gòu)排列的,如圖1.10所示。1.4 公共類設(shè)計(jì)在開(kāi)發(fā)項(xiàng)目中以類的形式來(lái)組織、封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。本系統(tǒng)中創(chuàng)建了5個(gè)公共類,分別為DataCon類、DataOperate類、SoftReg類、VideoOperate類和PelcoD類。其中,DataCon類用來(lái)訪問(wèn)Microsoft Access 2003數(shù)據(jù)庫(kù);DataOperate類用于
20、對(duì)MicrosoftAccess2003數(shù)據(jù)庫(kù)進(jìn)行操作;SoftReg類用來(lái)實(shí)現(xiàn)生成機(jī)器碼和系統(tǒng)注冊(cè)功能;VideoOperate類用來(lái)封裝視頻采集卡中的各種枚舉和API函數(shù);PelcoD類用來(lái)實(shí)現(xiàn)Pelco-D協(xié)議。在程序開(kāi)發(fā)時(shí),窗體只需調(diào)用相應(yīng)的方法即可。下面分別對(duì)這5個(gè)類中的方法進(jìn)行詳細(xì)介紹。 DataCon類在DataCon類中,因?yàn)楸鞠到y(tǒng)使用的是MicrosoftAccess2003數(shù)據(jù)庫(kù),所以在命名空間區(qū)域內(nèi)引用using來(lái)連接數(shù)據(jù)庫(kù)。該類中定義了一個(gè)getCon()方法,用來(lái)使用OleDbConnection對(duì)象連接Access數(shù)據(jù)庫(kù)。getCon()方法的主要代碼如下:例程01
21、 代碼位置:光盤TM01VWMSVWMSCommonClassDataCon.cspublic OleDbConnection getCon() string strDPath = Application.StartupPath; string strDataSource = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= +strDPath.Substring(0,strDPath.LastIndexOf().Substring(0,strDPath.Substring(0,strDPath. LastIndexOf().LastIndexOf()
22、 + DataBasedb_VWMS.mdb;u OleDbConnection oledbCon = new OleDbConnection(strDataSource); return oledbCon;U代碼貼士u OleDbConnection:用來(lái)連接OLEDB數(shù)據(jù)源。 DataOperate類在DataOperate類中,首先實(shí)例化datacon、oledbcon、oledbcom、oledbda和ds5個(gè)對(duì)象。其中,datacon對(duì)象用來(lái)調(diào)用自定義類DataCon類中的方法;oledbcon對(duì)象用來(lái)連接Access數(shù)據(jù)庫(kù);oledbcom對(duì)象用來(lái)執(zhí)行Command命令語(yǔ)句;ole
23、dbda對(duì)象表示用于填充DataSet數(shù)據(jù)集和更新Access數(shù)據(jù)庫(kù)的一組數(shù)據(jù)命令和一個(gè)數(shù)據(jù)庫(kù)連接;ds對(duì)象為數(shù)據(jù)集。實(shí)例化datacon、oledbcon、oledbcom、oledbda和ds5個(gè)對(duì)象的代碼如下:例程02 代碼位置:光盤TM01VWMSVWMSCommonClassDataOperate.csDataCon datacon = new DataCon();/實(shí)例化DataCon類對(duì)象OleDbConnection oledbcon; /實(shí)例化OleDbConnection類對(duì)象,用來(lái)連接Access數(shù)據(jù)庫(kù)OleDbCommand oledbcom; /實(shí)例化OleDbCom
24、mand類對(duì)象,用來(lái)執(zhí)行SQL語(yǔ)句OleDbDataAdapter oledbda; /實(shí)例化OleDbDataAdapter類對(duì)象,用來(lái)執(zhí)行SQL語(yǔ)句,并記錄結(jié)果集DataSet ds; /DataSet數(shù)據(jù)集DataOperate類中自定義了getCom()和getDs()兩個(gè)方法,下面對(duì)它們分別進(jìn)行介紹。1getCom()方法getCom()方法為無(wú)返回值類型的自定義方法,主要用來(lái)執(zhí)行SQL語(yǔ)句。代碼如下:例程03 代碼位置:光盤TM01VWMSVWMSCommonClassDataOperate.cspublic void getCom(string strCon) oledbcon
25、= datacon.getCon(); oledbcom = new OleDbCommand(strCon, oledbcon);u oledbcon.Open();v oledbcom.ExecuteNonQuery();w oledbcon.Close();U代碼貼士u Open():該方法用來(lái)打開(kāi)數(shù)據(jù)庫(kù)連接。v ExecuteNonQuery():該方法用于執(zhí)行Command命令。w Close():該方法用來(lái)關(guān)閉數(shù)據(jù)庫(kù)連接。2getDs()方法getDs()方法用來(lái)執(zhí)行SQL語(yǔ)句,并返回一個(gè)DataSet類型的數(shù)據(jù)集對(duì)象。此方法中,首先調(diào)用DataCon類中的getCon()方法實(shí)現(xiàn)
26、Access數(shù)據(jù)庫(kù)連接,然后使用OleDbDataAdapter類對(duì)象填充DataSet數(shù)據(jù)集。代碼如下:例程04 代碼位置:光盤TM01VWMSVWMSCommonClassDataOperate.cspublic DataSet getDs(string strCon,string tbname) oledbcon = datacon.getCon(); /獲得數(shù)據(jù)庫(kù)連接 oledbda = new OleDbDataAdapter(strCon, oledbcon); /實(shí)例化OleDbDataAdapter對(duì)象 ds = new DataSet(); /實(shí)例化DataSet對(duì)象 ole
27、dbda.Fill(ds, tbname); /填充DataSet數(shù)據(jù)集 return ds; SoftReg類SoftReg類中自定義了GetDiskVolumeSerialNumber()、getCpu()、getMNum()和getRNum()4個(gè)方法,下面對(duì)它們分別進(jìn)行介紹。1GetDiskVolumeSerialNumber()方法GetDiskVolumeSerialNumber()方法用來(lái)使用ManagementObject對(duì)象的GetPropertyValue()方法獲得本機(jī)的硬盤標(biāo)識(shí)號(hào)。代碼如下:例程05 代碼位置:光盤TM01VWMSVWMSCommonClassSoftR
28、eg.cs/取得設(shè)備硬盤的卷標(biāo)號(hào)public string GetDiskVolumeSerialNumber()u ManagementClass mc = new ManagementClass(Win32_NetworkAdapterConfiguration);v ManagementObject disk = new ManagementObject(win32_logicaldisk.deviceid=d:); disk.Get();w return disk.GetPropertyValue(VolumeSerialNumber).ToString();U代碼貼士u Manage
29、mentClass:公共信息模型(CIM)管理類,它是一個(gè)WMI類,通過(guò)該類的成員,可以使用特定的WMI類路徑訪問(wèn)WMI數(shù)據(jù)。v ManagementObject:表示W(wǎng)MI實(shí)例。w GetPropertyValue():該方法用來(lái)獲取某屬性值的等效訪問(wèn)器。2getCpu()方法getCpu()方法用來(lái)獲得本機(jī)的CPU序列號(hào)。代碼如下:例程06 代碼位置:光盤TM01VWMSVWMSCommonClassSoftReg.cs/獲得CPU的序列號(hào)public string getCpu() string strCpu = null; ManagementClass myCpu = new Man
30、agementClass(win32_Processor);/指定win32_Processor管理類 ManagementObjectCollection myCpuConnection = myCpu.GetInstances(); foreach (ManagementObject myObject in myCpuConnection) strCpu = myObject.PropertiesProcessorid.Value.ToString(); /獲得CPU序列號(hào) break; return strCpu;3getMNum()方法getMNum()方法用來(lái)從得到的硬盤標(biāo)識(shí)號(hào)和CP
31、U序列號(hào)中取出一定的位數(shù)作為機(jī)器碼。代碼如下:例程07 代碼位置:光盤TM01VWMSVWMSCommonClassSoftReg.cs/生成機(jī)器碼public string getMNum() string strNum = getCpu() + GetDiskVolumeSerialNumber();/獲得CPU和硬盤序列號(hào) string strMNum = strNum.Substring(0,24);/從生成的字符串中取出前24個(gè)字符作為機(jī)器碼 return strMNum;public int intCode = new int127;/存儲(chǔ)密鑰public int intNumbe
32、r = new int25;/存儲(chǔ)機(jī)器碼的ASCII值public char Charcode = new char25;/存儲(chǔ)機(jī)器碼字public void setIntCode()/給數(shù)組賦值小于10的數(shù) for (int i = 1; i intCode.Length; i+) intCodei = i % 9; 4getRNum()方法getRNum()方法用來(lái)根據(jù)得到的機(jī)器碼生成注冊(cè)碼。代碼如下:例程08 代碼位置:光盤TM01VWMSVWMSCommonClassSoftReg.cs/生成注冊(cè)碼public string getRNum() setIntCode();/初始化為數(shù)組
33、 for (int i = 1; i Charcode.Length; i+)/把機(jī)器碼存入數(shù)組中 etMNum().Substring(i - 1, 1); for (int j = 1; j intNumber.Length; j+)/把字符的ASCII值存入一個(gè)整數(shù)組中 intNumberj = intCodeConvert.ToInt32(Charcodej) + Convert.ToInt32(Charcodej); string strAsciiName = ;/用于存儲(chǔ)注冊(cè)碼 for (int j = 1; j = 48 & intNumberj = 65 & intNumber
34、j = 97 & intNumberj 122) /判斷字符ASCII值是否大于z strAsciiName += Convert.ToChar(intNumberj - 10).ToString(); else strAsciiName += Convert.ToChar(intNumberj - 9).ToString(); return strAsciiName; VideoOperate類VideoOperate類主要封裝了操作視頻采集卡的各種枚舉及方法,由于要調(diào)用動(dòng)態(tài)鏈接庫(kù),所以首先要引用命名空間。封裝動(dòng)態(tài)鏈接庫(kù)中各種枚舉及方法的代碼如下:例程09 代碼位置:光盤TM01VWMSVW
35、MSCommonClassVideoOperate.cs#region 視頻采集卡中的枚舉public enum DISPLAYTRANSTYPE NOT_DISPLAY = 0, PCI_VIEDOMEMORY = 1, PCI_MEMORY_VIDEOMEMORY = 2/視頻預(yù)覽和視頻捕捉數(shù)據(jù)流格式,目前版本只支持UUY2格式public enum COLORFORMAT RGB32 = 0x0, RGB24 = 0x1, RGB16 = 0x2, RGB15 = 0x3, YUY2 = 0x4, TYUV = 0x5, 8 = 0x6, GB8 = 0x7, L422 = 0x8, L
36、411 = 0x9, UV12 = 0xA, UV9 = 0xB, AW = 0xE/*視頻預(yù)覽及視頻捕獲的顯示屬性,其中: BRIGHTNESS為亮度,value范圍:0255,最佳:80 CONTRAST為對(duì)比度,value范圍:-128127,最佳:x44 SATURATION為飽和度,value范圍:-128127,最佳:x40 HUE為色度,value范圍:-128127,最佳:x0 只有當(dāng)COLORDEVICETYPE等于COLOR_DECODER時(shí)才有效 SHARPNESS為銳度,value范圍:-87,最佳:x0 只有當(dāng)COLORDEVICETYPE等于COLOR_DECODE
37、R時(shí)才有效*/public enum COLORCONTROL BRIGHTNESS = 0, CONTRAST = 1, SATURATION = 2, HUE = 3, SHARPNESS = 4/*顯示設(shè)備的顯示屬性,其中: COLOR_DECODER為解碼器的顯示屬性,它會(huì)影響視頻預(yù)覽和視頻捕獲的顯示屬性 COLOR_PREVIEW為視頻預(yù)覽的顯示屬性 COLOR_CAPTURE為視頻捕獲的顯示屬性 */pblic enum COLORDEVICETYPE COLOR_DECODER = 0, COLOR_PREVIEW = 1, COLOR_CAPTURE = 2,/*視頻捕獲方式,
38、其中: CAP_NULL_STREAM表示捕獲無(wú)效 CAP_ORIGIN_STREAM表示捕獲為原始流回調(diào) CAP_MPEG4_STREAM表示捕獲為MPEG4 */ public enum CAPMODEL CAP_NULL_STREAM = 0, CAP_ORIGIN_STREAM = 1, CAP_MPEG4_STREAM = 2, /*音視頻MPEG4捕獲方式,只有CAPMODEL等于CAP_MPEG4_STREAM時(shí)有效,其中: MPEG4_AVIFILE_ONLY表示存為MPEG4文件 MPEG4_CALLBACK_ONLY表示MPEG數(shù)據(jù)回調(diào) MPEG4_AVIFILE_CALL
39、BACK表示存為MPEG文件并回調(diào) */ public enum MP4MODEL MPEG4_AVIFILE_ONLY = 0, MPEG4_CALLBACK_ONLY = 1, MPEG4_AVIFILE_CALLBACK = 2, /*MPEG4_XVID壓縮模式,其中: XVID_CBR_MODE為固定碼率模式 XVID_VBR_MODE為動(dòng)態(tài)碼率模式 */ public enum COMPRESSMODE XVID_CBR_MODE = 0, XVID_VBR_MODE = 1, /*視頻源的輸入頻率,其中: FIELD_FREQ_50HZ 50HZ為絕對(duì)多數(shù)為PAL制式 FIELD
40、_FREQ_60HZ 60HZ為絕對(duì)多數(shù)為NTSC制式 FIELD_FREQ_0HZ為無(wú)信號(hào)*/ public enum eFieldFrequency FIELD_FREQ_50HZ = 0, FIELD_FREQ_60HZ = 1, FIELD_FREQ_0HZ = 2, /*電平狀態(tài),其中: HIGH_VOLTAGE為高電平 LOW_VOLTAGE為低電平*/ public enum eVOLTAGELEVEL HIGH_VOLTAGE = 0, LOW_VOLTAGE = 1, #endregion#region 視頻采集卡中的API函數(shù)/初始化系統(tǒng)資源DllImport(Sa7134
41、Capture.dll, EntryPoint = VCAInitSdk)public extern static bool VCAInitSdk(IntPtr hWndMain, DISPLAYTRANSTYPE eDispTransType, bool bLnitAuDev);/釋放系統(tǒng)資源DllImport(Sa7134Capture.dll, EntryPoint = VCAUnInitSdk)public extern static void VCAUnInitSdk();/打開(kāi)指定卡號(hào)的設(shè)備,分配相應(yīng)系統(tǒng)資源DllImport(Sa7134Capture.dll, EntryPoi
42、nt = VCAOpenDevice)public extern static bool VCAOpenDevice(Int32 dwCard, IntPtr hPreviewWnd);/關(guān)閉指定卡號(hào)的設(shè)備,釋放相應(yīng)系統(tǒng)資源DllImport(Sa7134Capture.dll, EntryPoint = VCACloseDevice)public extern static bool VCACloseDevice(Int32 dwCard);/返回系統(tǒng)當(dāng)中卡號(hào)數(shù)量,即為SAA7134硬件數(shù)目,為0時(shí)表示沒(méi)有設(shè)備存在DllImport(Sa7134Capture.dll, EntryPoint
43、 = VCAGetDevNum)public extern static int VCAGetDevNum();/開(kāi)始視頻預(yù)覽DllImport(Sa7134Capture.dll, EntryPoint = VCAStartVideoPreview)public extern static bool VCAStartVideoPreview(Int32 dwCard);/停止視頻預(yù)覽DllImport(Sa7134Capture.dll, EntryPoint = VCAStopVideoPreview)public extern static bool VCAStopVideoPrevie
44、w(Int32 dwCard);/更新視頻預(yù)覽DllImport(Sa7134Capture.dll, EntryPoint = VCAUpdateVideoPreview)public extern static bool VCAUpdateVideoPreview(Int32 dwCard, IntPtr hPreviewWnd);/更新overlay窗口,當(dāng)overlay窗口句柄改變或尺寸、位置改變時(shí)調(diào)用,overlay窗口就是包含/多路顯示小窗口的大窗口,overlay窗口必須有一個(gè),多路顯示小窗口必須包含在其內(nèi)部DllImport(Sa7134Capture.dll, EntryPo
45、int = VCAUpdateOverlayWnd)public extern static bool VCAUpdateOverlayWnd(IntPtr hOverlayWnd);/保存快照為JPEG文件DllImport(Sa7134Capture.dll, EntryPoint = VCASaveAsJpegFile)public extern static bool VCASaveAsJpegFile(Int32 dwCard, string lpFileName, Int32 dwQuality);/保存快照為BMP文件DllImport(Sa7134Capture.dll, En
46、tryPoint = VCASaveAsBmpFile)public extern static bool VCASaveAsBmpFile(Int32 dwCard, string lpFileName);/開(kāi)始視頻捕獲DllImport(Sa7134Capture.dll, EntryPoint = VCAStartVideoCapture)public extern static bool VCAStartVideoCapture(Int32 dwCard, CAPMODEL enCapMode, MP4MODEL enMp4Mode, string lpFileName);/停止視頻捕
47、獲DllImport(Sa7134Capture.dll, EntryPoint = VCAStopVideoCapture)public extern static bool VCAStopVideoCapture(Int32 dwCard);/設(shè)置視頻捕獲尺寸,dwWidth和dwHeight最好為16的倍數(shù),否則,動(dòng)態(tài)檢測(cè)為1616的一個(gè)檢測(cè)小塊,檢測(cè)/將會(huì)不準(zhǔn)確DllImport(Sa7134Capture.dll, EntryPoint = VCASetVidCapSize)public extern static bool VCASetVidCapSize(Int32 dwCard
48、, Int32 dwWidth, Int32 dwHeight);/得到視頻捕獲尺寸DllImport(Sa7134Capture.dll, EntryPoint = VCAGetVidCapSize)public extern static bool VCAGetVidCapSize(Int32 dwCard, Int32 dwWidth, Int32 dwHeight);/設(shè)置視頻捕獲頻率DllImport(Sa7134Capture.dll, EntryPoint = VCASetVidCapFrameRate)public extern static bool VCASetVidCap
49、FrameRate(Int32 dwCard, Int32 dwFrameRate, bool bFrameRateReduction);/設(shè)置MPEG壓縮的位率DllImport(Sa7134Capture.dll, EntryPoint = VCASetBitRate)public extern static bool VCASetBitRate(Int32 dwCard, Int32 dwBitRate);/設(shè)置MPEG壓縮的關(guān)鍵幀間隔,必須大于等于幀率DllImport(Sa7134Capture.dll, EntryPoint = VCASetKeyFrmInterval)public extern static bool VCASetKeyFr
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)評(píng)報(bào)告編制及評(píng)審服務(wù)合同范本大全
- 2025年可再生能源合伙開(kāi)發(fā)合同
- 2025年度化妝品電商平臺(tái)合作運(yùn)營(yíng)合同
- 2025年度生物質(zhì)鍋爐安裝及環(huán)保排放達(dá)標(biāo)合同
- 2025版特種柴油委托采購(gòu)居間服務(wù)合同6篇
- 2025年度婚前婚后財(cái)產(chǎn)保障合同
- 2025年度網(wǎng)絡(luò)安全服務(wù)合同防護(hù)(升級(jí)版)
- 二零二四年醫(yī)療設(shè)備購(gòu)銷及安裝合同
- 2025年度國(guó)際貿(mào)易函電范文匯編與解析合同
- 二零二四年度70米煙囪拆除工程進(jìn)度匯報(bào)及監(jiān)督合同
- 2024年全國(guó)職業(yè)院校技能大賽高職組(研學(xué)旅行賽項(xiàng))考試題庫(kù)(含答案)
- 電器儀表人員培訓(xùn)課件
- 2025年中小學(xué)春節(jié)安全教育主題班會(huì)課件
- 計(jì)量經(jīng)濟(jì)學(xué)練習(xí)題
- 2025年全國(guó)高考體育單招考試模擬政治試卷試題(含答案詳解)
- 反走私課件完整版本
- 四年級(jí)下冊(cè)數(shù)學(xué)知識(shí)點(diǎn)總結(jié)
- 紅色喜慶公司年會(huì)客戶答謝模板
- 鐵未來(lái)商業(yè)模擬挑戰(zhàn)賽規(guī)則與流程
- 氯諾昔康針劑在圍術(shù)期鎮(zhèn)痛與其它市場(chǎng)應(yīng)用(代表培訓(xùn)完整版)
- 經(jīng)歷是流經(jīng)裙邊的水
評(píng)論
0/150
提交評(píng)論