为什么我用
m_hComm = CreateFile("COM3",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
NULL,
0);
后用GetCommState()出错,代码是57
但用
m_hComm = CreateFile("\\\\.\\COM3",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
NULL,
0);
就不会报错,这是为什么?

解决方案 »

  1.   

    h_com=CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 
    NULL); // 重叠方式
    if(h_com==INVALID_HANDLE_VALUE)
    {
    MessageBox("不能打开这个串口或者此串口已被占用!","友好提示",MB_OK|MB_ICONWARNING);
    return;
    }
    确定一下你的串口打开了吗?
      

  2.   

    FILE_FLAG_OVERLAPPED刚开始是用的这个,打开老是失败,后来调试改了下,忘了改过去
    直接用“COM3”可以打开,但是GetCommState()报错,其它设置函数也一样,用"\\\\.\\COM3"就不报错,想知道这是什么原因
    可以确定的是h_com 不等于INVALID_HANDLE_VALUE,我一条条运行下去的
      

  3.   

    \\.\COM3不是表示设备名么 
    单独的COM3不是表示串口设备的吧
      

  4.   

    \\.\COM3不是表示设备名么 
    单独的COM3不是表示串口设备的吧我试过,我用其它设备的时候直接用COM3可以打开,并可以使用
      

  5.   

    CreateFile 打开设备UNC路径是必须的,仅仅COM3 是不够的