在Embedded CE系統開發過程中,一般設備驅動都只加載一次,偶爾有些需要重復加載。但針對串口,由于本身的通用性,藍牙、IC、IrDA、無線Modem、RFID、……等等外設都可能用到串口。主板芯片本身往往自帶有多個物理串口設備。而且,有可能存在多路復用的問題。所以在系統定制過程中,很容易的超過十個串口。
一般注冊表中可以直接串口號,具體就是使用"Index" dword。
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\XXX]
"Index"=dword:a
...
在通常的模式下,如果這樣,在加載的時候會報參數錯誤。經過查證(具體在X:\WINCE600\PRIVATE\WINCEOS\COREOS\DEVICE\DEVCORE\devload.c),在驅動加載的時候,它會先判斷Index是否超過9,如果超過,即判斷為參數錯誤(當初在這折騰了半天,還以為參數真設置錯了)。
重新修改其中的參數,將有關0~9的限制都去掉(不知道會不會死人,呵呵),再次編譯,驅動已經能夠成功加載,注冊表信息能夠查看到對應的Name值已經是COM10:了,但還是沒法打開COM10:。
再次查看有關的論壇,在MSDN->Device File Names中,明確說了CreateFile的三種參數,亦即設備名稱有三種表示方式:
"COMX:",
"\$device\COMX",
"\$bus\PCMCIA_0_0_0"。
其中*種方式只適合從0~9的設備名,亦即COM10:中10超出了設備命名規范,所以用CreateFile打開設備失敗。
使用第二種方式\$device\COM10,作為參數傳遞給CreateFile,成功打開COM口,通訊正常,搞定。
第三種是用在總線驅動上的,暫時沒涉及到,略過,后續補充。
經過整理,主要是在調用方式上,需要注意,正常的COMX:參數,X只從0~9,超過就會出錯。而對于修改內核代碼,使其加載正常的操作,目前還沒發現有問題,暫時就這么放著吧,等哪天莫名的掛掉了再改回來
下一篇:熱塑型彈性體主要特征與物理性能
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
- 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
2025中國鄭州衡器與計量技術設備展覽會
展會城市:鄭州市展會時間:2025-11-07