在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,超过就会出错。而对于修改内核代码,使其加载正常的操作,目前还没发现有问题,暂时就这么放着吧,等哪天莫名的挂掉了再改回来
下一篇:热塑型弹性体主要特征与物理性能
免责声明
- 凡本网注明"来源:智能制造网"的所有作品,版权均属于智能制造网,转载请必须注明智能制造网,https://www.gkzhan.com。违反者本网将追究相关法律责任。
- 企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
- 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
- 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
2025第十一届中国国际机电产品交易会 暨先进制造业博览会
展会城市:合肥市展会时间:2025-09-20