1.引言 隨著(zhù)人民生活水平的不斷提高,個(gè)人擁有汽車(chē)變得越來(lái)越普遍。但是,隨之而來(lái)的車(chē)輛頻繁被盜問(wèn)題漸受關(guān)注。傳統的汽車(chē)安防系統以全球衛星定位系統(以下簡(jiǎn)稱(chēng)GPS)為核心,這種技術(shù)最大的優(yōu)勢是可以定位被盜車(chē)輛所處的位置,可以遠程控制車(chē)輛,但是無(wú)法獲取圖像聲音信息不能了解車(chē)輛所處的環(huán)境,無(wú)法有效追捕犯罪嫌疑人。還有一些系統使用GPRS實(shí)時(shí)傳輸圖像數據,這種方案受網(wǎng)絡(luò )帶寬的限制嚴重,圖像質(zhì)量差,對處理器運算能力要求高,系統使用費用高。 針對上述問(wèn)題,我們提出并設計了一種基于多媒體信息服務(wù)(MulTImediaMessageService,以下簡(jiǎn)稱(chēng)MMS)——也就是人們常說(shuō)的“彩信”汽車(chē)安防系統。該系統利用了中國移動(dòng)的MMS業(yè)務(wù)、短消息業(yè)務(wù),無(wú)線(xiàn)網(wǎng)絡(luò )覆蓋面大,使用費用低廉,操控方法簡(jiǎn)單。圖1所示為基于MMS的汽車(chē)安防系統的應用框圖,用戶(hù)在遠程通過(guò)短信控制本系統,系統通過(guò)在車(chē)輛內適當部位安裝的攝像頭、麥克風(fēng)獲得高質(zhì)量的圖像語(yǔ)音信息,制作成MMS,通過(guò)我們專(zhuān)門(mén)針對低成本嵌入式系統研發(fā)的MMS發(fā)送程序將MMS發(fā)送到用戶(hù)的終端,從而使用戶(hù)能更清晰地掌握車(chē)輛內外的狀況。 2.系統結構 我們使用了如圖2所示的硬件框架,本系統以S3C44B0處理器為核心:輔以2MNORFlash存儲引導程序、內核、ROM文件系統;16MNANDFlash承載YAFF文件系統,以彌補NORFlash空間不足無(wú)法容納PPPD、系統應用程序、無(wú)法保存系統配置信息的缺陷;16MSDRAM運行代碼、動(dòng)態(tài)數據交換、RAM文件系統;UART0連接CWT2000GPRS模塊,用于收發(fā)與用戶(hù)交互的短信,發(fā)送MMS到用戶(hù)指定的終端;UART1連接C328JPEG攝像頭可以直接獲取JPEG格式的高分辨率圖像數據。 本系統的軟件基于uCLinux操作系統內核版本2.4.32,圖3展示的是本系統的軟件結構框圖。圖3中,內核空間的MTD、UART驅動(dòng)、TCP/IP、PPP等在編譯內核時(shí)必須選擇支持,PPPD/Chat撥號程序用于通過(guò)GPRS模塊登陸互連網(wǎng)。上述軟件結構框圖中部分模塊在uCLinux分發(fā)版中包含,因此本系統需要實(shí)現JPEG采集、MMS制作、MMS發(fā)送、短信收發(fā)以及系統控制流程模塊。接下來(lái)的章節將介紹各模塊的實(shí)現技術(shù)。 3.軟件設計 本節將重點(diǎn)介紹圖3中的系統控制流程、JPEG采集、MMS制作以及MMS發(fā)送模塊。由于短信收發(fā)模塊過(guò)于簡(jiǎn)單,且在許多資料中都有詳細介紹,本文不再贅述。 3.1系統控制流程 系統控制流程模塊負責對其它模塊進(jìn)行調用,對所有資源進(jìn)行協(xié)調,實(shí)現系統設計的工作流程,滿(mǎn)足良好的交互性、穩定性。 首先,系統需要初始化,如獲取用戶(hù)終端(手機)號碼,MMS發(fā)送過(guò)程所需的MMS網(wǎng)關(guān)、端口、MMS中心地址,這些信息都保存在系統配置文件中,另外還需要初始化一些相關(guān)的數據結構。初始化之后系統進(jìn)入到一個(gè)超級循環(huán)當中,隨時(shí)準備接收來(lái)自用戶(hù)終端的命令短信息。目前,命令短信息有兩個(gè),其中最重要的是“Get”命令,用以獲取MMS信息;還有一個(gè)“Set”命令用以設置用戶(hù)終端號碼,該命令由于流程圖的尺寸問(wèn)題在圖4中省略了。收到“Get”命令之后,系統依次調用JPEG采集模塊、MMS制作模塊、GPRS撥號、MMS發(fā)送模塊。這些模塊的調用,除了MMS制作模塊,都遵循一個(gè)基本原則,我們稱(chēng)之為三次嘗試原則。如果某模塊調用不成功,將重復三次,三次都失敗,將發(fā)送錯誤報告短信到用戶(hù)終端。比較特殊的是GPRS撥號,在3次撥號失敗后將對GPRS模塊進(jìn)行復位,再?lài)L試撥號。該原則符合無(wú)線(xiàn)通訊自身的特殊性,可以有效提高程序的效率和穩定性。另外有一點(diǎn)需要注意,在GPRS狀態(tài)下是無(wú)法發(fā)送短信的,因此,撥號登陸成功之后需要斷開(kāi)GPRS連接才能發(fā)送短信。這也是為什么無(wú)論MMS發(fā)送是否成功,都必須先斷開(kāi)GPRS,再發(fā)送報錯或成功報告短信的原因。 3.2JPEG圖像采集 JPEG圖像采集模塊通過(guò)串口控制C328JPEG攝像頭直接獲取JPEG圖像,這種選擇大大降低了處理器的負擔。關(guān)于該攝像頭的硬件信息見(jiàn)參考文獻。該軟件模塊大部分為順序過(guò)程,后面的過(guò)程都建立在前一個(gè)過(guò)程正確執行的基礎上?傮w上可以分為三個(gè)步驟:初始化S3C44B0串口、初始化攝像頭、獲取圖像,詳細過(guò)程如下: 1.初始化S3C44B0串口,包括:O_RDWR|O_NOCTTY|O_NDELAY方式打開(kāi)UART1也就是“/dev/ttS1”,設置波特率57600,8位數據位,1位停止位,無(wú)奇偶校驗,讀寫(xiě)超時(shí)設置為1秒,初始化jpeg_picture結構體: structjpeg_picture { intfd;//串口的文件描述符 unsignedcharresolution;//圖像分辨率代碼 longjpeglength;//圖像長(cháng)度24位表示 unsignedchar*pjpeg;//圖像存儲地址 }; 1 JPEG攝像頭,包括:發(fā)送SYNC命令與攝像頭建立連接,,發(fā)送IniTIal命令設置輸出JPEG格式圖像、分辨率640X480,發(fā)送SetPackageSize命令設置數據包的大小為512字節。 2 獲取圖像,包括:發(fā)送Snapshot命令捕獲圖像快照并壓縮,發(fā)送GetPicture命令獲取Snapshot類(lèi)型圖像,接收Data命令確認數據類(lèi)型為Snapshot以及圖像數據大小,并為圖像分配對應空間,之后開(kāi)始接收數據包,每收到一個(gè)數據包后發(fā)送帶有數據包ID的ACK命令給攝像頭,直到最后一個(gè)數據包ID為F0F0,數據接收過(guò)程結束。 通訊協(xié)議采用一種如圖4的應答方式,ACK代表上一個(gè)命令或操作成功,NACK則說(shuō)明失敗,確保了通訊穩定。C328定義的命令是統一的6個(gè)字節長(cháng)度,起始為固定的0xAA,然后是命令字節,后4個(gè)字節是與命令相關(guān)的參數字節。 3.3MMS制作 MMS可以包含靜態(tài)圖像、語(yǔ)音、動(dòng)態(tài)圖像等多種多媒體信息[34]。圖5左側為一個(gè)通用MMS結構,由MMS信息頭、MMS信息體構成。MMS信息頭包含如何從發(fā)送終端將數據發(fā)往接收終端的信息。MMS信息體是MMS的實(shí)質(zhì)內容,可以由多個(gè)部分多種類(lèi)型媒體。本系統中目前僅有JPEG的圖像數據,不需要支持所有格式的多媒體信息,因此可以實(shí)現針對多幅JPEG圖像的簡(jiǎn)化版MMS制作模塊。我們使用了最簡(jiǎn)化的MMS信息頭,包括:消息類(lèi)型、事務(wù)ID、版本號、From、To等,詳情見(jiàn)表1。 MMS編碼必須遵循無(wú)線(xiàn)會(huì )話(huà)協(xié)議(WirelessSessionProtocol,以下簡(jiǎn)稱(chēng)WSP)。WSP使用一種與HTTP/1.1相同的語(yǔ)法描述數據的組織結構,具體可參考RFC[2068]。HTTP/1.1使用ASCII字符編碼來(lái)傳輸數據,而WSP為降低傳輸帶寬,將HTTP/1.1中的一些著(zhù)名域對應的字符串定義為一個(gè)字節,并在對這些緊湊格式編碼時(shí)加上0x80,使著(zhù)名域的編碼大于127(擴展ASCII字符),從而將它們與普通ASCII字符區別開(kāi)。因此MMS信息頭的基本編碼格式為:“域編碼”+“內容”,詳情請參考表1。編碼順序如下:消息類(lèi)型、事務(wù)ID、版本號必須依次排在最前面,而MMS信息體內容類(lèi)型則應該排在MMS信息頭的最后。 ①用字符串表示一個(gè)隨機數。②國內格式為:長(cháng)度+“+86”+“11位手機號”+“/TYPE=PLMN.” 緊跟在MMS信息頭之后的就是MMS信息體,圖5中所示這部分有:成員數量、成員(圖像、文本、聲音等)。成員數量是一個(gè)變長(cháng)整形數。MMS信息體的成員由:成員信息頭、成員數據構成。我們的系統中僅有JPEG圖像,所以成員信息頭可以編碼為:0x01,YYYY(JPEG圖像大小,變長(cháng)整數),0x9E。最后將JPEG圖像附在成員信息頭之后即可完成MMS制作。注意,由于圖像的存儲空間為動(dòng)態(tài)分配,之后要將所占內存釋放。 3.4MMS發(fā)送 最后,系統使用了項目組針對嵌入式系統開(kāi)發(fā)的MMS發(fā)送簡(jiǎn)化過(guò)程來(lái)發(fā)送彩信。該簡(jiǎn)化過(guò)程分為三個(gè)步驟:建立連接、發(fā)送數據、斷開(kāi)連接,如圖6所示為發(fā)送數據簡(jiǎn)化過(guò)程的時(shí)序圖。建立連接和斷開(kāi)連接的時(shí)序圖與此類(lèi)似,不在這里給出。在該簡(jiǎn)化過(guò)程的實(shí)現中,使用了一種直接構造PDU進(jìn)行發(fā)送的實(shí)現方法。協(xié)議數據單元(ProtocolDataUnit,以下簡(jiǎn)稱(chēng)PDU)為MMS發(fā)送時(shí)各層所要增加的數據頭,而這些數據頭很多部分都固定。因此,通過(guò)直接發(fā)送PDU的方法,可以避免構造完整無(wú)線(xiàn)應用協(xié)議棧(WAP),擺脫對多線(xiàn)程的依賴(lài),以及無(wú)關(guān)操作所需的存儲消耗,實(shí)現單線(xiàn)程、高效、高速、穩定的MMS發(fā)送。 MMS發(fā)送的網(wǎng)絡(luò )協(xié)議棧關(guān)系的簡(jiǎn)化過(guò)程僅僅需要嵌入式系統提供UDP支持,能連接到GPRS網(wǎng)絡(luò ),即可發(fā)送MMS到終端。 4.結論與展望 本系統目前已經(jīng)通過(guò)了長(cháng)沙、深圳、北京、上海等地的測試。項目充分利用了GPRS網(wǎng)絡(luò )覆蓋廣泛,通訊質(zhì)量穩定的特點(diǎn),提出了一個(gè)簡(jiǎn)單方便的、穩定的、易于擴展的基于MMS的安防系統框架,為提取犯罪嫌疑人的犯罪證據提供了一種新手段。該框架有較廣泛的應用范圍,可以為相關(guān)行業(yè)提供參考。 本文作者創(chuàng )新點(diǎn):結合了短消息操作簡(jiǎn)單、彩信直觀(guān)的特點(diǎn),在低成本ARM7平臺實(shí)現了基于彩信的安防系統;在系統中使用一種直接PDU構造方法實(shí)現了一個(gè)簡(jiǎn)化版的彩信發(fā)送過(guò)程,該過(guò)程實(shí)現簡(jiǎn)單,適合嵌入式系統。 |