一種基于MMS的低成本汽車安防系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.軟件設(shè)計(jì)
本節(jié)將重點(diǎn)介紹圖3中的系統(tǒng)控制流程、 JPEG采集、 MMS制作以及 MMS發(fā)送模塊。由于短信收發(fā)模塊過于簡單,且在許多資料中都有詳細(xì)介紹,本文不再贅述。
3.1 系統(tǒng)控制流程系統(tǒng)控制流程模塊負(fù)責(zé)對其它模塊進(jìn)行調(diào)用,對所有資源進(jìn)行協(xié)調(diào),實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)的工作流程,滿足良好的交互性、穩(wěn)定性。本文引用地址:http://butianyuan.cn/article/197767.htm
首先,系統(tǒng)需要初始化,如獲取用戶終端(手機(jī))號碼, MMS發(fā)送過程所需的MMS網(wǎng)關(guān)、端口、MMS中心地址,這些信息都保存在系統(tǒng)配置文件中,另外還需要初始化一些相關(guān)的數(shù)據(jù)結(jié)構(gòu)。初始化之后系統(tǒng)進(jìn)入到一個超級循環(huán)當(dāng)中,隨時準(zhǔn)備接收來自用戶終端的命令短信息。目前,命令短信息有兩個,其中最重要的是“Get”命令,用以獲取 MMS信息;還有一個“Set”命令用以設(shè)置用戶終端號碼,該命令由于流程圖的尺寸問題在圖 4中省略了。收到“Get”命令之后,系統(tǒng)依次調(diào)用JPEG采集模塊、 MMS制作模塊、GPRS撥號、MMS發(fā)送模塊。這些模塊的調(diào)用,除了MMS制作模塊,都遵循一個基本原則,我們稱之為三次嘗試原則。如果某模塊調(diào)用不成功,將重復(fù)三次,三次都失敗,將發(fā)送錯誤報告短信到用戶終端。比較特殊的是GPRS撥號,在3次撥號失敗后將對GPRS模塊進(jìn)行復(fù)位,再嘗試撥號。該原則符合無線通訊自身的特殊性,可以有效提高程序的效率和穩(wěn)定性。另外有一點(diǎn)需要注意,在 GPRS狀態(tài)下是無法發(fā)送短信的,因此,撥號登陸成功之后需要斷開 GPRS連接才能發(fā)送短信。這也是為什么無論 MMS發(fā)送是否成功,都必須先斷開 GPRS,再發(fā)送報錯或成功報告短信的原因。
3.2 JPEG圖像采集
JPEG圖像采集模塊通過串口控制 C328 JPEG攝像頭直接獲取 JPEG圖像,這種選擇大大降低了處理器的負(fù)擔(dān)。關(guān)于該攝像頭的硬件信息見參考文獻(xiàn) [1]。該軟件模塊大部分為順序過程,后面的過程都建立在前一個過程正確執(zhí)行的基礎(chǔ)上。總體上可以分為三個步驟:初始化 S3C44B0串口、初始化攝像頭、獲取圖像,詳細(xì)過程如下:
1.初始化 S3C44B0串口,包括: O_RDWR | O_NOCTTY | O_NDELAY方式打開 UART1也就是“/dev/ttS1”[2],設(shè)置波特率 57600,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn),讀寫超時設(shè)置為 1秒,初始化 jpeg_picture結(jié)構(gòu)體:
struct jpeg_picture
{
int fd; //串口的文件描述符
unsigned char resolution; // 圖像分辨率代碼
long jpeglength; //圖像長度24位表示
unsigned char *pjpeg; // 圖像存儲地址
};
1 JPEG攝像頭,包括:發(fā)送 SYNC命令與攝像頭建立連接,,發(fā)送 Initial命令設(shè)置輸出 JPEG格式圖像、分辨率 640X480,發(fā)送 Set Package Size命令設(shè)置數(shù)據(jù)包的大小為 512字節(jié)。
2 獲取圖像,包括:發(fā)送 Snapshot命令捕獲圖像快照并壓縮,發(fā)送 Get Picture命令獲取 Snapshot類型圖像,接收 Data命令確認(rèn)數(shù)據(jù)類型為 Snapshot以及圖像數(shù)據(jù)大小,并為圖像分配對應(yīng)空間,之后開始接收數(shù)據(jù)包,每收到一個數(shù)據(jù)包后發(fā)送帶有數(shù)據(jù)包 ID的 ACK命令給攝像頭,直到最后一個數(shù)據(jù)包 ID為 F0F0,數(shù)據(jù)接收過程結(jié)束。
通訊協(xié)議采用一種如圖 4的應(yīng)答方式, ACK代表上一個命令或操作成功,NACK則說明失敗,確保了通訊穩(wěn)定。 C328定義的命令是統(tǒng)一的 6個字節(jié)長度,起始為固定的 0xAA,然后是命令字節(jié),后 4個字節(jié)是與命令相關(guān)的參數(shù)字節(jié)。
3.3 MMS制作
MMS 可以包含靜態(tài)圖像、語音、動態(tài)圖像等多種多媒體信息 [3 4]。圖 5左側(cè)為一個通用 MMS結(jié)構(gòu),由 MMS信息頭、 MMS信息體構(gòu)成。 MMS信息頭包含如何從發(fā)送終端將數(shù)據(jù)發(fā)往接收終端的信息[5]。MMS信息體是 MMS的實(shí)質(zhì)內(nèi)容,可以由多個部分多種類型媒體。本系統(tǒng)中目前僅有 JPEG的圖像數(shù)據(jù),不需要支持所有格式的多媒體信息,因此可以實(shí)現(xiàn)針對多幅 JPEG圖像的簡化版 MMS制作模塊。我們使用了最簡化的 MMS信息頭,包括:消息類型、事務(wù) ID、版本號、From、To等,詳情見表 1。
評論