COM端口与开放的CreateFile(..)

COM端口与开放的CreateFile(..)

问题描述:

hCom = CreateFile(
    "COM1", 
    GENERIC_READ | GENERIC_WRITE, 
    0, 
    NULL, 
    OPEN_EXISTING, 
    0, 
    NULL 
); 

我有我的电脑上只有一个COM口,但该函数返回COM1,COM3,COM4,COM5,COM6,COM7除非 “INVALID_HANDLE_VALUE” 的值。这是为什么?COM端口与开放的CreateFile(..)

+0

如果您使用多字节字符支持进行编译,则使用“L”前缀“字符串”文字,就像这个“L”COM1“'。 – alk 2014-09-30 09:04:17

+0

如果我正确地做了这些,你似乎可以打开不存在的串口?奇怪。它在'设备管理器'中说了什么 – 2014-09-30 09:04:25

+0

@alk这是错误的方式。代码使用MBCS。它是在编译Unicode时使用“L”前缀。但是,这显然不是这种情况,因为代码编译。 – 2014-09-30 09:13:23

您正在调用该功能。除非它返回INVALID_HANDLE_VALUE,否则应该有一个可用的端口。请注意,这可能包括USB端口!

另请注意,对于COM端口10及以上版本,您需要使用命令\\.\\COMn(对应于C字符串\\\\.\\COMn(其中n是指定COM端口号的1或2位数))打开它们。见http://support2.microsoft.com/kb/115831

+0

相关:http://*.com/q/11775185/694576 – alk 2014-09-30 09:06:32