3G網(wǎng)絡(luò):汽車防盜報警視頻監(jiān)控“新助手”
下面是部分源碼:
程序中涉及的EnterCriticalSection()和LeaveCriticalSection()兩個函數(shù)的作用是保證在臨界區(qū)內(nèi)所有被訪問的資源不被其他線程訪問,直到當(dāng)前線程執(zhí)行完臨界區(qū)代碼。EnterCriticalSection()和LeaveCriticalSection()分別表示為進(jìn)入臨界區(qū)和退出臨界區(qū)。
?。?)CAM_IOControl()
程序設(shè)計中通過CreatFile()函數(shù)調(diào)CAM_Open()打開攝像頭設(shè)備,通過ReadFile()將返回值傳給CAM_IOControl()流接口函數(shù),而CAM_IOControl()則調(diào)用OV51xReadOneFrame()對USB設(shè)備數(shù)據(jù)進(jìn)行讀取。下面是部分源碼:
對于USB總線上的數(shù)據(jù)傳輸,一共有四種傳輸類型,分別是控制傳輸、中斷傳輸、批量傳輸和實(shí)時傳輸,這四種傳輸類型分別應(yīng)用到不同的USB設(shè)備。其中實(shí)時傳輸適用于以固定速率或特定時間內(nèi)傳輸,可以容忍偶爾錯誤的流數(shù)據(jù)情況,對于USB攝像頭這種實(shí)時性要求比較高的設(shè)備一般選用實(shí)時傳輸,所以在CAM_Read()中就需要用到實(shí)時傳輸函數(shù)IssueIsochTransfer()來讀取攝像頭采集的數(shù)據(jù)。如果IssueIsochTransfer()執(zhí)行后返回一個標(biāo)示句柄,則代表執(zhí)行成功,如果無返回值,則表示執(zhí)行失敗。
評論