999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WinCE 5.0操作系統在彎板式計重儀上的應用

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

熊山山+班釗

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

【關鍵詞】 動態計重儀 WinCE 文件映射

1 彎板式計重儀介紹

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

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

2 主機硬件結構

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

3 主機操作系統

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

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

4 計重軟件內存開辟失敗及解決辦法

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

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

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

開辟內存空間接口:

HANDLE CreateFileMapping(

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

LPSECURITY_ATTRIBUTES lpFileMappingAttributes, //屬性,為NULL

DWORD flProtect, //文件保護模式,為讀,寫,可執行的組合

DWORD dwMaximumSizeHigh,//開辟大小的高字節位

DWORD dwMaximumSizeLow, //開辟大小的低字節位

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

);

內存空間使用接口:

LPVOID MapViewOfFile(

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

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

DWORD dwFileOffsetHigh,//開辟位置偏移量的高字節位

DWORD dwFileOffsetLow, //開辟位置偏移量的低字節位

DWORD dwNumberOfBytesToMap //開辟空間大小

);

內存空間釋放接口:

BOOL UnmapViewOfFile(

LPCVOID lpBaseAddress //釋放空間的位置

);

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

5 結語

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

參考文獻:

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

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

[3]何宗鍵.Windows CE嵌入式系統.北京航空航天大學出版社,2006.endprint

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

開辟內存空間接口:

HANDLE CreateFileMapping(

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

LPSECURITY_ATTRIBUTES lpFileMappingAttributes, //屬性,為NULL

DWORD flProtect, //文件保護模式,為讀,寫,可執行的組合

DWORD dwMaximumSizeHigh,//開辟大小的高字節位

DWORD dwMaximumSizeLow, //開辟大小的低字節位

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

);

內存空間使用接口:

LPVOID MapViewOfFile(

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

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

DWORD dwFileOffsetHigh,//開辟位置偏移量的高字節位

DWORD dwFileOffsetLow, //開辟位置偏移量的低字節位

DWORD dwNumberOfBytesToMap //開辟空間大小

);

內存空間釋放接口:

BOOL UnmapViewOfFile(

LPCVOID lpBaseAddress //釋放空間的位置

);

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

5 結語

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

參考文獻:

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

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

[3]何宗鍵.Windows CE嵌入式系統.北京航空航天大學出版社,2006.endprint

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

開辟內存空間接口:

HANDLE CreateFileMapping(

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

LPSECURITY_ATTRIBUTES lpFileMappingAttributes, //屬性,為NULL

DWORD flProtect, //文件保護模式,為讀,寫,可執行的組合

DWORD dwMaximumSizeHigh,//開辟大小的高字節位

DWORD dwMaximumSizeLow, //開辟大小的低字節位

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

);

內存空間使用接口:

LPVOID MapViewOfFile(

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

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

DWORD dwFileOffsetHigh,//開辟位置偏移量的高字節位

DWORD dwFileOffsetLow, //開辟位置偏移量的低字節位

DWORD dwNumberOfBytesToMap //開辟空間大小

);

內存空間釋放接口:

BOOL UnmapViewOfFile(

LPCVOID lpBaseAddress //釋放空間的位置

);

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

5 結語

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

參考文獻:

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

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

[3]何宗鍵.Windows CE嵌入式系統.北京航空航天大學出版社,2006.endprint

主站蜘蛛池模板: 无套av在线| 日韩无码真实干出血视频| 2021国产乱人伦在线播放 | 毛片免费在线视频| 亚洲二三区| 伊人天堂网| 国产亚洲精品无码专| 国产女人在线观看| 成人福利在线观看| 欧美不卡视频一区发布| 2020国产精品视频| 国产三区二区| 91精品国产麻豆国产自产在线| 波多野衣结在线精品二区| 伊人久久大香线蕉影院| 久久77777| 欧洲熟妇精品视频| 国产激情第一页| 在线观看网站国产| 全色黄大色大片免费久久老太| 亚洲高清日韩heyzo| 71pao成人国产永久免费视频| 一区二区三区四区在线| 99精品这里只有精品高清视频| 黄色网在线| 在线欧美日韩| 亚洲精品第五页| 制服丝袜无码每日更新| 亚洲91在线精品| 天堂成人在线| 亚洲国产成人在线| AV天堂资源福利在线观看| 一本大道香蕉中文日本不卡高清二区| 免费毛片在线| 色噜噜在线观看| 亚洲日韩欧美在线观看| 99尹人香蕉国产免费天天拍| 国产成人精品视频一区视频二区| 精品国产Av电影无码久久久| 亚洲天堂日韩av电影| 国产成人AV综合久久| 欧美高清视频一区二区三区| 欧美成人第一页| 四虎成人免费毛片| 青草视频网站在线观看| 亚洲国产亚洲综合在线尤物| 老司机精品99在线播放| 欧美国产精品不卡在线观看| 久久天天躁狠狠躁夜夜躁| 久久综合伊人 六十路| 久久天天躁狠狠躁夜夜躁| 国产香蕉97碰碰视频VA碰碰看| 亚洲国产精品无码AV| 国产精品99在线观看| 91欧美亚洲国产五月天| 91小视频版在线观看www| 午夜无码一区二区三区在线app| 中文字幕va| 亚洲综合精品第一页| 国产91成人| 色综合久久88| 91精品免费高清在线| 色偷偷av男人的天堂不卡| 曰AV在线无码| 免费A级毛片无码无遮挡| 中国国产一级毛片| 国产sm重味一区二区三区| 91香蕉视频下载网站| 国产尤物视频网址导航| 99偷拍视频精品一区二区| 99久久成人国产精品免费| 99在线国产| 综合色区亚洲熟妇在线| 亚洲免费人成影院| 91毛片网| 国产成人一区二区| 欧美高清日韩| 亚洲精品视频免费观看| 欧美69视频在线| 日韩一级二级三级| 国产精品99在线观看| 91精品网站|