• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      WinCE 5.0操作系統(tǒng)在彎板式計重儀上的應(yīng)用

      2014-04-16 02:21:31熊山山班釗
      中國科技縱橫 2014年3期

      熊山山+班釗

      【摘 要】 彎板式計重儀是一種基于彎板傳感器的動態(tài)計重儀器系統(tǒng),具有精度高、穩(wěn)定性好、堅固耐用、易于維護(hù)等特點(diǎn),大量用于高速軸載檢測和收費(fèi)站低速計重。本文簡單描述彎板式計重儀計重原理與系統(tǒng)硬件組成后,探討了為何選擇WinCE 5.0系統(tǒng)作為計重儀操作系統(tǒng),以及如何在WinCE 5.0下實(shí)現(xiàn)大量采樣數(shù)據(jù)的內(nèi)存存儲。在文章最后,通過總結(jié)彎板式計重儀的特點(diǎn),闡述了WinCE 5.0嵌入式系統(tǒng)的應(yīng)用場景。

      【關(guān)鍵詞】 動態(tài)計重儀 WinCE 文件映射

      1 彎板式計重儀介紹

      動態(tài)計重儀是指車輛不停車通過計重儀后就可以得到車輛重量及相關(guān)信息的儀器系統(tǒng)。目前市場上使用的計重傳感器主要有三大類——稱臺式、石英式及彎板式傳感器。稱臺式傳感器由于響應(yīng)時間長,一般僅適用于車輛低速計重;石英傳感器由于衰減厲害,需要頻繁對其進(jìn)行標(biāo)定,同時,由于材質(zhì)脆,容易損壞;彎板式傳感器具有響應(yīng)迅速、不易衰減、結(jié)實(shí)耐用、易維護(hù)的優(yōu)點(diǎn),在高速計重和低速計重均有良好的應(yīng)用。高速計重指車輛高速行駛過程中(一般30km/h以上)的計重,主要用于公路車輛軸載檢測;低速計重一般定義為速度小于15km/h的車輛計重,主要用于高速公路計重收費(fèi)時的車輛計重。

      彎板式計重儀由多塊彎板式傳感器(低速計重時四塊,高速計重時兩塊或四塊×車道數(shù),如圖1)、橋盒放大器、AD數(shù)據(jù)采集卡、DA卡、嵌入式主機(jī)及相關(guān)輔助配件組成。當(dāng)車輛通過安裝在路面上的彎板傳感器時,彎板式傳感器會將車輪壓力轉(zhuǎn)化為電壓變化,電壓經(jīng)過橋盒放大后送入AD采集卡,計重軟件通過分析一段時間的各個傳感器AD值信息就可以得到車輛通過時的各個輪重及相關(guān)信息,進(jìn)而得到軸重、車重、速度、軸距、車型等信息。由于彎板式傳感器及橋盒放大器中電阻對溫度變化敏感,需要計重軟件通過DA卡輸出電壓控制橋盒調(diào)零。彎板式計重儀原理流程如圖2所示。

      2 主機(jī)硬件結(jié)構(gòu)

      計重儀器系統(tǒng)需要在野外保證長時間運(yùn)行,為了克服溫度變化大、揚(yáng)灰嚴(yán)重等惡劣環(huán)境,必須采用工業(yè)級板卡設(shè)備;同時為了配合無市電供給情況下時,使用風(fēng)能、太陽能低功率發(fā)電設(shè)備供電,應(yīng)當(dāng)選用低功耗板卡。考慮到公路現(xiàn)場重型貨車通過時產(chǎn)生的震動,為了保證板卡連接硬件堅固耐用,我們選擇基于PC104接口的工業(yè)級嵌入式板卡搭建儀器主機(jī)。儀器主板選擇研祥104-1645型工業(yè)計算機(jī)主板,板載500M主頻CPU、512M內(nèi)存,采用2G DOM盤作為存儲設(shè)備;AD采集卡使用中泰公司PM511型AD采集卡,12位數(shù)據(jù)精度,可16路循環(huán)采樣,最大采樣頻率100KHz;DA卡選用中泰PM524型8路DA卡,根據(jù)實(shí)際需要可多塊疊加。

      3 主機(jī)操作系統(tǒng)

      目前市場上主流的嵌入式操作系統(tǒng)有WinCE系統(tǒng)和嵌入式Linux兩大類。WinCE嵌入式操作系統(tǒng)是微軟公司推出的32位嵌入式操作系統(tǒng),相較于微軟桌面操作系統(tǒng)具有系統(tǒng)穩(wěn)定、資源占用小、價格便宜等特點(diǎn)。嵌入式Linux操作系統(tǒng)是一個開源系統(tǒng),可以免費(fèi)使用,但是人機(jī)界面不友好、開發(fā)調(diào)試難度大,維護(hù)成本較高。通過二者對比表(見表1),可以發(fā)現(xiàn),在需要良好人機(jī)交互、對價格敏感度不高的情況下,選用WinCE嵌入式操作系統(tǒng)具有內(nèi)核完善、界面友好、開發(fā)調(diào)試容易、廠商支持多、易于維護(hù)等優(yōu)勢。

      WinCE 5.0是CE系統(tǒng)發(fā)展過程中一個比較重要的階段。CE 5.0相較于之前的CE版本,內(nèi)核結(jié)構(gòu)及內(nèi)存管理模式基本沒有太大的變化,但在CE 5.0之后的CE 6.0,微軟就重新設(shè)計了其內(nèi)核架構(gòu)及內(nèi)存管理。在CE 6.0及后面版本中,內(nèi)存管理由平面模式提升為立體模式,從而實(shí)現(xiàn)了提升進(jìn)程限制和單進(jìn)程虛擬內(nèi)存限制。同時,為提升內(nèi)核安全性,CE 6.0修改了驅(qū)動模式,將驅(qū)動分為用戶態(tài)和內(nèi)核態(tài),使得OEM廠商可以限制第三方驅(qū)動在內(nèi)核態(tài)的運(yùn)行。如此,在CE 6.0系統(tǒng)下,大量外圍設(shè)備如AD采集卡、DA采集卡的添加就必須有主板提供商CE系統(tǒng)的支持,為外圍設(shè)備選型增添了諸多麻煩。考慮到計重儀器系統(tǒng)是面向單一應(yīng)用,CE 5.0操作系統(tǒng)的32個進(jìn)程總數(shù)限制對我們儀器開發(fā)不會造成任何影響,而且,由于CE 5.0成熟時間長,廠商支持多,應(yīng)用成熟,故而WinCE 5.0嵌入式系統(tǒng)用作彎板式計重儀操作系統(tǒng)是一個很好的選擇。

      4 計重軟件內(nèi)存開辟失敗及解決辦法

      開發(fā)計重軟件,尤其是開發(fā)低速計重軟件時,考慮到車輛通過計重儀時間可能過長,需要保存一定量的傳感器原始數(shù)據(jù)。在低速計重中,為了保證計重精度,每個通道的采樣頻率為8096Hz,共4個通道,總采樣頻率為32384Hz;每個采樣點(diǎn)數(shù)據(jù)精度12位,需要2個字節(jié)的short型來保存數(shù)據(jù),這樣每秒鐘的數(shù)據(jù)量為63KB。為了保存15分鐘的原始傳感器信息,需要內(nèi)存空間為15×60×63KB=55MB。但是,當(dāng)直接開辟55MB的內(nèi)存空間時,程序會直接報錯退出,提示空間不夠。而通過查看內(nèi)存使用情況時,發(fā)現(xiàn)還有遠(yuǎn)遠(yuǎn)大于55MB的內(nèi)存空閑。

      通過查找文獻(xiàn)發(fā)現(xiàn),CE 5.0操作系統(tǒng)對虛擬內(nèi)存實(shí)施分片式管理,每個進(jìn)程僅僅只分配了32MB的虛擬內(nèi)存空間,虛擬內(nèi)存分配如圖3所示(圖片從網(wǎng)絡(luò)截?。?2位的CE 5.0系統(tǒng)可以管理4GB的虛擬內(nèi)存,其中高地址2GB部分,也就是地址從0x80000000到0xFFFFFFFF的虛擬內(nèi)存為內(nèi)核占用空間,應(yīng)用程序無法使用。低地址0x00000000到0x7FFFFFFF部分為應(yīng)用程序使用空間。應(yīng)用程序使用部分,一共分為64個分割槽(slot),每個分割槽的大小為32MB,其中slot0為當(dāng)前運(yùn)行進(jìn)程的內(nèi)存空間,slot1到slot32共32個分割槽(512MB虛擬空間)分別供每個進(jìn)程獨(dú)立使用,slot33到slot62這部分虛擬內(nèi)存供所有進(jìn)程公用,slot63保存一些資源信息。在每個分割槽中,進(jìn)程使用虛擬內(nèi)存的方式如圖4所示(圖片從網(wǎng)絡(luò)截取),進(jìn)程內(nèi)存占用從低地址向高地址方向,動態(tài)庫內(nèi)存占用從高地址向低地址方向,當(dāng)從兩個方向的地址分配相遇時,進(jìn)程內(nèi)存便被消耗殆盡,進(jìn)程崩潰。endprint

      為了實(shí)現(xiàn)計重軟件大量采樣數(shù)據(jù)的存儲,計重程序必須實(shí)現(xiàn)大內(nèi)存的分配使用,此時僅僅從進(jìn)程分割槽中32M的內(nèi)存空間中分配顯然是不現(xiàn)實(shí)的,必須要在進(jìn)程分割槽外,也就是公共內(nèi)存區(qū),實(shí)現(xiàn)內(nèi)存分配。通過查找資料,參閱微軟MSDN library,CE 5.0系統(tǒng)提供了一套文件映射API接口以供實(shí)現(xiàn)在公共內(nèi)存區(qū)分配使用內(nèi)存。具體函數(shù)原型如下:

      開辟內(nèi)存空間接口:

      HANDLE CreateFileMapping(

      HANDLE hFile, //開辟文件映射的位置,(HANDLE)INVALID_HANDLE_VALUE表示在內(nèi)存中開辟

      LPSECURITY_ATTRIBUTES lpFileMappingAttributes, //屬性,為NULL

      DWORD flProtect, //文件保護(hù)模式,為讀,寫,可執(zhí)行的組合

      DWORD dwMaximumSizeHigh,//開辟大小的高字節(jié)位

      DWORD dwMaximumSizeLow, //開辟大小的低字節(jié)位

      LPCTSTR lpName //映射對象的字符串表示

      );

      內(nèi)存空間使用接口:

      LPVOID MapViewOfFile(

      HANDLE hFileMappingObject, //使用的映射文件,也就是CreateFileMapping的返回值

      DWORD dwDesiredAccess, //需要的文件使用模式(讀,寫還是可執(zhí)行)

      DWORD dwFileOffsetHigh,//開辟位置偏移量的高字節(jié)位

      DWORD dwFileOffsetLow, //開辟位置偏移量的低字節(jié)位

      DWORD dwNumberOfBytesToMap //開辟空間大小

      );

      內(nèi)存空間釋放接口:

      BOOL UnmapViewOfFile(

      LPCVOID lpBaseAddress //釋放空間的位置

      );

      通過上面的文件映射函數(shù)原型可以發(fā)現(xiàn),公共內(nèi)存空間的開辟和釋放都很簡單,但是如何使用開辟的空間卻略有麻煩,需要知道使用的具體地址,也就是偏移量。為了使用方便,我們將4K個采樣數(shù)據(jù)作為一個采樣塊,整體存儲使用,每次存儲數(shù)據(jù)量為8KB,偏移量為8096。然后記錄下每個采樣塊的序號、大小、首地址(Map View Of File的返回值)等信息以供采樣數(shù)據(jù)的使用與釋放。這樣我們就實(shí)現(xiàn)了大量采樣數(shù)據(jù)在內(nèi)存中的存儲使用,解決了計重軟件內(nèi)存分配失敗問題,從而實(shí)現(xiàn)了基于WinCE 5.0系統(tǒng)的彎板式計重儀軟件開發(fā)。

      5 結(jié)語

      通過WinCE 5.0嵌入式操作系統(tǒng)在彎板式計重儀上的應(yīng)用可以看出,雖然有單進(jìn)程內(nèi)存32MB的限制,但是通過文件映射的方式,可以很容易在公共內(nèi)存區(qū)開辟額外內(nèi)存,同時,只需稍微調(diào)整下數(shù)據(jù)格式就可以很方便的使用該部分內(nèi)存。故而,在面對應(yīng)用單一、價格敏感度不高的應(yīng)用時,選擇WinCE 5.0作為操作系統(tǒng)具有選型方便、廠商支持成熟、系統(tǒng)穩(wěn)定、界面友好、開發(fā)調(diào)試方便等優(yōu)點(diǎn)。

      參考文獻(xiàn):

      [1]賀曙新.車輛動態(tài)稱重技術(shù)的歷史、現(xiàn)狀與展望.中外公路,2004(6):104 - 108.

      [2]桂紅,陶振凱.解決WinCE應(yīng)用程序32MB的限制.沈陽理工大學(xué)學(xué)報,2007,26(3).

      [3]何宗鍵.Windows CE嵌入式系統(tǒng).北京航空航天大學(xué)出版社,2006.endprint

      為了實(shí)現(xiàn)計重軟件大量采樣數(shù)據(jù)的存儲,計重程序必須實(shí)現(xiàn)大內(nèi)存的分配使用,此時僅僅從進(jìn)程分割槽中32M的內(nèi)存空間中分配顯然是不現(xiàn)實(shí)的,必須要在進(jìn)程分割槽外,也就是公共內(nèi)存區(qū),實(shí)現(xiàn)內(nèi)存分配。通過查找資料,參閱微軟MSDN library,CE 5.0系統(tǒng)提供了一套文件映射API接口以供實(shí)現(xiàn)在公共內(nèi)存區(qū)分配使用內(nèi)存。具體函數(shù)原型如下:

      開辟內(nèi)存空間接口:

      HANDLE CreateFileMapping(

      HANDLE hFile, //開辟文件映射的位置,(HANDLE)INVALID_HANDLE_VALUE表示在內(nèi)存中開辟

      LPSECURITY_ATTRIBUTES lpFileMappingAttributes, //屬性,為NULL

      DWORD flProtect, //文件保護(hù)模式,為讀,寫,可執(zhí)行的組合

      DWORD dwMaximumSizeHigh,//開辟大小的高字節(jié)位

      DWORD dwMaximumSizeLow, //開辟大小的低字節(jié)位

      LPCTSTR lpName //映射對象的字符串表示

      );

      內(nèi)存空間使用接口:

      LPVOID MapViewOfFile(

      HANDLE hFileMappingObject, //使用的映射文件,也就是CreateFileMapping的返回值

      DWORD dwDesiredAccess, //需要的文件使用模式(讀,寫還是可執(zhí)行)

      DWORD dwFileOffsetHigh,//開辟位置偏移量的高字節(jié)位

      DWORD dwFileOffsetLow, //開辟位置偏移量的低字節(jié)位

      DWORD dwNumberOfBytesToMap //開辟空間大小

      );

      內(nèi)存空間釋放接口:

      BOOL UnmapViewOfFile(

      LPCVOID lpBaseAddress //釋放空間的位置

      );

      通過上面的文件映射函數(shù)原型可以發(fā)現(xiàn),公共內(nèi)存空間的開辟和釋放都很簡單,但是如何使用開辟的空間卻略有麻煩,需要知道使用的具體地址,也就是偏移量。為了使用方便,我們將4K個采樣數(shù)據(jù)作為一個采樣塊,整體存儲使用,每次存儲數(shù)據(jù)量為8KB,偏移量為8096。然后記錄下每個采樣塊的序號、大小、首地址(Map View Of File的返回值)等信息以供采樣數(shù)據(jù)的使用與釋放。這樣我們就實(shí)現(xiàn)了大量采樣數(shù)據(jù)在內(nèi)存中的存儲使用,解決了計重軟件內(nèi)存分配失敗問題,從而實(shí)現(xiàn)了基于WinCE 5.0系統(tǒng)的彎板式計重儀軟件開發(fā)。

      5 結(jié)語

      通過WinCE 5.0嵌入式操作系統(tǒng)在彎板式計重儀上的應(yīng)用可以看出,雖然有單進(jìn)程內(nèi)存32MB的限制,但是通過文件映射的方式,可以很容易在公共內(nèi)存區(qū)開辟額外內(nèi)存,同時,只需稍微調(diào)整下數(shù)據(jù)格式就可以很方便的使用該部分內(nèi)存。故而,在面對應(yīng)用單一、價格敏感度不高的應(yīng)用時,選擇WinCE 5.0作為操作系統(tǒng)具有選型方便、廠商支持成熟、系統(tǒng)穩(wěn)定、界面友好、開發(fā)調(diào)試方便等優(yōu)點(diǎn)。

      參考文獻(xiàn):

      [1]賀曙新.車輛動態(tài)稱重技術(shù)的歷史、現(xiàn)狀與展望.中外公路,2004(6):104 - 108.

      [2]桂紅,陶振凱.解決WinCE應(yīng)用程序32MB的限制.沈陽理工大學(xué)學(xué)報,2007,26(3).

      [3]何宗鍵.Windows CE嵌入式系統(tǒng).北京航空航天大學(xué)出版社,2006.endprint

      為了實(shí)現(xiàn)計重軟件大量采樣數(shù)據(jù)的存儲,計重程序必須實(shí)現(xiàn)大內(nèi)存的分配使用,此時僅僅從進(jìn)程分割槽中32M的內(nèi)存空間中分配顯然是不現(xiàn)實(shí)的,必須要在進(jìn)程分割槽外,也就是公共內(nèi)存區(qū),實(shí)現(xiàn)內(nèi)存分配。通過查找資料,參閱微軟MSDN library,CE 5.0系統(tǒng)提供了一套文件映射API接口以供實(shí)現(xiàn)在公共內(nèi)存區(qū)分配使用內(nèi)存。具體函數(shù)原型如下:

      開辟內(nèi)存空間接口:

      HANDLE CreateFileMapping(

      HANDLE hFile, //開辟文件映射的位置,(HANDLE)INVALID_HANDLE_VALUE表示在內(nèi)存中開辟

      LPSECURITY_ATTRIBUTES lpFileMappingAttributes, //屬性,為NULL

      DWORD flProtect, //文件保護(hù)模式,為讀,寫,可執(zhí)行的組合

      DWORD dwMaximumSizeHigh,//開辟大小的高字節(jié)位

      DWORD dwMaximumSizeLow, //開辟大小的低字節(jié)位

      LPCTSTR lpName //映射對象的字符串表示

      );

      內(nèi)存空間使用接口:

      LPVOID MapViewOfFile(

      HANDLE hFileMappingObject, //使用的映射文件,也就是CreateFileMapping的返回值

      DWORD dwDesiredAccess, //需要的文件使用模式(讀,寫還是可執(zhí)行)

      DWORD dwFileOffsetHigh,//開辟位置偏移量的高字節(jié)位

      DWORD dwFileOffsetLow, //開辟位置偏移量的低字節(jié)位

      DWORD dwNumberOfBytesToMap //開辟空間大小

      );

      內(nèi)存空間釋放接口:

      BOOL UnmapViewOfFile(

      LPCVOID lpBaseAddress //釋放空間的位置

      );

      通過上面的文件映射函數(shù)原型可以發(fā)現(xiàn),公共內(nèi)存空間的開辟和釋放都很簡單,但是如何使用開辟的空間卻略有麻煩,需要知道使用的具體地址,也就是偏移量。為了使用方便,我們將4K個采樣數(shù)據(jù)作為一個采樣塊,整體存儲使用,每次存儲數(shù)據(jù)量為8KB,偏移量為8096。然后記錄下每個采樣塊的序號、大小、首地址(Map View Of File的返回值)等信息以供采樣數(shù)據(jù)的使用與釋放。這樣我們就實(shí)現(xiàn)了大量采樣數(shù)據(jù)在內(nèi)存中的存儲使用,解決了計重軟件內(nèi)存分配失敗問題,從而實(shí)現(xiàn)了基于WinCE 5.0系統(tǒng)的彎板式計重儀軟件開發(fā)。

      5 結(jié)語

      通過WinCE 5.0嵌入式操作系統(tǒng)在彎板式計重儀上的應(yīng)用可以看出,雖然有單進(jìn)程內(nèi)存32MB的限制,但是通過文件映射的方式,可以很容易在公共內(nèi)存區(qū)開辟額外內(nèi)存,同時,只需稍微調(diào)整下數(shù)據(jù)格式就可以很方便的使用該部分內(nèi)存。故而,在面對應(yīng)用單一、價格敏感度不高的應(yīng)用時,選擇WinCE 5.0作為操作系統(tǒng)具有選型方便、廠商支持成熟、系統(tǒng)穩(wěn)定、界面友好、開發(fā)調(diào)試方便等優(yōu)點(diǎn)。

      參考文獻(xiàn):

      [1]賀曙新.車輛動態(tài)稱重技術(shù)的歷史、現(xiàn)狀與展望.中外公路,2004(6):104 - 108.

      [2]桂紅,陶振凱.解決WinCE應(yīng)用程序32MB的限制.沈陽理工大學(xué)學(xué)報,2007,26(3).

      [3]何宗鍵.Windows CE嵌入式系統(tǒng).北京航空航天大學(xué)出版社,2006.endprint

      中宁县| 修水县| 太白县| 伊春市| 万山特区| 富阳市| 丘北县| 仪征市| 千阳县| 合川市| 洪洞县| 平山县| 本溪市| 贵溪市| 宁蒗| 平乡县| 丰原市| 和龙市| 通海县| 彰化市| 临沭县| 韶关市| 扶沟县| 浦东新区| 樟树市| 厦门市| 寿光市| 萍乡市| 成武县| 岢岚县| 白玉县| 德保县| 文成县| 故城县| 宾阳县| 武邑县| 海林市| 昌平区| 潍坊市| 南乐县| 雷波县|