軟件工程畢業(yè)論文-寵物店管理系統(tǒng)的設計與實現(xiàn)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b>  (20 屆)</b></p><p>  寵物店管理系統(tǒng)的設計與實現(xiàn)</p><p><b>  摘要</b></p><p>  隨著城市經(jīng)濟的高速發(fā)展,城市治安管理面臨的壓力也越來越大,傳統(tǒng)的

2、以人力防范和事后處理為主的公安管理模式已經(jīng)開始制約城市治安管理水平的進一步提高。城市公安管理部門迫切需要采取更多的技術(shù)防犯手段來提高管理的范圍和效率,彌補人力管理資源缺乏和效率低下的缺點。</p><p>  隨著城市寬帶網(wǎng)覆蓋范圍的擴大和使用費用的降低,城市公安管理部門提出了逐步整合完善公安部門原有的各種監(jiān)控系統(tǒng),構(gòu)建一個城市統(tǒng)一的一體化綜合監(jiān)控管理平臺的需求。</p><p>  本系

3、統(tǒng)是一套用于“平安城市”視頻監(jiān)控的綜合調(diào)度平臺,目標是將“平安城市”中所有的視頻矩陣——無論是大型矩陣,還是社區(qū)和單位的小型矩陣——全部統(tǒng)合到一個平臺上使用和管理,使得用戶能夠使用一個鍵盤將城市中任何一臺攝像機的圖像顯示在任何一塊監(jiān)控屏幕上。</p><p>  本系統(tǒng)率先將先進的物聯(lián)網(wǎng)技術(shù)應用于“平安城市”視頻監(jiān)控領(lǐng)域。通過將城市中所有現(xiàn)存的攝像機進行統(tǒng)一使用和管理,使得每一個角落都能被實時監(jiān)控到,在預防、發(fā)現(xiàn)

4、、控制和打擊違法犯罪、提供破案線索、固定違法犯罪證據(jù)等方面發(fā)揮著人防、物防所不可替代的重要作用,真正實現(xiàn)“平安城市”。</p><p>  關(guān)鍵詞:“平安城市”;物聯(lián)網(wǎng);視頻監(jiān)控系統(tǒng) </p><p><b>  Abstract</b></p><p>  With the rapid development of the urban eco

5、nomy, public security administration faces growing pressure. Traditional management mode of public security, which emphasis on prevention and post-processing, has begun restricting to further improve the management level

6、 of public security. Public security administration is urgently needed to improve the scope and efficiency of management. They want to take more guard against technical means and makes up for the disadvantages of manpowe

7、r resources and i</p><p>  With the expansion of urban broadband network coverage and lower costs, urban public security administration proposes to build a city unified integrated management platform needs.&

8、lt;/p><p>  This paper implements a video monitor platform for the SAFE CITYT program. The platform collects the entire video matrix--regardless of large matrix, also is community and units of small matrix. Th

9、rough this platform, users can manage all kinds of public security videos by using one keyboard. </p><p>  As far as I know, it is the first time to apply Internet of Things technologies in the area of

10、public security video monitor system. By unified all the existing cameras in use and management, every corner can be monitored in real time. It makes the platform playing an important role in preventing, detecting, cont

11、rolling and combating crime, providing a clue, fixing plays defense, such as criminal evidence, which makes important contributions to the SAFE CITY program. </p><p>  Keywords:SAFE CITY program;Internet of

12、Things;video monitor system</p><p><b>  目 錄  </b></p><p>  1系統(tǒng)概述及軟件開發(fā)背景技術(shù)1</p><p><b>  1.1系統(tǒng)概述1</b></p><p>  1.2軟件開發(fā)背景技術(shù)2</p&

13、gt;<p>  1.2.1 可配置的矩陣接入技術(shù)2</p><p>  1.2.2 自主研發(fā)的多協(xié)議命令路由技術(shù)3</p><p>  2 系統(tǒng)需求分析4</p><p>  2.1功能性需求4</p><p>  2.1.1切換視頻4</p><p>  2.1.2 控制攝像機4</

14、p><p>  2.1.3 后臺管理4</p><p>  2.1.4日志系統(tǒng)5</p><p>  2.2非功能性需求5</p><p>  2.2.1可靠性5</p><p>  2.2.2實時性5</p><p>  2.2.3魯棒性5</p><p>&l

15、t;b>  3 系統(tǒng)設計6</b></p><p>  3.1 軟件的整體發(fā)明內(nèi)容6</p><p>  3.2軟件的功能模塊及意外應對機制6</p><p>  3.2.1服務器6</p><p>  3.2.2Message消息傳遞系統(tǒng)9</p><p>  3.2.3異步傳輸API1

16、0</p><p>  3.3軟件的具體實施方式13</p><p>  3.3.1應用系統(tǒng)協(xié)調(diào)器13</p><p>  3.3.2登錄界面14</p><p>  3.3.3軟鍵盤15</p><p>  3.3.4 攝像機陣列16</p><p>  3.3.5 收藏組18&l

17、t;/p><p>  3.3.6 巡航21</p><p>  3.3.7 配置22</p><p><b>  結(jié)論23</b></p><p><b>  參考文獻24</b></p><p><b>  致謝25</b></p>

18、<p>  1 系統(tǒng)概述及軟件開發(fā)背景技術(shù)</p><p><b>  1.1系統(tǒng)概述</b></p><p>  本系統(tǒng)是一套用于“平安城市”視頻監(jiān)控的綜合調(diào)度平臺,目標是將“平安城市”中所有的視頻矩陣——無論是大型矩陣,還是社區(qū)和單位的小型矩陣——全部統(tǒng)合到一個平臺上使用和管理,使得用戶能夠使用一個鍵盤將城市中任何一臺攝像機的圖像顯示在任何一塊監(jiān)控屏幕

19、上。</p><p>  本產(chǎn)品率先將先進的物聯(lián)網(wǎng)技術(shù)應用于“平安城市”視頻監(jiān)控領(lǐng)域,在國內(nèi)尚屬首創(chuàng)。本系統(tǒng)可以將城市中所有現(xiàn)存的攝像機進行統(tǒng)一使用和管理,使得每一個角落都能被實時監(jiān)控到,在預防、發(fā)現(xiàn)、控制和打擊違法犯罪、提供破案線索、固定違法犯罪證據(jù)等方面發(fā)揮著人防、物防所不可替代的重要作用,真正實現(xiàn)“平安城市”。</p><p>  圖1.1 整體系統(tǒng)結(jié)構(gòu)圖</p>&

20、lt;p>  圖1.2 Pad鍵盤軟件系統(tǒng)結(jié)構(gòu)圖</p><p>  整個系統(tǒng)分為傳輸服務層、服務層和應用層三個層次。傳輸服務層用于與服務器之間傳遞異步消息。服務層使用底層的異步傳輸服務和本地數(shù)據(jù)庫操作API,將業(yè)務邏輯封裝成了KeyPress傳輸服務、認證授權(quán)服務、數(shù)據(jù)服務和Log服務,為應用層提供服務API。應用層主要包含各項UI,用于捕獲用戶輸入和顯示系統(tǒng)內(nèi)部狀態(tài)。</p><p

21、>  1.2軟件開發(fā)背景技術(shù)</p><p>  1.2.1 可配置的矩陣接入技術(shù)</p><p>  傳統(tǒng)的矩陣接入方案,需要向程序代碼中添加接入矩陣的對應的命令解析代碼,這種方案具有以下兩個弊端:</p><p>  可擴展性差。不同品牌的矩陣通常具有不同的通信協(xié)議,與配套的控制鍵盤相對應。由于歷史原因,監(jiān)控網(wǎng)絡中存在著大量不同廠家的矩陣和鍵盤,為了實現(xiàn)這

22、些監(jiān)控網(wǎng)絡中視頻的調(diào)度,傳統(tǒng)方案中必須包含處理所有通信協(xié)議的程序代碼。當新的矩陣或者鍵盤接入網(wǎng)絡時,就需要在原有代碼中增加所需的處理代碼,修改原有程序,擴展性差。</p><p>  低魯棒性。由于每一次新品牌的矩陣或者鍵盤接入網(wǎng)絡后,都需要重新修改程序處理代碼,在一個大規(guī)模的監(jiān)控網(wǎng)絡中,這種修改為程序的安全運行帶來了極大的風險,在某些情況下,很可能造成核心程序運行錯誤,系統(tǒng)無法正常工作。</p>

23、<p>  可配置的矩陣接入技術(shù),將軟件系統(tǒng)的擴展接口留在了矩陣端。當新矩陣接入監(jiān)控系統(tǒng)的時候,通過添加新矩陣對應的配置文件,極大的方便了系統(tǒng)的擴展。</p><p>  統(tǒng)的時候,通過添加新矩陣對應的配置文件,極大的方便了系統(tǒng)的擴展。</p><p>  1.2.2 自主研發(fā)的多協(xié)議命令路由技術(shù)</p><p>  在大型的監(jiān)控系統(tǒng)中,由于存在不同的矩陣

24、,并且不同矩陣之間的通信協(xié)議不同,系統(tǒng)中的攝像頭通過矩陣進行聯(lián)網(wǎng)時,控制鍵盤發(fā)出的命令必須要正確的路由到目標攝像頭。</p><p>  大型監(jiān)控網(wǎng)絡中,要求每個鍵盤要控制任何目標攝像頭,這帶來兩個問題</p><p>  控制鍵盤發(fā)出的命令必須能夠被目標攝像頭所在的矩陣正確識別</p><p>  控制鍵盤發(fā)出的命令必須能夠正確路由到目標攝像頭所在矩陣</p

25、><p>  多協(xié)議命令路由技術(shù),通過將各種控制鍵盤的命令轉(zhuǎn)換為系統(tǒng)設定的統(tǒng)一的控制命令集,并且根據(jù)控制命令中目標攝像頭所在矩陣,將控制命令傳送至目標矩陣。</p><p>  多協(xié)議命令路由技術(shù)的使用,極大提升了系統(tǒng)的兼容性,有效地保護了歷史投資。</p><p><b>  2 系統(tǒng)需求分析</b></p><p>&l

26、t;b>  2.1功能性需求</b></p><p>  系統(tǒng)的主要功能是實現(xiàn)視頻監(jiān)視人員使用鍵盤將任意攝像機的視頻流顯示在任意顯示器上,并且能夠控制攝像機的轉(zhuǎn)動。</p><p><b>  2.1.1切換視頻</b></p><p>  操作人員可以按照2.1小節(jié)描述的規(guī)則和優(yōu)先級順序,通過一個鍵盤,切換顯示在任何顯示器上

27、的視頻源。</p><p>  用戶在鍵盤上的一般性操作是:</p><p>  在鍵盤上輸入任意機頂盒編號;</p><p>  在鍵盤上輸入任意攝像機編號;</p><p><b>  在鍵盤上確認。</b></p><p>  用戶的輸入不僅限于這種模式,鍵盤上的前后切換鍵也可以被用于切換視

28、頻。</p><p>  系統(tǒng)響應用戶操作,按照約定的“視頻切換的優(yōu)先級規(guī)則”進行視頻切換;系統(tǒng)通過處理和轉(zhuǎn)發(fā)鍵盤命令到合適的矩陣來完成真正的切換操作。系統(tǒng)將操作的執(zhí)行結(jié)果(包括矩陣的執(zhí)行結(jié)果)返回給鍵盤。</p><p>  2.1.2 控制攝像機</p><p>  操作人員可以通過鍵盤上的搖桿控制當前接入的攝像機,包括云臺轉(zhuǎn)動、攝像機變焦、光圈、聚焦調(diào)整。&l

29、t;/p><p>  當前接入的攝像機編號為鍵盤最后輸入的攝像機編號,或者為當前接入的機頂盒對應的攝像機編號。當兩者都不存在時,系統(tǒng)對鍵盤返回錯誤碼。</p><p>  操作人員移動搖桿時,鍵盤將發(fā)出一系列命令。系統(tǒng)將對這一系列命令進行處理和響應。系統(tǒng)通過處理和轉(zhuǎn)發(fā)鍵盤命令到合適的矩陣完成真正的控制操作。</p><p>  2.1.3 后臺管理</p>

30、<p>  后臺管理功能包括1)系統(tǒng)管理員用戶登陸和密碼修改、2)設備管理,包括設備配置信息和狀態(tài)的查看,以及增刪改設備配置信息。</p><p>  設備包括攝像機、攝像機矩陣、鍵盤、機頂盒。各設備的詳細配置字段請參看“數(shù)據(jù)庫設計”章節(jié)。</p><p>  系統(tǒng)管理員可配置系統(tǒng)中鍵盤與矩陣之間的應用層協(xié)議,以支持多種鍵盤。</p><p>  系統(tǒng)管

31、理員通過服務器提供的Web頁面完成配置工作。</p><p><b>  2.1.4日志系統(tǒng)</b></p><p>  每一次鍵盤操作都應該被詳細記錄下來,包括時間戳、原始命令、處理后的命令、鍵盤信息、矩陣信息、攝像機信息、機頂盒信息。</p><p>  每一次登陸和對配置項的增刪改操作都需要被記錄下來,包括時間戳、用戶信息、配置項目名稱、

32、配置項目的原值和新值。</p><p>  系統(tǒng)管理員可以通過服務器提供的Web界面查看日志。</p><p><b>  2.2非功能性需求</b></p><p><b>  2.2.1可靠性</b></p><p>  作為系統(tǒng)的關(guān)鍵節(jié)點,系統(tǒng)監(jiān)控服務器需要7*24小時在線。</p>

33、;<p><b>  2.2.2實時性</b></p><p>  鍵盤操作應該實時得到反饋結(jié)果,因此要求系統(tǒng)能夠快速轉(zhuǎn)發(fā)鍵盤命令,盡量減少延遲。</p><p><b>  2.2.3魯棒性</b></p><p>  操作人員的誤操作應該被系統(tǒng)識別并且避免導致錯誤后果。</p><p&

34、gt;<b>  3 系統(tǒng)設計</b></p><p>  3.1 軟件的整體發(fā)明內(nèi)容</p><p>  我們通過該軟件在Android Pad上實現(xiàn)視頻監(jiān)控軟鍵盤,同時完成更多人性化和安全功能:</p><p>  1. 實現(xiàn)視頻監(jiān)控軟鍵盤;</p><p>  2. 更多的人性化功能;</p><

35、;p>  3. 更多更好的權(quán)限控制功能;</p><p>  4. 功能個性化定制。</p><p>  3.2軟件的功能模塊及意外應對機制</p><p><b>  3.2.1服務器</b></p><p>  服務器端控制程序的主要功能是搭建鍵盤與矩陣之間的信息交互平臺,同時要求可以兼容接入不同類型的鍵盤和矩

36、陣。</p><p>  系統(tǒng)采用Proxy模型為主體架構(gòu),即每個鍵盤和矩陣都通過一個代理(KeyboardProxy和MatrixProxy)實體接入一個統(tǒng)一的信息交換結(jié)構(gòu)(SwitchFabric)。代理實體在軟件上抹平了不同種鍵盤及矩陣的差異;信息交換結(jié)構(gòu)則描述了網(wǎng)絡的結(jié)構(gòu),實現(xiàn)了鍵盤與矩陣間的信息交換。</p><p>  圖3 – 圖3.1 服務器端系統(tǒng)模型</p>

37、<p>  從上圖中可以看出,系統(tǒng)模型由三部分構(gòu)成:</p><p>  第一部分:按鍵解碼過程,負責將收到的字節(jié)流識別為一個一個KeyPress,即一個一個的按鍵動作,然后將這些按鍵動作組合翻譯成一種標準描述。</p><p>  服務器程序從鍵盤收到的信息是斷續(xù)的字節(jié)流,按鍵解碼過程的第一步是將這些字節(jié)流分割成一個一個有意義的按鍵動作,即KeyPress。</p>

38、;<p>  KeyPress指鍵盤的一次按鍵動作,例如“按鍵1被按一次”,對應類KeyPress。需要區(qū)分的是,鍵盤上的每一個鍵稱之為Key Code,對應類KeyCode;KeyCode代表鍵本身,是固定不變的;KeyPress是一次動作,它在鍵盤的按鍵被按下后產(chǎn)生,是動態(tài)產(chǎn)生的。</p><p>  識別出單獨一個KeyPress在很多時候并不能表示出用戶的完整意圖,例如,用戶需要連續(xù)按“sc

39、reen”,一系列數(shù)字鍵,最后按一個“return”鍵之后,才能表示“選中某個屏幕(或機頂盒)”。因此,我們需要定義一個結(jié)構(gòu)來表示用戶的每個完整的意圖。這個結(jié)構(gòu)就是Command。</p><p>  Command是服務器程序內(nèi)部表示用戶的一個完整意圖的結(jié)構(gòu)。它與任何特定類型的鍵盤或特定類型的矩陣都無關(guān),是一套通用的鍵盤與矩陣間的標準協(xié)議。任何一種特定的鍵盤或矩陣都可以將自己的特定協(xié)議映射到這個協(xié)議上來;它也可

40、以轉(zhuǎn)化為任何一種特定鍵盤和矩陣的之間的協(xié)議。</p><p>  按鍵解碼過程第二步就是將一個或者多個KeyPress翻譯成標準結(jié)構(gòu)來表示完整的用戶意圖,即Command。</p><p>  這一部分實際上處理的是“鍵盤輸入什么”,做法是:無論鍵盤輸入什么,都將被翻譯成一種標準格式,即Command。這樣,任何鍵盤都可以被接入系統(tǒng)中,而不影響其它部分。</p><p&

41、gt;  第二部分:內(nèi)部處理過程。用戶意圖在被識別成Command之后,接下來是如何“投遞”用戶意圖的過程。</p><p>  圖3.2 優(yōu)先級規(guī)則判定流程實際上是用戶意圖的“投遞”流程</p><p>  這一部分處理的是“如何將鍵盤的命令送到合適的矩陣和機頂盒”,實際上處理的是系統(tǒng)內(nèi)各組件的連接方式。當然,更加復雜的邏輯也可以在這里實現(xiàn)。</p><p>  

42、需要注意的是,由于這一過程處于純粹的Command環(huán)境中,與鍵盤和矩陣的硬件細節(jié)完全隔離開,僅僅需要考慮設備之間的邏輯連接關(guān)系即可。</p><p>  第三部分:信號重新編碼過程。確定用戶意圖(即Command)的投遞方向之后,需要將Command翻譯成目標設備(即特定類型的矩陣)可接受的信號模式,序列化成字節(jié)流發(fā)送到目標設備。</p><p>  這一部分處理的是“矩陣能接受的命令格式

43、”,做法是:將標準格式翻譯成Matrix要求的特定格式。這樣,任何可控裝置都可以被接入系統(tǒng)中,而不影響其他部分。</p><p>  最后,矩陣返回的ACK信號的處理模型同KeyPress模型是一樣的,只是信號傳遞的方向不同。</p><p>  綜合以上所述,服務器端的控制程序整體實現(xiàn)如下:</p><p>  圖5 – 圖3.3 服務器端控制程序的實現(xiàn)</

44、p><p>  圖3.4 服務器模型:數(shù)據(jù)處理流程</p><p>  連接器確定了Pad如何連接到主控服務器。目前通過兩種方式:藍牙和Wifi。藍牙方式實際上是連接到附加電路板的藍牙上,附加電路板后面有一個透明通道可以讓Pad和服務器直接通信,此時Pad就像直接連接到了服務器上一樣。Wifi方式則是直接通過TCP/IP連接到服務器上。</p><p>  連接器的主要

45、工作就是將一個字節(jié)流發(fā)送到服務器的對等連接器上。這些字節(jié)流(byte[])將被直接交給連接器后端的Message系統(tǒng),由MessageCodec進行編解碼,獲得具體的Message。</p><p>  在連接斷開時,連接器將試圖自動重新建立連接。</p><p>  3.2.2Message消息傳遞系統(tǒng)</p><p>  系統(tǒng)的消息傳遞系統(tǒng)由如下三部分構(gòu)成:&l

46、t;/p><p>  1. Message基類;</p><p>  2. MessageCodec,Message編解碼器;</p><p>  3. Message系統(tǒng)的使用者(即系統(tǒng)中其它模塊)自定義的Message子類。</p><p>  Message消息系統(tǒng)的設計目標是:</p><p>  1. 允許用戶自

47、定義任意形式的Message子類,能夠無縫接入Messag基本系統(tǒng);</p><p>  2. 允許用戶自定義Message子類的編解碼過程,該過程能夠無縫接入Messag基本系統(tǒng);</p><p>  3. 用戶僅僅需要定義以上兩項,即可直接實現(xiàn)自定Message子類的編解碼——即從byte[]組裝出Message子類對象,將Message子類對象轉(zhuǎn)換成byte[]。</p>

48、<p>  Message是整個Message系統(tǒng)的基類,所有需要Codec編解碼的類都必須繼承自它:</p><p>  1. Message基類中定義了Message的基本結(jié)構(gòu),同時實現(xiàn)了該基礎結(jié)構(gòu)的編解碼方法;</p><p>  2. Message基類中最重要的方法是setPayload和getPayload方法,子類必須實現(xiàn)這兩個函數(shù),以實現(xiàn)子類本身的解碼和編碼過

49、程——實際上,Message基類在完成自身基礎結(jié)構(gòu)的編解碼之后,將調(diào)用子類的setPayload和getPayload方法來編解碼其自身的payload域。</p><p>  編解碼器用于1)將Message編碼成字節(jié)流,2)從連接器接收到的字節(jié)流中解碼出Message。</p><p><b>  字節(jié)流的格式采用:</b></p><p>

50、;  {前導字符} {長度} {序列號} {回復序列號} {類型} {負載} {校驗碼} {結(jié)尾字符}</p><p>  其中,長度定義為去除前導和結(jié)尾字符之外的byte數(shù)。</p><p>  Message包含一個虛的getType和getPayload方法,分別獲得類型和負載的字節(jié)數(shù)組,子類需要實現(xiàn)這兩個函數(shù)。getPayload方法用于對Message子類對象的payload進行

51、編碼。</p><p>  如果異步API沒有設置Message的序列號,Codec會自動設置。</p><p>  解碼時,Codec使用PacketSlicer從字節(jié)流中切出合法的包,然后識別其中的序列號和類型。Codec需要依據(jù)類型從MessageCodec類的Message子類注冊信息中獲得一個Message實例(采用克隆模式),然后調(diào)用其setPayload方法來解析其負載內(nèi)容,

52、并獲得真正的Message子類。</p><p>  MessageCodec使用Register和Clone模式構(gòu)建,這樣可以使得其可以直接從輸入的byte[]中解碼出Message的子類對象,而不僅僅是Message這個基類。</p><p><b>  其實現(xiàn)方法是:</b></p><p>  1. 外部組件需要向MessageCode

53、c注冊其所實現(xiàn)的Message子類類型(即其type字段),同時注冊一個子類對象;這些注冊信息全局可用;所有的Message子類的注冊代碼位于cybertrue-commons-base工程的KeyboardCodec4Message函數(shù)中。</p><p>  2. MessageCodec解碼時,將根據(jù)輸入的byte[]中解出來的type信息從子類注冊表中查找對應的Message子類對象;一旦查到,則克隆該對

54、象,作為解碼出的返回對象;如果查不到注冊信息,則直接返回新建的Message對象;</p><p>  3. 在注冊信息中查到Message子類對象之后,MessageCodec的解碼過程將把Message的payload字節(jié)數(shù)組交由該子類對象的setPayload方法來進行進一步的解碼操作。這樣,MessageCodec能夠完全解碼輸入的byte[]:獲得準確的Message子類對象,同時解碼出Message子

55、類中所有的成員變量。</p><p>  Message子類對象的編碼和解碼過程可以使用一個叫做Transmitter的工具類輕松實現(xiàn),該類封裝了對基礎數(shù)據(jù)類型的編碼(transimit)和解碼(parse)操作。這樣,Message子類的編解碼操作實際上變成了在setPayload和getPaylaod函數(shù)中簡單使用Transmitter工具針對每個成員變量的編解碼過程。需要注意的是,編解碼操作必須一一對應,以

56、保證編解碼的正確性。</p><p>  對等體屬于基礎結(jié)構(gòu),服務器端的對等體與Pad端的是一樣的。實現(xiàn)方式是:</p><p>  1. 連接器發(fā)現(xiàn)連接斷開時,觸發(fā)連接斷開事件,這個事件將調(diào)用”destroyed”函數(shù);</p><p>  2. 重連機制捕獲這一事件,啟動一個Timer,不斷嘗試重新連到服務器(藍牙模式下是附加電路板)上;</p>

57、<p>  3. 一旦重新建立了連接,連接器將觸發(fā)連接建立事件;</p><p>  4. 重連機制捕獲這一事件,停止重連Timer。</p><p>  3.2.3異步傳輸API</p><p>  異步傳輸API用于在Pad與服務器之間異步地傳輸Message——即雙方在發(fā)送Message之后可以直接返回,等待回復Message或者超時。</p&

58、gt;<p>  通過異步API發(fā)送Message時,它會確定該Message是否需要回復——當Message需要回復時,它需要指定一個MessageReceiveHandler來等待回復Message;那么當Message指定了自身的MessageReceiveHandler時,我們認為該Message是需要回復的。</p><p>  如果Message需要回復,那么異步API會記錄下該Mess

59、age,并且等待收到“回復序列號”與該Message相同的Message。一旦收到,那么它會將兩個Message通過先前指定的MessageReceiveHandler向外部組件匯報。如果長時間收不到,則發(fā)出超時消息給該MessageReceiveHandler。</p><p>  異步API需要維護Message的序列號。一般而言,異步API會自動按順序增加自己所發(fā)送的Message的序列號。</p&g

60、t;<p>  如果上層需要針對某個收到的Message作出回復,則在調(diào)用異步API發(fā)送回復Message時,需要指定該回復Message是對哪個已經(jīng)收到的Message的回復,異步API據(jù)此維護回復Message的“回復序列號”,即將回復Message的回復序列號設定為收到的Message的序列號。</p><p>  當異步傳輸API接收到Message時,為了尋找合適的接收者,它將:</

61、p><p>  1. 依據(jù)“回復序列號”查找注冊的Message,據(jù)此查到ResponseReceiver,傳遞Message;</p><p>  2. 依據(jù)Message的類型,查找注冊的MessageReceiver列表,傳遞Message;</p><p>  3. 依據(jù)Message的類型,查找注冊的MessageSniffer列表,傳遞Message。<

62、;/p><p>  無法確定Message的接收者時,丟棄該Message。</p><p>  Pad鍵盤端如果在大量數(shù)據(jù)突發(fā)時發(fā)送速率過快,可能:</p><p>  對藍牙造成壓力,導致數(shù)據(jù)丟失;</p><p>  對服務器造成壓力,導致響應變慢。</p><p>  因此,我們需要在Pad鍵盤端建立流控機制,抹平

63、突發(fā)的數(shù)據(jù)流。</p><p>  Zc-connector-base包中的FlowControlledXmitter和CreditBasedFlowController建立了一種基于漏桶的流控機制:</p><p>  每隔一定時間FlowController產(chǎn)生一個Credit;</p><p>  FlowController維護一個Credit隊列,存儲產(chǎn)生

64、的Credit;</p><p>  Xmitter需要發(fā)送數(shù)據(jù)時,需要先向FlowController申請一個Credit,即獲得允許;</p><p>  如果FlowController的允許Xmitter發(fā)送(即Credit隊列不為空),那么Xmitter將立即將數(shù)據(jù)發(fā)送出去,并且消耗這一個Credit(即FlowController丟棄一個Credit);</p>

65、<p>  如果FlowController不允許Xmitter發(fā)送(即Credit隊列為空),那么Xmitter將數(shù)據(jù)緩存起來,等待FlowController通知其發(fā)送數(shù)據(jù);</p><p>  FlowController的Credit隊列中每次添加第一個Credit時(即隊列本來為空,時間間隔到了時產(chǎn)生了一個新的Credit),會觸發(fā)“允許發(fā)送”事件,這個事件將通知Xmitter啟動數(shù)據(jù)發(fā)送流程

66、。</p><p>  所有的服務層都提供:</p><p>  1. 保存自身的狀態(tài),并且提供對狀態(tài)的查詢;</p><p><b>  2. 服務動作;</b></p><p><b>  3. 通知。</b></p><p>  Pad需要向服務器證實自己的合法性,并且

67、依據(jù)自己的身份獲得相應的數(shù)據(jù)信息。</p><p>  認證的目標應該是服務器端的連接端子,即服務器要附加一個賬號信息到服務器端的一個連接上,通過該連接發(fā)起的其它請求都具有該賬號所具有的權(quán)限。</p><p>  登陸/認證/授權(quán)機制在連接建立后開始啟動。當Pad無法確定自己的身份時,它會彈出一個事件,要求用戶輸入賬號和密碼。登陸成功后,Pad下次啟動時自動會使用原有的賬號信息??梢栽赑a

68、d的設置欄中清除記錄的賬號信息。</p><p><b>  認證授權(quán)服務提供:</b></p><p>  1. 對Pad鍵盤的認證,即login函數(shù);包括一個autoLogin函數(shù),用于自動登錄;</p><p>  2.認證完成/認證超時事件通知;</p><p>  3. 對當前登陸狀態(tài)的查詢服務,即認證授權(quán)服務

69、的狀態(tài)查詢,狀態(tài)包括服務器端臨時分配的Keyboard信息。</p><p>  如果登錄失敗,則進不去主界面。</p><p>  實際上,Pad登錄的主要目的是向服務器請求一個具有對應權(quán)限的臨時Keyboard。服務器端的KeyboardUser對象(即存儲Pad用戶信息的類)附加有一個Keyboard對象,該Keyboard對象具有已經(jīng)定義好的設備權(quán)限。</p><

70、;p>  當多個Pad使用同一個用戶名和密碼登陸時,服務器將為每個Pad分配一個具有同樣權(quán)限的臨時Keyboard。在服務器端,采用Clone模式實現(xiàn):每次接納一個Pad,則克隆一個對應的KeyboardUser.keyboard,并且為它分配一個新的keybaord.no,同時注冊到系統(tǒng)的數(shù)據(jù)服務和設備權(quán)限管理服務中,使得它可以像普通的鍵盤一樣被系統(tǒng)其它部分接納。</p><p>  數(shù)據(jù)服務向上層提供對

71、本地數(shù)據(jù)庫的CRUD的操作,尤其是對同步自服務器的數(shù)據(jù)進行查詢服務:</p><p>  1. 提供對本地數(shù)據(jù)庫的CRUD接口;</p><p>  2. 提供本地數(shù)據(jù)庫更新事件通知;</p><p>  3. 提供對本地數(shù)據(jù)狀態(tài)(包括版本)的查詢操作。</p><p>  KeyPress傳輸服務顧名思義負責傳輸KeyPress,包括:&l

72、t;/p><p>  1. 對KeyPress編碼,并且通過異步傳輸API將KeyPress發(fā)送到服務器;</p><p>  2. 對KeyPressAck解碼,并且將之廣播給監(jiān)聽者。</p><p>  本地數(shù)據(jù)管理主要是將服務器上的數(shù)據(jù)同步到本地數(shù)據(jù)庫中,供上層應用程序使用。</p><p><b>  a)數(shù)據(jù)同步的內(nèi)容<

73、/b></p><p><b>  包括:</b></p><p>  1. 授權(quán)用戶所能夠切換或控制的Camera、Matrix、Channel和STB信息;</p><p>  2. 系統(tǒng)配置的收藏組信息,例如每個派出所就在一個系統(tǒng)收藏組內(nèi)。</p><p><b>  b)數(shù)據(jù)同步的時機</b

74、></p><p>  服務器將維護系統(tǒng)內(nèi)部數(shù)據(jù)的版本號,如果Pad上的數(shù)據(jù)庫版本號與之不相等,則將觸發(fā)自動數(shù)據(jù)同步:</p><p>  Pad鍵盤使用一個單獨的Meta數(shù)據(jù)庫來存儲一些信息:</p><p>  上次登錄使用的username和password——如果用戶上次選擇了“自動登錄”,那么下次啟動時將使用這些賬號信息自動登錄;</p>

75、<p>  每個賬號都對應一個設備數(shù)據(jù)庫,以及該數(shù)據(jù)庫的數(shù)據(jù)版本號;</p><p>  登陸后,加載該username對應的設備數(shù)據(jù)庫,并更新該數(shù)據(jù)庫。這樣,一個Pad上可以存儲多個賬號的設備數(shù)據(jù)信息,當用戶使用不同的賬號登陸時,不會每次都去重新下載數(shù)據(jù)庫;</p><p>  Pad鍵盤啟動時,認證完成之后,將向服務器詢問最新數(shù)據(jù)版本號;</p><p

76、>  如果版本號低于服務器,則刪除本地已經(jīng)加載的數(shù)據(jù)庫,重新從服務器加載,同時將其信息存入Meta數(shù)據(jù)庫中備用。</p><p><b>  c)對等體</b></p><p>  非對稱體,服務器端的對等體需要實現(xiàn)完全不同的功能。</p><p>  服務器需要依據(jù)Pad鍵盤的認證信息確定發(fā)給Pad鍵盤什么樣的數(shù)據(jù)。</p>

77、<p>  當服務器上的數(shù)據(jù)發(fā)生版本變化時,將主動要求Pad鍵盤更新本地數(shù)據(jù)。</p><p>  服務器發(fā)送數(shù)據(jù)時,數(shù)據(jù)量比較多,因此需要在附加電路板的轉(zhuǎn)發(fā)通道上控制數(shù)據(jù)的完整性,防止數(shù)據(jù)丟失。</p><p><b>  Log服務用于:</b></p><p>  1. 提供記錄本地操作日志的接口;</p>&

78、lt;p>  2. 統(tǒng)計本地日志;</p><p>  3. 向外提供本地日志統(tǒng)計信息。</p><p>  3.3軟件的具體實施方式</p><p>  3.3.1應用系統(tǒng)協(xié)調(diào)器</p><p>  協(xié)調(diào)器包括至少2部分功能:</p><p>  1. 保存和維護應用系統(tǒng)的公共內(nèi)部狀態(tài),該項內(nèi)部狀態(tài)裝載了對整個

79、Pad鍵盤軟件系統(tǒng)的描述,這些狀態(tài)在不同的應用之間共享,至少包括:</p><p>  a. 當前的M、C和CH;</p><p>  2. 協(xié)調(diào)各個應用之間的相互調(diào)用、畫面切換和配合;</p><p>  3. 處理Pad的硬按鍵,配置、回退。</p><p>  目前,系統(tǒng)內(nèi)部狀態(tài)由KeyboardAuthService的內(nèi)部變量Keyb

80、oard代為存儲,在整個系統(tǒng)范圍內(nèi)都可以隨時訪問內(nèi)部狀態(tài)。</p><p><b>  3.3.2登錄界面</b></p><p><b>  圖3.5 登陸界面</b></p><p>  a. 提供類似QQ的登陸界面,其中包括“記住用戶名和密碼”以及“自動登錄”多選框,用戶選定后,將本次本次登陸使用的用戶名和密碼存入數(shù)

81、據(jù)庫中,以便下次自動登錄時使用;</p><p>  b. 如果只選擇“記住用戶名和密碼”,那么在登陸界面,用戶可在username選擇下拉框中選擇使用哪個帳號,而不需要每次都重新輸入;</p><p>  c. 一個Pad上可能有不同的用戶使用不同的賬號登陸,最后一個選擇了“自動登錄”的賬號將自動登錄;</p><p>  d. 對用戶名輸入框的修改會消除密碼框中

82、的內(nèi)容;</p><p>  e. 登陸界面,正在從服務器取數(shù)據(jù)時,顯示“正在從服務器加載用戶數(shù)據(jù)”;</p><p>  f. 登錄界面,如果發(fā)現(xiàn)連接沒有建立,應該使用popup提示框提示用戶,“無法連接到服務器,請稍后再嘗試登錄”。</p><p>  g.登錄界面,點擊“登錄”后,隱藏系統(tǒng)軟鍵盤。</p><p><b>  

83、3.3.3軟鍵盤</b></p><p><b>  圖3.6 鍵盤UI</b></p><p>  1. 每一個按鍵都將觸發(fā)相應的事件,這些事件的處理函數(shù)需要:</p><p>  a. 向認證授權(quán)服務詢問確認Pad鍵盤已經(jīng)登錄并且仍然有效;</p><p>  b. 將按鍵名傳遞給KeyPress傳輸服務

84、,觸發(fā)KeyPress傳輸過程;</p><p>  c. 更新內(nèi)部狀態(tài)。</p><p>  2.F1~F3按鈕用于功能自定義,將為現(xiàn)有的一些功能生成快捷入口,用戶可以通過F1~F3鍵進入這些快捷入口。</p><p><b>  內(nèi)部狀態(tài):</b></p><p>  1. UI顯示的的M、C和CH;</p&g

85、t;<p>  2. 搖桿快慢模式;</p><p><b>  接收的事件包括:</b></p><p>  1. 收到KeyPressAck;</p><p>  2. 收到應用系統(tǒng)公共內(nèi)部狀態(tài)更新通知;</p><p>  3. 畫面切換通知;</p><p>  3.3.4

86、攝像機陣列</p><p>  圖3.7 攝像機陣列</p><p>  1. C+/C-和P+/P-處理方式與軟鍵盤按鍵處理方式相同;</p><p>  2. 攝像機編號按鈕:</p><p>  a. 能夠顯示在這里的攝像機編號都是已經(jīng)經(jīng)過認證的,不需要再進行權(quán)限驗證;</p><p>  b. 點擊時,自動取當

87、前M值,同時從Button的關(guān)聯(lián)數(shù)據(jù)中取出C值,嘗試切換;</p><p>  c. 在嘗試切換過程中,當前的Camera按鈕變成背景淺橘紅色;上一個Camera,即當前正在顯示的Camera按鈕顏色不變;</p><p>  d. 如果切換成功,背景變成橘紅色,上一個Camera變成普通灰色;再次點擊時,出現(xiàn)快捷云臺控制面板;</p><p>  e. 如果切換失

88、敗,變回普通灰色;</p><p>  f. 長按攝像機按鈕,彈出菜單,包括“添加到組”,如下圖;</p><p>  圖3.8 攝像機陣列添加到組</p><p>  g. 攝像機陣列添加到收藏時,字體變大;</p><p>  h. 添加到組菜單項中包括用戶自定義的組,用戶可選擇一個加入。</p><p>  3.

89、 右側(cè)的快捷過濾按鈕:</p><p>  a. 點擊時,在中上部的快速查找欄中填入相應的數(shù)字,同時過濾攝像機按鈕;</p><p>  b. 點擊高清/標清/全部時,將兩個條件疊加起來過濾;</p><p>  c. 中部快速查找欄右側(cè)的X能夠清空先前輸入的快速過濾條件。</p><p>  4. 攝像機陣列界面上的每個按鈕,除了其編號之外

90、,還需要顯示其他信息,獲得這些信息的方法是:首先嘗試獲得camera.name,如果為空則嘗試獲得camera.location,如果還是為空則嘗試獲得 camera.owner。</p><p>  5. 攝像機陣列界面?zhèn)让妗案咔濉焙汀皹饲濉边^濾按鈕功能。這兩個按鈕所代表的過濾條件和下面的數(shù)字所代表的過濾條件是疊加的,即如果按“高清”和“98”,顯示的是包含98數(shù)字的所有高清攝像機。另外,“高清”和“標清”按鈕

91、按下去之后不會立即彈起來,而是變成橘色,表示該項過濾條件是有效的;再次按下時恢復成黑色,表示該項過濾條件無效。“高清”和“標清”兩個同時只有一個能夠被按下,即當一個被按時,另一個需要馬上彈起來恢復到黑色,并且清除其過濾條件。</p><p>  6. 攝像機陣列頁面,點擊攝像機按鈕向服務器發(fā)送切換消息,如果服務器返回消息表明沒有正確切換(即返回的camera不是剛才點擊的camera),那么清除剛才點擊的攝像機按

92、鈕,高亮顯示返回的camera的那個按鈕。</p><p><b>  內(nèi)部狀態(tài):</b></p><p>  1. UI顯示的的當前的M、C和CH;</p><p>  2. 搖桿快慢模式;</p><p>  3. 目前選中的攝像機按鈕;</p><p>  4. 當前的快速查找欄狀態(tài)——高清

93、/標清/全部,過濾數(shù)字;</p><p>  5. 當前顯示的組或者預案。</p><p><b>  接收的事件包括:</b></p><p>  1. 收到KeyPressAck;</p><p>  2. 收到應用系統(tǒng)公共內(nèi)部狀態(tài)更新通知;</p><p>  3. 畫面切換通知;</

94、p><p><b>  3.3.5 收藏組</b></p><p><b>  收藏組分為兩類:</b></p><p>  1. CameraGroup,是一個Camera集;</p><p>  2. ChannelGroup,是一個Channel集。</p><p>  同

95、時,收藏組的來源也分為兩部分:</p><p>  1. 來自于服務器的賬戶公用的組,其邊框和文字是藍色;</p><p>  2. 用戶自定義的私有的組。</p><p>  當Pad鍵盤加載這收藏組時,需要:</p><p>  1. 從本地數(shù)據(jù)庫中讀取用戶自定義的組;</p><p>  2. 從服務器獲取公用收

96、藏組。</p><p>  公用收藏組并非全部都是公用的,不同賬號能夠訪問的收藏組不一樣,這個權(quán)限設置應當在KeyboardUser即賬號中存儲。</p><p><b>  圖3.9 組陣列</b></p><p>  1. C+/C-和P+/P-處理方式與軟鍵盤按鍵處理方式相同;</p><p><b> 

97、 2. 組按鈕:</b></p><p>  a. 顯示組名和組內(nèi)攝像機的概況;</p><p>  b. 點擊時,切換到攝像機陣列;</p><p>  c. 選中的收藏組,背景橘紅色;</p><p>  d. 長按2秒,彈出組編輯菜單;</p><p>  e. 空的收藏組長按不出現(xiàn)任何修改框;<

98、;/p><p>  f. 系統(tǒng)組為空時,不再顯示在屏幕上。</p><p><b>  3. 組添加按鈕:</b></p><p>  a. 點擊時,彈出空白組添加類型如下圖</p><p><b>  圖3.10 添加組</b></p><p>  b.選擇組添加類型后可根據(jù)所

99、選類型添加攝像機或頻道如下圖</p><p>  圖3.11 組編輯彈出菜單</p><p>  1. UI顯示的的當前的M、C和CH;</p><p>  2. 當前選中的組;</p><p><b>  接收的事件包括:</b></p><p>  1. 收到應用系統(tǒng)公共內(nèi)部狀態(tài)更新通知;&l

100、t;/p><p>  2. 畫面切換通知;</p><p><b>  3.3.6 巡航</b></p><p>  圖3.12 選擇巡航組菜單</p><p>  點擊“巡航”按鈕,跳到組頁面并彈出選擇巡航組提示。</p><p>  點擊要巡航的組,程序自動從組的第一個位置開始巡航,巡航時,會依次

101、切換攝像機畫面。</p><p>  系統(tǒng)默認巡航中每個攝像機畫面停留5s,也可以在設置界面設置攝像機畫面停留時間。</p><p><b>  3.3.7 配置</b></p><p>  圖3.13 設置界面</p><p>  點擊WIFI鏈接模式開關(guān),使用WIFI鏈接系統(tǒng)監(jiān)控服務器實現(xiàn)鍵盤控制功能;</p&

102、gt;<p>  點擊藍牙鏈接模式開關(guān),使用藍牙連接到機頂盒的附加電路板上的藍牙接收模塊,通過藍牙信號轉(zhuǎn)換模塊將請求信號通過網(wǎng)口鏈接到視頻監(jiān)控服務器實現(xiàn)鍵盤控制功能;</p><p>  啟動時,依據(jù)配置信息在ConnectorLayer調(diào)用相應的連接建立函數(shù);</p><p>  當用戶所選的網(wǎng)絡不存在時(wifi沒有接入或者藍牙沒有配對時),跳到系統(tǒng)對應的配置頁面,而不是

103、直接退出。</p><p><b>  結(jié)論</b></p><p>  本系統(tǒng)是一套用于“平安城市”視頻監(jiān)控的綜合調(diào)度平臺,目標是將“平安城市”中所有的視頻矩陣——無論是大型矩陣,還是社區(qū)和單位的小型矩陣——全部統(tǒng)合到一個平臺上使用和管理,使得用戶能夠使用一個鍵盤將城市中任何一臺攝像機的圖像顯示在任何一塊監(jiān)控屏幕上。</p><p>  本產(chǎn)

104、品率先將先進的物聯(lián)網(wǎng)技術(shù)應用于“平安城市”視頻監(jiān)控領(lǐng)域,在國內(nèi)尚屬首創(chuàng)。本系統(tǒng)可以將城市中所有現(xiàn)存的攝像機進行統(tǒng)一使用和管理,使得每一個角落都能被實時監(jiān)控到,在預防、發(fā)現(xiàn)、控制和打擊違法犯罪、提供破案線索、固定違法犯罪證據(jù)等方面發(fā)揮著人防、物防所不可替代的重要作用,真正實現(xiàn)“平安城市”。</p><p>  它不僅可以滿足治安管理,城市管理,應急指揮等的需求,而且還能兼顧災難事故與交警,安全生產(chǎn)監(jiān)控,環(huán)境等方面對

105、視頻圖像的需求,對于提升城市可視化管理水平和政府應急處置能力,建立社會治安防控體系具有十分重大的意義。</p><p><b>  參考文獻</b></p><p>  [1] 陳靜,《移動辦公與管理》,第一版,對外經(jīng)貿(mào)大學出版社,2012-04出版;</p><p>  [2]羅振候王浩棟,《輕松實現(xiàn)移動辦公》,第一版,上海科學普及出版社,

106、2009.01.01;</p><p>  [3]Lauren Darcey,Shane Conder,《Android移動應用開發(fā)》,第三版卷Ⅱ,人民郵電出版社2012-10出版;</p><p>  [4]李寧,《Android開發(fā)完全講義,第二版,水利水電出版社,2012-04-01出版;</p><p>  [5]鄧凡平,《深入理解Android》,第一版卷

107、Ⅰ,機械工業(yè)出版社,2011-09-01出版;</p><p>  [6]牛溫佳,《移動網(wǎng)絡視頻監(jiān)控系統(tǒng)》,第一版,電子工業(yè)出版社,2013-01-01出版;</p><p>  [7]雷玉堂,《安防視頻監(jiān)控實用技術(shù)》,第一版,電子工業(yè)出版社,2012-01-01出版;</p><p><b>  致謝</b></p><p

108、>  歷時將近兩個月的時間終于將這篇論文寫完,在論文的寫作過程中遇到了無數(shù)的困難和障礙,都在同學和老師的幫助下度過了。尤其要強烈感謝我的論文指導老師—王克儉老師,她對我進行了無私的指導和幫助,不厭其煩的幫助進行論文的修改和改進。另外,在北京澤創(chuàng)天地技術(shù)有限公司實習期間,各位同事也給了我很多方面的支持與幫助。在此向幫助和指導過我的各位老師及同事表示最衷心的感謝! 感謝這篇論文所涉及到的各位學者。本文引用了數(shù)位學者的研究文獻,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論