VC6.0 打开COM10以上的串口
2013-10-11 11:29
751 查看
转载出处:http://wsyjwps1983.blog.163.com/blog/static/6800900120123179519596/
今天用以前的一个串口程序,发现串口怎么也打不开。因为用的串口不是常
规的COM1、COM2而是大于Com10的端口,想着是很简单的增加几个选项就可以
轻松搞定的,结果加上后测试,发现总是初始化失败,调试发现在CreateFile里总
是失败,找到MSDN一看果然这里有区别。
Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可
用于打开串口,获得串口句柄。使用CreateFile()函数打开串口时文件共享模式应
设置为0(表示独占),创建参数设置为OPEN_EXISTING,模板必须设置为NULL。
如果为COM1至COM9,可使用“COM1”-“COM9”作为文件名传递给CreateFile()
函数,函数可成功返回。但是,如果操作对象为COM10及以上的端口,以此方式命
名文件名调用CreateFile()函数会返回INVALID_HANDLE_VALUE,表示端口无法打开。
产生这种奇怪现象的原因是:微软预定义的标准设备中含有“COM1”-“COM9”。所以
,“COM1”-“COM9”作为文件名传递给函数时操作系统会自动地将之解析为相应的
设备。但对于COM10及以上的串口,“COM10”之类的文件名系统只视之为一般意义
上的文件,而非串行设备。
为了增加对COM10及以上串行端口的支持,微软规定,如果要访问这样的设备,应
使用这样的文件名(以COM10为例):\\.\COM10
所以,对于COM10及以上的串口,CreateFile()的调用样式应调整如下:
CreateFile(
"\\\\.\\COM10", // 定义串口名
fdwAccess, // 存取模式(读写)
0, // 共享模式:必须设置为0,表示设备独占使用
NULL, // 保密性
OPEN_EXISTING, // 必须设置为OPEN_EXISTING
0, // 文件属性,如果是异步模式,可设置为
NULL // 模版,串口设备必须设置为NULL
);
今天用以前的一个串口程序,发现串口怎么也打不开。因为用的串口不是常
规的COM1、COM2而是大于Com10的端口,想着是很简单的增加几个选项就可以
轻松搞定的,结果加上后测试,发现总是初始化失败,调试发现在CreateFile里总
是失败,找到MSDN一看果然这里有区别。
Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可
用于打开串口,获得串口句柄。使用CreateFile()函数打开串口时文件共享模式应
设置为0(表示独占),创建参数设置为OPEN_EXISTING,模板必须设置为NULL。
如果为COM1至COM9,可使用“COM1”-“COM9”作为文件名传递给CreateFile()
函数,函数可成功返回。但是,如果操作对象为COM10及以上的端口,以此方式命
名文件名调用CreateFile()函数会返回INVALID_HANDLE_VALUE,表示端口无法打开。
产生这种奇怪现象的原因是:微软预定义的标准设备中含有“COM1”-“COM9”。所以
,“COM1”-“COM9”作为文件名传递给函数时操作系统会自动地将之解析为相应的
设备。但对于COM10及以上的串口,“COM10”之类的文件名系统只视之为一般意义
上的文件,而非串行设备。
为了增加对COM10及以上串行端口的支持,微软规定,如果要访问这样的设备,应
使用这样的文件名(以COM10为例):\\.\COM10
所以,对于COM10及以上的串口,CreateFile()的调用样式应调整如下:
CreateFile(
"\\\\.\\COM10", // 定义串口名
fdwAccess, // 存取模式(读写)
0, // 共享模式:必须设置为0,表示设备独占使用
NULL, // 保密性
OPEN_EXISTING, // 必须设置为OPEN_EXISTING
0, // 文件属性,如果是异步模式,可设置为
NULL // 模版,串口设备必须设置为NULL
);
相关文章推荐
- Qt打开COM10以上串口
- 用CreateFile打开COM10以上的串口
- 用CreateFile打开COM10以上的串口
- Visual C++打开10以上串口的方法
- Windows打开10及10以上串口
- 如何打开10以上串口
- 10以上串口的打开
- 打开10及以上串口
- Qt使用第三方类打开串口号10以上的失败问题解决方法
- 使用VC6.0 自动识别可用串口 添加至combox 并打开。
- 串口com10以上CreateFile打开成功的方法
- 使用VC6.0 自动识别可用串口 添加至combox 并打开。
- VC6.0 自动识别可用串口 添加至combox 并打开
- 十个以上串口加载问题-用CREATEFILE打开COM10
- wince 6410 串口2 com3口与IRcomm冲突 导致com3只能打开 不能读写的问题
- Windows下串口逻辑端口号大于10无法打开问题
- VC中如何打开Com10及以上的串口
- 较完整的串口类(WINAPI/C++/源码),解决10以上端口,合理结束线程等问题
- 较完整的串口类(WINAPI/C++/源码),解决10以上端口,合理结束线程等问题
- Fedora10下安装xgcom串口调试小助手