本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤具體地說是一種實用性強、嵌入式系統(tǒng)使用多媒體設(shè)備的方法。
背景技術(shù):
智能嵌入式系統(tǒng)(一般指安裝嵌入式操作系統(tǒng)的嵌入式設(shè)備)在工業(yè)控制和日常生活領(lǐng)域應(yīng)用的越來越廣泛,但智能嵌入式系統(tǒng)與多媒體設(shè)備的數(shù)據(jù)交互問題一直都沒有很好的得到解決:由于多媒體設(shè)備廠商很少針對嵌入式系統(tǒng)開發(fā)設(shè)備驅(qū)動程序,而用戶自己開發(fā)針對嵌入式系統(tǒng)的驅(qū)動程序難度和成本又太高,所以人們往往由于找不到合適的驅(qū)動程序而放棄將多媒體設(shè)備連接到嵌入式系統(tǒng)中使用,對數(shù)據(jù)共享造成極大的不便。
由于大多數(shù)嵌入式系統(tǒng)和多媒體設(shè)備都具有usb接口,因此,一種便捷的智能嵌入式系統(tǒng)通過usb接口使用多媒體設(shè)備的方法具有廣泛的市場應(yīng)用價值。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種實用性強、嵌入式系統(tǒng)使用多媒體設(shè)備的方法。
一種嵌入式系統(tǒng)使用多媒體設(shè)備的方法,其實現(xiàn)過程為:通過配置多媒體設(shè)備的系統(tǒng)配置文件以及創(chuàng)建后臺監(jiān)視線程,為用戶提供讀取多媒體設(shè)備存儲數(shù)據(jù)的操作接口,從而實現(xiàn)對多媒體設(shè)備的使用。
所述系統(tǒng)配置文件是指在包括windowsce的嵌入式系統(tǒng)下,多媒體設(shè)備的包括系統(tǒng)注冊表的特定格式文件,該特定格式文件存儲多媒體設(shè)備的配置參數(shù)。
在配置多媒體設(shè)備的系統(tǒng)配置文件時,通過對多媒體設(shè)備的注冊表參數(shù)進行配置,將具有內(nèi)部存儲的多媒體設(shè)備配置為一個塊存儲設(shè)備。
配置多媒體設(shè)備參數(shù)通過在嵌入式系統(tǒng)中,系統(tǒng)自帶的設(shè)備管理器實現(xiàn),該設(shè)備管理器通過查詢系統(tǒng)注冊表中的設(shè)備配置參數(shù)來加載驅(qū)動程序。
所述多媒體設(shè)備是指帶有usb接口的設(shè)備,相對應(yīng)的,配置設(shè)備參數(shù)的過程為:配置參數(shù)在注冊表項[hkey_local_machine\drivers\usb\loadclients…\]下面,每個配置的子鍵格式為group1_id\group2_id\group3_id\drivername,如果注冊表信息與多媒體設(shè)備信息符合,設(shè)備管理器就會加載注冊表中設(shè)置的對應(yīng)驅(qū)動程序;
group1_id代表devicevendorid和deviceproductid,這里的devicevendorid和deviceproductid分別指帶usb接口的多媒體設(shè)備的廠家標(biāo)識id和產(chǎn)品標(biāo)識id,group3_id代表類代碼interfaceclasscode,通過多媒體設(shè)備分析工具獲取多媒體設(shè)備的devicevendorid和deviceproductid,然后將group3_id設(shè)置為0x08_xx_xx,將drivername設(shè)置為mass_storage_class,最后將對應(yīng)驅(qū)動設(shè)置為usbmsc.dll,至此系統(tǒng)將可以使用塊設(shè)備驅(qū)動對多媒體設(shè)備內(nèi)部的存儲單元進行操作。
建立后臺監(jiān)視線程后,采用輪詢方式對多媒體設(shè)備的存儲情況進行實時監(jiān)測和控制,利用文件系統(tǒng)api函數(shù)以及i/o接口函數(shù)讀取多媒體設(shè)備的存儲數(shù)據(jù),避免頻繁使用中斷造成系統(tǒng)資源消耗。
本發(fā)明的一種嵌入式系統(tǒng)使用多媒體設(shè)備的方法,具有以下優(yōu)點:
本發(fā)明的一種嵌入式系統(tǒng)使用多媒體設(shè)備的方法,采用此種數(shù)據(jù)交互方法,不需要安裝專門的驅(qū)動程序,只要對設(shè)備配置參數(shù)進行適當(dāng)配置,以及編寫一個后臺監(jiān)控程序,即可實現(xiàn)嵌入式系統(tǒng)與多媒體設(shè)備的數(shù)據(jù)交互,大大方便了多媒體數(shù)據(jù)共享,降低了在資源緊缺的嵌入式設(shè)備上使用多媒體設(shè)備的門檻,實用性強,適用范圍廣泛,易于推廣。
附圖說明
附圖1為本發(fā)明的實現(xiàn)示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明。
如附圖1所示,一種嵌入式系統(tǒng)使用多媒體設(shè)備的方法,其實現(xiàn)過程為:通過配置多媒體設(shè)備的系統(tǒng)配置文件以及創(chuàng)建后臺監(jiān)視線程,為用戶提供讀取多媒體設(shè)備存儲數(shù)據(jù)的操作接口,從而實現(xiàn)對多媒體設(shè)備的使用。
所述系統(tǒng)配置文件是指在包括windowsce的嵌入式系統(tǒng)下,多媒體設(shè)備的包括系統(tǒng)注冊表的特定格式文件,該特定格式文件存儲多媒體設(shè)備的配置參數(shù)。
在配置多媒體設(shè)備的系統(tǒng)配置文件時,通過對多媒體設(shè)備的注冊表參數(shù)進行配置,將具有內(nèi)部存儲的多媒體設(shè)備配置為一個塊存儲設(shè)備。
配置多媒體設(shè)備參數(shù)通過在嵌入式系統(tǒng)中,系統(tǒng)自帶的設(shè)備管理器實現(xiàn),該設(shè)備管理器通過查詢系統(tǒng)注冊表中的設(shè)備配置參數(shù)來加載驅(qū)動程序。
所述多媒體設(shè)備是指帶有usb接口的設(shè)備,相對應(yīng)的,配置設(shè)備參數(shù)的過程為:配置參數(shù)在注冊表項[hkey_local_machine\drivers\usb\loadclients…\]下面,每個配置的子鍵格式為group1_id\group2_id\group3_id\drivername,如果注冊表信息與多媒體設(shè)備信息符合,設(shè)備管理器就會加載注冊表中設(shè)置的對應(yīng)驅(qū)動程序;
group1_id代表devicevendorid和deviceproductid,這里的devicevendorid和deviceproductid分別指帶usb接口的多媒體設(shè)備的廠家標(biāo)識id和產(chǎn)品標(biāo)識id,group3_id代表類代碼interfaceclasscode,通過多媒體設(shè)備分析工具獲取多媒體設(shè)備的devicevendorid和deviceproductid,然后將group3_id設(shè)置為0x08_xx_xx,將drivername設(shè)置為mass_storage_class,最后將對應(yīng)驅(qū)動設(shè)置為usbmsc.dll,至此系統(tǒng)將可以使用塊設(shè)備驅(qū)動對多媒體設(shè)備內(nèi)部的存儲單元進行操作。
建立后臺監(jiān)視線程后,采用輪詢方式對多媒體設(shè)備的存儲情況進行實時監(jiān)測和控制,利用文件系統(tǒng)api函數(shù)以及i/o接口函數(shù)讀取多媒體設(shè)備的存儲數(shù)據(jù),避免頻繁使用中斷造成系統(tǒng)資源消耗。
下面以在windowsce嵌入式設(shè)備上使用usb攝像機為例,進行詳細說明:通過配置usb攝像機的系統(tǒng)配置文件以及創(chuàng)建后臺監(jiān)視線程,為用戶提供了方便讀取usb攝像機存儲數(shù)據(jù)的操作接口,從而不需要安裝usb攝像機驅(qū)動程序,大大降低了在資源緊缺的嵌入式設(shè)備上使用多媒體設(shè)備的門檻。
在windowsce系統(tǒng)下,外圍設(shè)備的配置文件一般為系統(tǒng)注冊表platform.reg,其他嵌入式系統(tǒng)也采用類似機制如采用特定格式的文件來存儲設(shè)備配置參數(shù)。
多媒體設(shè)備一般都內(nèi)置存儲器用來存儲多媒體數(shù)據(jù),存儲器的形態(tài)可采用不可插拔的板載存儲芯片,也可使用可插拔的移動存儲介質(zhì),本方法在讀取采用板載存儲芯片的多媒體設(shè)備數(shù)據(jù)以及嵌入式系統(tǒng)沒有存儲卡接口的情況下特別有用。
通過合理的配置設(shè)備注冊表表項,將多媒體設(shè)備配置為一個塊存儲設(shè)備,利用文件系統(tǒng)操作接口對塊設(shè)備進行操作,本方法適用于采用usb接口且具有內(nèi)置存儲的多媒體設(shè)備。
通過建立后臺監(jiān)視線程,采用輪詢方式對多媒體設(shè)備的存儲情況進行實時監(jiān)測和控制,避免頻繁使用中斷造成系統(tǒng)資源消耗。
更為具體的步驟如下所述:
步驟1:配置設(shè)備參數(shù):
在windowsce中,設(shè)備管理器通過查詢系統(tǒng)注冊表中的設(shè)備配置參數(shù)來加載驅(qū)動程序。usb設(shè)備的配置參數(shù)在注冊表項[hkey_local_machine\drivers\usb\loadclients…\]下面,每個配置的子鍵格式為group1_id\group2_id\group3_id\drivername,如果注冊表信息與usb設(shè)備信息符合,設(shè)備管理器就會加載注冊表中設(shè)置的對應(yīng)驅(qū)動程序。
group1_id代表devicevendorid和deviceproductid,group3_id代表interfaceclasscode,通過usb接口分析工具獲取多媒體設(shè)備的devicevendorid和deviceproductid,然后將group3_id設(shè)置為0x08_xx_xx,將drivername設(shè)置為mass_storage_class,最后將對應(yīng)驅(qū)動設(shè)置為usbmsc.dll,至此系統(tǒng)將可以使用塊設(shè)備驅(qū)動對usb攝像機內(nèi)部的存儲單元進行操作。示例代碼如下所示:
[hkey_local_machine\drivers\usb\loadclients\1265_8]
[hkey_local_machine\drivers\usb\loadclients\1265_8\default]
[hkey_local_machine\drivers\usb\loadclients\1265_8\default\8_6_80]
[hkey_local_machine\drivers\usb\loadclients\1265_8\default\8_6_80\mass_storage_class]
"dll"="usbmsc.dll"
"prefix"="dsk"。
步驟2:編寫后臺監(jiān)控程序:
在應(yīng)用層建立后臺監(jiān)視線程,采用輪詢方式對多媒體設(shè)備的存儲情況進行實時監(jiān)測和控制,利用文件系統(tǒng)api函數(shù)以及i/o接口函數(shù)讀取usb攝像機的存儲數(shù)據(jù),示例代碼如下所示:
//啟動監(jiān)視攝像機的后臺工作線程
if(m_bbeginworkthread){
m_bbeginworkthread=false;
afxbeginthread((afx_threadproc)watchingcamerathread,null);
}
//監(jiān)控攝像機的后臺線程
uintwatchingcamerathread(lpvoidpparam){
win32_find_datafindfiledata;
while(1)
{
if(findfirstfile(_t("\\harddisk\\dcim\\100jvcso\\*.gif"),&findfiledata)!=invalid_handle_value)
{
cstringfilename=findfiledata.cfilename;
cstringstrsrcfile=_t("\\harddisk\\dcim\\100jvcso\\")+filename;
cstringstrdestfile=m_strpicpath+_t("\\")+filename;
copyfile(strsrcfile,strdestfile,false);
deletefile(strsrcfile);}
sleep(1000);
}}。
整個實現(xiàn)過程只改動和添加了少量代碼,卻起到了“四兩撥千斤”的作用,省去了尋找和開發(fā)多媒體設(shè)備專有驅(qū)動的過程和煩惱,極大提高了工作效率。
上述具體實施方式僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述具體實施方式,任何符合本發(fā)明的一種嵌入式系統(tǒng)使用多媒體設(shè)備的方法的權(quán)利要求書的且任何所述技術(shù)領(lǐng)域的普通技術(shù)人員對其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利保護范圍。