版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> 寵物店管理系統(tǒng)的設(shè)計與實現(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)度平臺,目標(biāo)是將“平安城市”中所有的視頻矩陣——無論是大型矩陣,還是社區(qū)和單位的小型矩陣——全部統(tǒng)合到一個平臺上使用和管理,使得用戶能夠使用一個鍵盤將城市中任何一臺攝像機的圖像顯示在任何一塊監(jiān)控屏幕上。</p><p> 本系統(tǒng)率先將先進的物聯(lián)網(wǎng)技術(shù)應(yīng)用于“平安城市”視頻監(jiān)控領(lǐng)域。通過將城市中所有現(xiàn)存的攝像機進行統(tǒng)一使用和管理,使得每一個角落都能被實時監(jiān)控到,在預(yù)防、發(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)設(shè)計6</b></p><p> 3.1 軟件的整體發(fā)明內(nèi)容6</p><p> 3.2軟件的功能模塊及意外應(yīng)對機制6</p><p> 3.2.1服務(wù)器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應(yīng)用系統(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)度平臺,目標(biāo)是將“平安城市”中所有的視頻矩陣——無論是大型矩陣,還是社區(qū)和單位的小型矩陣——全部統(tǒng)合到一個平臺上使用和管理,使得用戶能夠使用一個鍵盤將城市中任何一臺攝像機的圖像顯示在任何一塊監(jiān)控屏幕
19、上。</p><p> 本產(chǎn)品率先將先進的物聯(lián)網(wǎng)技術(shù)應(yīng)用于“平安城市”視頻監(jiān)控領(lǐng)域,在國內(nèi)尚屬首創(chuàng)。本系統(tǒng)可以將城市中所有現(xiàn)存的攝像機進行統(tǒng)一使用和管理,使得每一個角落都能被實時監(jiān)控到,在預(yù)防、發(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)分為傳輸服務(wù)層、服務(wù)層和應(yīng)用層三個層次。傳輸服務(wù)層用于與服務(wù)器之間傳遞異步消息。服務(wù)層使用底層的異步傳輸服務(wù)和本地數(shù)據(jù)庫操作API,將業(yè)務(wù)邏輯封裝成了KeyPress傳輸服務(wù)、認(rèn)證授權(quán)服務(wù)、數(shù)據(jù)服務(wù)和Log服務(wù),為應(yīng)用層提供服務(wù)API。應(yīng)用層主要包含各項UI,用于捕獲用戶輸入和顯示系統(tǒng)內(nèi)部狀態(tài)。</p><p
21、> 1.2軟件開發(fā)背景技術(shù)</p><p> 1.2.1 可配置的矩陣接入技術(shù)</p><p> 傳統(tǒng)的矩陣接入方案,需要向程序代碼中添加接入矩陣的對應(yīng)的命令解析代碼,這種方案具有以下兩個弊端:</p><p> 可擴展性差。不同品牌的矩陣通常具有不同的通信協(xié)議,與配套的控制鍵盤相對應(yīng)。由于歷史原因,監(jiān)控網(wǎng)絡(luò)中存在著大量不同廠家的矩陣和鍵盤,為了實現(xiàn)這
22、些監(jiān)控網(wǎng)絡(luò)中視頻的調(diào)度,傳統(tǒng)方案中必須包含處理所有通信協(xié)議的程序代碼。當(dāng)新的矩陣或者鍵盤接入網(wǎng)絡(luò)時,就需要在原有代碼中增加所需的處理代碼,修改原有程序,擴展性差。</p><p> 低魯棒性。由于每一次新品牌的矩陣或者鍵盤接入網(wǎng)絡(luò)后,都需要重新修改程序處理代碼,在一個大規(guī)模的監(jiān)控網(wǎng)絡(luò)中,這種修改為程序的安全運行帶來了極大的風(fēng)險,在某些情況下,很可能造成核心程序運行錯誤,系統(tǒng)無法正常工作。</p>
23、<p> 可配置的矩陣接入技術(shù),將軟件系統(tǒng)的擴展接口留在了矩陣端。當(dāng)新矩陣接入監(jiān)控系統(tǒng)的時候,通過添加新矩陣對應(yīng)的配置文件,極大的方便了系統(tǒng)的擴展。</p><p> 統(tǒng)的時候,通過添加新矩陣對應(yī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ā)出的命令必須要正確的路由到目標(biāo)攝像頭。</p><p> 大型監(jiān)控網(wǎng)絡(luò)中,要求每個鍵盤要控制任何目標(biāo)攝像頭,這帶來兩個問題</p><p> 控制鍵盤發(fā)出的命令必須能夠被目標(biāo)攝像頭所在的矩陣正確識別</p><p> 控制鍵盤發(fā)出的命令必須能夠正確路由到目標(biāo)攝像頭所在矩陣</p
25、><p> 多協(xié)議命令路由技術(shù),通過將各種控制鍵盤的命令轉(zhuǎn)換為系統(tǒng)設(shè)定的統(tǒng)一的控制命令集,并且根據(jù)控制命令中目標(biāo)攝像頭所在矩陣,將控制命令傳送至目標(biāo)矩陣。</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> 在鍵盤上確認(rèn)。</b></p><p> 用戶的輸入不僅限于這種模式,鍵盤上的前后切換鍵也可以被用于切換視
28、頻。</p><p> 系統(tǒng)響應(yīng)用戶操作,按照約定的“視頻切換的優(yōu)先級規(guī)則”進行視頻切換;系統(tǒng)通過處理和轉(zhuǎn)發(fā)鍵盤命令到合適的矩陣來完成真正的切換操作。系統(tǒng)將操作的執(zhí)行結(jié)果(包括矩陣的執(zhí)行結(jié)果)返回給鍵盤。</p><p> 2.1.2 控制攝像機</p><p> 操作人員可以通過鍵盤上的搖桿控制當(dāng)前接入的攝像機,包括云臺轉(zhuǎn)動、攝像機變焦、光圈、聚焦調(diào)整。&l
29、t;/p><p> 當(dāng)前接入的攝像機編號為鍵盤最后輸入的攝像機編號,或者為當(dāng)前接入的機頂盒對應(yīng)的攝像機編號。當(dāng)兩者都不存在時,系統(tǒng)對鍵盤返回錯誤碼。</p><p> 操作人員移動搖桿時,鍵盤將發(fā)出一系列命令。系統(tǒng)將對這一系列命令進行處理和響應(yīng)。系統(tǒng)通過處理和轉(zhuǎn)發(fā)鍵盤命令到合適的矩陣完成真正的控制操作。</p><p> 2.1.3 后臺管理</p>
30、<p> 后臺管理功能包括1)系統(tǒng)管理員用戶登陸和密碼修改、2)設(shè)備管理,包括設(shè)備配置信息和狀態(tài)的查看,以及增刪改設(shè)備配置信息。</p><p> 設(shè)備包括攝像機、攝像機矩陣、鍵盤、機頂盒。各設(shè)備的詳細配置字段請參看“數(shù)據(jù)庫設(shè)計”章節(jié)。</p><p> 系統(tǒng)管理員可配置系統(tǒng)中鍵盤與矩陣之間的應(yīng)用層協(xié)議,以支持多種鍵盤。</p><p> 系統(tǒng)管
31、理員通過服務(wù)器提供的Web頁面完成配置工作。</p><p><b> 2.1.4日志系統(tǒng)</b></p><p> 每一次鍵盤操作都應(yīng)該被詳細記錄下來,包括時間戳、原始命令、處理后的命令、鍵盤信息、矩陣信息、攝像機信息、機頂盒信息。</p><p> 每一次登陸和對配置項的增刪改操作都需要被記錄下來,包括時間戳、用戶信息、配置項目名稱、
32、配置項目的原值和新值。</p><p> 系統(tǒng)管理員可以通過服務(wù)器提供的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)控服務(wù)器需要7*24小時在線。</p>
33、;<p><b> 2.2.2實時性</b></p><p> 鍵盤操作應(yīng)該實時得到反饋結(jié)果,因此要求系統(tǒng)能夠快速轉(zhuǎn)發(fā)鍵盤命令,盡量減少延遲。</p><p><b> 2.2.3魯棒性</b></p><p> 操作人員的誤操作應(yīng)該被系統(tǒng)識別并且避免導(dǎo)致錯誤后果。</p><p&
34、gt;<b> 3 系統(tǒng)設(shè)計</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軟件的功能模塊及意外應(yīng)對機制</p><p><b> 3.2.1服務(wù)器</b></p><p> 服務(wù)器端控制程序的主要功能是搭建鍵盤與矩陣之間的信息交互平臺,同時要求可以兼容接入不同類型的鍵盤和矩
36、陣。</p><p> 系統(tǒng)采用Proxy模型為主體架構(gòu),即每個鍵盤和矩陣都通過一個代理(KeyboardProxy和MatrixProxy)實體接入一個統(tǒng)一的信息交換結(jié)構(gòu)(SwitchFabric)。代理實體在軟件上抹平了不同種鍵盤及矩陣的差異;信息交換結(jié)構(gòu)則描述了網(wǎng)絡(luò)的結(jié)構(gòu),實現(xiàn)了鍵盤與矩陣間的信息交換。</p><p> 圖3 – 圖3.1 服務(wù)器端系統(tǒng)模型</p>
37、<p> 從上圖中可以看出,系統(tǒng)模型由三部分構(gòu)成:</p><p> 第一部分:按鍵解碼過程,負責(zé)將收到的字節(jié)流識別為一個一個KeyPress,即一個一個的按鍵動作,然后將這些按鍵動作組合翻譯成一種標(biāo)準(zhǔn)描述。</p><p> 服務(wù)器程序從鍵盤收到的信息是斷續(xù)的字節(jié)流,按鍵解碼過程的第一步是將這些字節(jié)流分割成一個一個有意義的按鍵動作,即KeyPress。</p>
38、;<p> KeyPress指鍵盤的一次按鍵動作,例如“按鍵1被按一次”,對應(yīng)類KeyPress。需要區(qū)分的是,鍵盤上的每一個鍵稱之為Key Code,對應(yīng)類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是服務(wù)器程序內(nèi)部表示用戶的一個完整意圖的結(jié)構(gòu)。它與任何特定類型的鍵盤或特定類型的矩陣都無關(guān),是一套通用的鍵盤與矩陣間的標(biāo)準(zhǔn)協(xié)議。任何一種特定的鍵盤或矩陣都可以將自己的特定協(xié)議映射到這個協(xié)議上來;它也可
40、以轉(zhuǎn)化為任何一種特定鍵盤和矩陣的之間的協(xié)議。</p><p> 按鍵解碼過程第二步就是將一個或者多個KeyPress翻譯成標(biāo)準(zhǔn)結(jié)構(gòu)來表示完整的用戶意圖,即Command。</p><p> 這一部分實際上處理的是“鍵盤輸入什么”,做法是:無論鍵盤輸入什么,都將被翻譯成一種標(biāo)準(zhǔn)格式,即Command。這樣,任何鍵盤都可以被接入系統(tǒng)中,而不影響其它部分。</p><p&
41、gt; 第二部分:內(nèi)部處理過程。用戶意圖在被識別成Command之后,接下來是如何“投遞”用戶意圖的過程。</p><p> 圖3.2 優(yōu)先級規(guī)則判定流程實際上是用戶意圖的“投遞”流程</p><p> 這一部分處理的是“如何將鍵盤的命令送到合適的矩陣和機頂盒”,實際上處理的是系統(tǒng)內(nèi)各組件的連接方式。當(dāng)然,更加復(fù)雜的邏輯也可以在這里實現(xiàn)。</p><p>
42、需要注意的是,由于這一過程處于純粹的Command環(huán)境中,與鍵盤和矩陣的硬件細節(jié)完全隔離開,僅僅需要考慮設(shè)備之間的邏輯連接關(guān)系即可。</p><p> 第三部分:信號重新編碼過程。確定用戶意圖(即Command)的投遞方向之后,需要將Command翻譯成目標(biāo)設(shè)備(即特定類型的矩陣)可接受的信號模式,序列化成字節(jié)流發(fā)送到目標(biāo)設(shè)備。</p><p> 這一部分處理的是“矩陣能接受的命令格式
43、”,做法是:將標(biāo)準(zhǔn)格式翻譯成Matrix要求的特定格式。這樣,任何可控裝置都可以被接入系統(tǒng)中,而不影響其他部分。</p><p> 最后,矩陣返回的ACK信號的處理模型同KeyPress模型是一樣的,只是信號傳遞的方向不同。</p><p> 綜合以上所述,服務(wù)器端的控制程序整體實現(xiàn)如下:</p><p> 圖5 – 圖3.3 服務(wù)器端控制程序的實現(xiàn)</
44、p><p> 圖3.4 服務(wù)器模型:數(shù)據(jù)處理流程</p><p> 連接器確定了Pad如何連接到主控服務(wù)器。目前通過兩種方式:藍牙和Wifi。藍牙方式實際上是連接到附加電路板的藍牙上,附加電路板后面有一個透明通道可以讓Pad和服務(wù)器直接通信,此時Pad就像直接連接到了服務(wù)器上一樣。Wifi方式則是直接通過TCP/IP連接到服務(wù)器上。</p><p> 連接器的主要
45、工作就是將一個字節(jié)流發(fā)送到服務(wù)器的對等連接器上。這些字節(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)的設(shè)計目標(biāo)是:</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)了該基礎(chǔ)結(jié)構(gòu)的編解碼方法;</p><p> 2. Message基類中最重要的方法是setPayload和getPayload方法,子類必須實現(xiàn)這兩個函數(shù),以實現(xiàn)子類本身的解碼和編碼過
49、程——實際上,Message基類在完成自身基礎(chǔ)結(jié)構(gòu)的編解碼之后,將調(diào)用子類的setPayload和getPayload方法來編解碼其自身的payload域。</p><p> 編解碼器用于1)將Message編碼成字節(jié)流,2)從連接器接收到的字節(jié)流中解碼出Message。</p><p><b> 字節(jié)流的格式采用:</b></p><p>
50、; {前導(dǎo)字符} {長度} {序列號} {回復(fù)序列號} {類型} {負載} {校驗碼} {結(jié)尾字符}</p><p> 其中,長度定義為去除前導(dǎo)和結(jié)尾字符之外的byte數(shù)。</p><p> Message包含一個虛的getType和getPayload方法,分別獲得類型和負載的字節(jié)數(shù)組,子類需要實現(xiàn)這兩個函數(shù)。getPayload方法用于對Message子類對象的payload進行
51、編碼。</p><p> 如果異步API沒有設(shè)置Message的序列號,Codec會自動設(shè)置。</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信息從子類注冊表中查找對應(yīng)的Message子類對象;一旦查到,則克隆該對
54、象,作為解碼出的返回對象;如果查不到注冊信息,則直接返回新建的Message對象;</p><p> 3. 在注冊信息中查到Message子類對象之后,MessageCodec的解碼過程將把Message的payload字節(jié)數(shù)組交由該子類對象的setPayload方法來進行進一步的解碼操作。這樣,MessageCodec能夠完全解碼輸入的byte[]:獲得準(zhǔn)確的Message子類對象,同時解碼出Message子
55、類中所有的成員變量。</p><p> Message子類對象的編碼和解碼過程可以使用一個叫做Transmitter的工具類輕松實現(xiàn),該類封裝了對基礎(chǔ)數(shù)據(jù)類型的編碼(transimit)和解碼(parse)操作。這樣,Message子類的編解碼操作實際上變成了在setPayload和getPaylaod函數(shù)中簡單使用Transmitter工具針對每個成員變量的編解碼過程。需要注意的是,編解碼操作必須一一對應(yīng),以
56、保證編解碼的正確性。</p><p> 對等體屬于基礎(chǔ)結(jié)構(gòu),服務(wù)器端的對等體與Pad端的是一樣的。實現(xiàn)方式是:</p><p> 1. 連接器發(fā)現(xiàn)連接斷開時,觸發(fā)連接斷開事件,這個事件將調(diào)用”destroyed”函數(shù);</p><p> 2. 重連機制捕獲這一事件,啟動一個Timer,不斷嘗試重新連到服務(wù)器(藍牙模式下是附加電路板)上;</p>
57、<p> 3. 一旦重新建立了連接,連接器將觸發(fā)連接建立事件;</p><p> 4. 重連機制捕獲這一事件,停止重連Timer。</p><p> 3.2.3異步傳輸API</p><p> 異步傳輸API用于在Pad與服務(wù)器之間異步地傳輸Message——即雙方在發(fā)送Message之后可以直接返回,等待回復(fù)Message或者超時。</p&
58、gt;<p> 通過異步API發(fā)送Message時,它會確定該Message是否需要回復(fù)——當(dāng)Message需要回復(fù)時,它需要指定一個MessageReceiveHandler來等待回復(fù)Message;那么當(dāng)Message指定了自身的MessageReceiveHandler時,我們認(rèn)為該Message是需要回復(fù)的。</p><p> 如果Message需要回復(fù),那么異步API會記錄下該Mess
59、age,并且等待收到“回復(fù)序列號”與該Message相同的Message。一旦收到,那么它會將兩個Message通過先前指定的MessageReceiveHandler向外部組件匯報。如果長時間收不到,則發(fā)出超時消息給該MessageReceiveHandler。</p><p> 異步API需要維護Message的序列號。一般而言,異步API會自動按順序增加自己所發(fā)送的Message的序列號。</p&g
60、t;<p> 如果上層需要針對某個收到的Message作出回復(fù),則在調(diào)用異步API發(fā)送回復(fù)Message時,需要指定該回復(fù)Message是對哪個已經(jīng)收到的Message的回復(fù),異步API據(jù)此維護回復(fù)Message的“回復(fù)序列號”,即將回復(fù)Message的回復(fù)序列號設(shè)定為收到的Message的序列號。</p><p> 當(dāng)異步傳輸API接收到Message時,為了尋找合適的接收者,它將:</
61、p><p> 1. 依據(jù)“回復(fù)序列號”查找注冊的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> 對藍牙造成壓力,導(dǎo)致數(shù)據(jù)丟失;</p><p> 對服務(wù)器造成壓力,導(dǎo)致響應(yīng)變慢。</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> 所有的服務(wù)層都提供:</p><p> 1. 保存自身的狀態(tài),并且提供對狀態(tài)的查詢;</p><p><b> 2. 服務(wù)動作;</b></p><p><b> 3. 通知。</b></p><p> Pad需要向服務(wù)器證實自己的合法性,并且
67、依據(jù)自己的身份獲得相應(yīng)的數(shù)據(jù)信息。</p><p> 認(rèn)證的目標(biāo)應(yīng)該是服務(wù)器端的連接端子,即服務(wù)器要附加一個賬號信息到服務(wù)器端的一個連接上,通過該連接發(fā)起的其它請求都具有該賬號所具有的權(quán)限。</p><p> 登陸/認(rèn)證/授權(quán)機制在連接建立后開始啟動。當(dāng)Pad無法確定自己的身份時,它會彈出一個事件,要求用戶輸入賬號和密碼。登陸成功后,Pad下次啟動時自動會使用原有的賬號信息??梢栽赑a
68、d的設(shè)置欄中清除記錄的賬號信息。</p><p><b> 認(rèn)證授權(quán)服務(wù)提供:</b></p><p> 1. 對Pad鍵盤的認(rèn)證,即login函數(shù);包括一個autoLogin函數(shù),用于自動登錄;</p><p> 2.認(rèn)證完成/認(rèn)證超時事件通知;</p><p> 3. 對當(dāng)前登陸狀態(tài)的查詢服務(wù),即認(rèn)證授權(quán)服務(wù)
69、的狀態(tài)查詢,狀態(tài)包括服務(wù)器端臨時分配的Keyboard信息。</p><p> 如果登錄失敗,則進不去主界面。</p><p> 實際上,Pad登錄的主要目的是向服務(wù)器請求一個具有對應(yīng)權(quán)限的臨時Keyboard。服務(wù)器端的KeyboardUser對象(即存儲Pad用戶信息的類)附加有一個Keyboard對象,該Keyboard對象具有已經(jīng)定義好的設(shè)備權(quán)限。</p><
70、;p> 當(dāng)多個Pad使用同一個用戶名和密碼登陸時,服務(wù)器將為每個Pad分配一個具有同樣權(quán)限的臨時Keyboard。在服務(wù)器端,采用Clone模式實現(xiàn):每次接納一個Pad,則克隆一個對應(yīng)的KeyboardUser.keyboard,并且為它分配一個新的keybaord.no,同時注冊到系統(tǒng)的數(shù)據(jù)服務(wù)和設(shè)備權(quán)限管理服務(wù)中,使得它可以像普通的鍵盤一樣被系統(tǒng)其它部分接納。</p><p> 數(shù)據(jù)服務(wù)向上層提供對
71、本地數(shù)據(jù)庫的CRUD的操作,尤其是對同步自服務(wù)器的數(shù)據(jù)進行查詢服務(wù):</p><p> 1. 提供對本地數(shù)據(jù)庫的CRUD接口;</p><p> 2. 提供本地數(shù)據(jù)庫更新事件通知;</p><p> 3. 提供對本地數(shù)據(jù)狀態(tài)(包括版本)的查詢操作。</p><p> KeyPress傳輸服務(wù)顧名思義負責(zé)傳輸KeyPress,包括:&l
72、t;/p><p> 1. 對KeyPress編碼,并且通過異步傳輸API將KeyPress發(fā)送到服務(wù)器;</p><p> 2. 對KeyPressAck解碼,并且將之廣播給監(jiān)聽者。</p><p> 本地數(shù)據(jù)管理主要是將服務(wù)器上的數(shù)據(jù)同步到本地數(shù)據(jù)庫中,供上層應(yīng)用程序使用。</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> 服務(wù)器將維護系統(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> 每個賬號都對應(yīng)一個設(shè)備數(shù)據(jù)庫,以及該數(shù)據(jù)庫的數(shù)據(jù)版本號;</p><p> 登陸后,加載該username對應(yīng)的設(shè)備數(shù)據(jù)庫,并更新該數(shù)據(jù)庫。這樣,一個Pad上可以存儲多個賬號的設(shè)備數(shù)據(jù)信息,當(dāng)用戶使用不同的賬號登陸時,不會每次都去重新下載數(shù)據(jù)庫;</p><p> Pad鍵盤啟動時,認(rèn)證完成之后,將向服務(wù)器詢問最新數(shù)據(jù)版本號;</p><p
76、> 如果版本號低于服務(wù)器,則刪除本地已經(jīng)加載的數(shù)據(jù)庫,重新從服務(wù)器加載,同時將其信息存入Meta數(shù)據(jù)庫中備用。</p><p><b> c)對等體</b></p><p> 非對稱體,服務(wù)器端的對等體需要實現(xiàn)完全不同的功能。</p><p> 服務(wù)器需要依據(jù)Pad鍵盤的認(rèn)證信息確定發(fā)給Pad鍵盤什么樣的數(shù)據(jù)。</p>
77、<p> 當(dāng)服務(wù)器上的數(shù)據(jù)發(fā)生版本變化時,將主動要求Pad鍵盤更新本地數(shù)據(jù)。</p><p> 服務(wù)器發(fā)送數(shù)據(jù)時,數(shù)據(jù)量比較多,因此需要在附加電路板的轉(zhuǎn)發(fā)通道上控制數(shù)據(jù)的完整性,防止數(shù)據(jù)丟失。</p><p><b> Log服務(wù)用于:</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應(yīng)用系統(tǒng)協(xié)調(diào)器</p><p> 協(xié)調(diào)器包括至少2部分功能:</p><p> 1. 保存和維護應(yīng)用系統(tǒng)的公共內(nèi)部狀態(tài),該項內(nèi)部狀態(tài)裝載了對整個
79、Pad鍵盤軟件系統(tǒng)的描述,這些狀態(tài)在不同的應(yīng)用之間共享,至少包括:</p><p> a. 當(dāng)前的M、C和CH;</p><p> 2. 協(xié)調(diào)各個應(yīng)用之間的相互調(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. 登陸界面,正在從服務(wù)器取數(shù)據(jù)時,顯示“正在從服務(wù)器加載用戶數(shù)據(jù)”;</p><p> f. 登錄界面,如果發(fā)現(xiàn)連接沒有建立,應(yīng)該使用popup提示框提示用戶,“無法連接到服務(wù)器,請稍后再嘗試登錄”。</p><p> g.登錄界面,點擊“登錄”后,隱藏系統(tǒng)軟鍵盤。</p><p><b>
83、3.3.3軟鍵盤</b></p><p><b> 圖3.6 鍵盤UI</b></p><p> 1. 每一個按鍵都將觸發(fā)相應(yīng)的事件,這些事件的處理函數(shù)需要:</p><p> a. 向認(rèn)證授權(quán)服務(wù)詢問確認(rèn)Pad鍵盤已經(jīng)登錄并且仍然有效;</p><p> b. 將按鍵名傳遞給KeyPress傳輸服務(wù)
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. 收到應(yīng)用系統(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)過認(rèn)證的,不需要再進行權(quán)限驗證;</p><p> b. 點擊時,自動取當(dāng)
87、前M值,同時從Button的關(guān)聯(lián)數(shù)據(jù)中取出C值,嘗試切換;</p><p> c. 在嘗試切換過程中,當(dāng)前的Camera按鈕變成背景淺橘紅色;上一個Camera,即當(dāng)前正在顯示的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. 點擊時,在中上部的快速查找欄中填入相應(yīng)的數(shù)字,同時過濾攝像機按鈕;</p><p> b. 點擊高清/標(biāo)清/全部時,將兩個條件疊加起來過濾;</p><p> c. 中部快速查找欄右側(cè)的X能夠清空先前輸入的快速過濾條件。</p><p> 4. 攝像機陣列界面上的每個按鈕,除了其編號之外
90、,還需要顯示其他信息,獲得這些信息的方法是:首先嘗試獲得camera.name,如果為空則嘗試獲得camera.location,如果還是為空則嘗試獲得 camera.owner。</p><p> 5. 攝像機陣列界面?zhèn)让妗案咔濉焙汀皹?biāo)清”過濾按鈕功能。這兩個按鈕所代表的過濾條件和下面的數(shù)字所代表的過濾條件是疊加的,即如果按“高清”和“98”,顯示的是包含98數(shù)字的所有高清攝像機。另外,“高清”和“標(biāo)清”按鈕
91、按下去之后不會立即彈起來,而是變成橘色,表示該項過濾條件是有效的;再次按下時恢復(fù)成黑色,表示該項過濾條件無效?!案咔濉焙汀皹?biāo)清”兩個同時只有一個能夠被按下,即當(dāng)一個被按時,另一個需要馬上彈起來恢復(fù)到黑色,并且清除其過濾條件。</p><p> 6. 攝像機陣列頁面,點擊攝像機按鈕向服務(wù)器發(fā)送切換消息,如果服務(wù)器返回消息表明沒有正確切換(即返回的camera不是剛才點擊的camera),那么清除剛才點擊的攝像機按
92、鈕,高亮顯示返回的camera的那個按鈕。</p><p><b> 內(nèi)部狀態(tài):</b></p><p> 1. UI顯示的的當(dāng)前的M、C和CH;</p><p> 2. 搖桿快慢模式;</p><p> 3. 目前選中的攝像機按鈕;</p><p> 4. 當(dāng)前的快速查找欄狀態(tài)——高清
93、/標(biāo)清/全部,過濾數(shù)字;</p><p> 5. 當(dāng)前顯示的組或者預(yù)案。</p><p><b> 接收的事件包括:</b></p><p> 1. 收到KeyPressAck;</p><p> 2. 收到應(yīng)用系統(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. 來自于服務(wù)器的賬戶公用的組,其邊框和文字是藍色;</p><p> 2. 用戶自定義的私有的組。</p><p> 當(dāng)Pad鍵盤加載這收藏組時,需要:</p><p> 1. 從本地數(shù)據(jù)庫中讀取用戶自定義的組;</p><p> 2. 從服務(wù)器獲取公用收
96、藏組。</p><p> 公用收藏組并非全部都是公用的,不同賬號能夠訪問的收藏組不一樣,這個權(quán)限設(shè)置應(yīng)當(dāng)在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顯示的的當(dāng)前的M、C和CH;</p><p> 2. 當(dāng)前選中的組;</p><p><b> 接收的事件包括:</b></p><p> 1. 收到應(yīng)用系統(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)默認(rèn)巡航中每個攝像機畫面停留5s,也可以在設(shè)置界面設(shè)置攝像機畫面停留時間。</p><p><b> 3.3.7 配置</b></p><p> 圖3.13 設(shè)置界面</p><p> 點擊WIFI鏈接模式開關(guān),使用WIFI鏈接系統(tǒng)監(jiān)控服務(wù)器實現(xiàn)鍵盤控制功能;</p&
102、gt;<p> 點擊藍牙鏈接模式開關(guān),使用藍牙連接到機頂盒的附加電路板上的藍牙接收模塊,通過藍牙信號轉(zhuǎn)換模塊將請求信號通過網(wǎng)口鏈接到視頻監(jiān)控服務(wù)器實現(xiàn)鍵盤控制功能;</p><p> 啟動時,依據(jù)配置信息在ConnectorLayer調(diào)用相應(yīng)的連接建立函數(shù);</p><p> 當(dāng)用戶所選的網(wǎng)絡(luò)不存在時(wifi沒有接入或者藍牙沒有配對時),跳到系統(tǒng)對應(yīng)的配置頁面,而不是
103、直接退出。</p><p><b> 結(jié)論</b></p><p> 本系統(tǒng)是一套用于“平安城市”視頻監(jiān)控的綜合調(diào)度平臺,目標(biāo)是將“平安城市”中所有的視頻矩陣——無論是大型矩陣,還是社區(qū)和單位的小型矩陣——全部統(tǒng)合到一個平臺上使用和管理,使得用戶能夠使用一個鍵盤將城市中任何一臺攝像機的圖像顯示在任何一塊監(jiān)控屏幕上。</p><p> 本產(chǎn)
104、品率先將先進的物聯(lián)網(wǎng)技術(shù)應(yīng)用于“平安城市”視頻監(jiān)控領(lǐng)域,在國內(nèi)尚屬首創(chuàng)。本系統(tǒng)可以將城市中所有現(xiàn)存的攝像機進行統(tǒng)一使用和管理,使得每一個角落都能被實時監(jiān)控到,在預(yù)防、發(fā)現(xiàn)、控制和打擊違法犯罪、提供破案線索、固定違法犯罪證據(jù)等方面發(fā)揮著人防、物防所不可替代的重要作用,真正實現(xiàn)“平安城市”。</p><p> 它不僅可以滿足治安管理,城市管理,應(yīng)急指揮等的需求,而且還能兼顧災(zāi)難事故與交警,安全生產(chǎn)監(jiān)控,環(huán)境等方面對
105、視頻圖像的需求,對于提升城市可視化管理水平和政府應(yīng)急處置能力,建立社會治安防控體系具有十分重大的意義。</p><p><b> 參考文獻</b></p><p> [1] 陳靜,《移動辦公與管理》,第一版,對外經(jīng)貿(mào)大學(xué)出版社,2012-04出版;</p><p> [2]羅振候王浩棟,《輕松實現(xiàn)移動辦公》,第一版,上??茖W(xué)普及出版社,
106、2009.01.01;</p><p> [3]Lauren Darcey,Shane Conder,《Android移動應(yīng)用開發(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)絡(luò)視頻監(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ù)的困難和障礙,都在同學(xué)和老師的幫助下度過了。尤其要強烈感謝我的論文指導(dǎo)老師—王克儉老師,她對我進行了無私的指導(dǎo)和幫助,不厭其煩的幫助進行論文的修改和改進。另外,在北京澤創(chuàng)天地技術(shù)有限公司實習(xí)期間,各位同事也給了我很多方面的支持與幫助。在此向幫助和指導(dǎo)過我的各位老師及同事表示最衷心的感謝! 感謝這篇論文所涉及到的各位學(xué)者。本文引用了數(shù)位學(xué)者的研究文獻,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物店管理系統(tǒng)的設(shè)計與實現(xiàn)-開題報告
- 寵物店管理系統(tǒng)
- 網(wǎng)上寵物店綜合系統(tǒng)開發(fā)【畢業(yè)論文】
- 軟件工程畢業(yè)論文-庫存管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-學(xué)生管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-駕校管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-工程監(jiān)理管理系統(tǒng)的設(shè)計與實現(xiàn)
- 網(wǎng)上寵物店的設(shè)計與實現(xiàn).pdf
- 軟件工程畢業(yè)論文-超市收銀管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-倉庫貨物管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-城市水費管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-商場會員管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-小區(qū)車位管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-智慧大棚-管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-圖書管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-駕校管理系統(tǒng)的設(shè)計與實現(xiàn) 2
- 軟件工程畢業(yè)論文-庫存管理系統(tǒng)(mis)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-黨務(wù)cms系統(tǒng)設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-小區(qū)物業(yè)管理系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-農(nóng)機調(diào)配決策管理系統(tǒng)的設(shè)計與實現(xiàn)
評論
0/150
提交評論