2014-09-19 203 views
0

我正在使用Windows 8.1 Pro计算机。好吧,我试图打开我的串行设备的COM端口连接。我的代码如下:在C/C++中用COM端口打开连接时出错

#include<stdio.h> 
#include<windows.h> 

int main(void) 
{ 
    HANDLE hcomm; 
    char *comPort = "COM6"; 
    hcomm = CreateFile(comPort, GENERIC_READ | GENERIC_WRITE, 0, 0, 
         OPEN_EXISTING, 0, NULL); 
    if(hcomm = INVALID_HANDLE_VALUE) 
    { 
      printf("Connection Failed...\n"); 
    } 
    else 
      printf("Connection Succeded....\n"); 
     //return hcomm; 
    } 
} 

但是这段代码并不适用于我。请给出一些建议,我错了。

+0

你是什么意思“没有工作”? – Jarod42 2014-09-19 07:30:22

+0

谢谢Jarod重播,我真的不明白我在这里得到错误..我的语法和程序是正确的..它是窗口的版本问题..?它返回无效的句柄值.. – user1234 2014-09-19 07:32:55

+0

顺便说一句,它应该是'const char * comPort =“COM6”;' – Jarod42 2014-09-19 07:33:16

回答

0

检查GetLastError()的值。 GetLastError()== 0是成功的。

此外,您的if条件正在将hcomm重新初始化为无效句柄。请注意0​​条件中从分配到比较运算符的更改。请将您的代码更改为下面的内容,看看它是否能解决您的问题:

if(hcomm == INVALID_HANDLE_VALUE) { 
    printf("Handle creation failed with error %d", GetLastError()); 
} 
else { 
    printf("Handle creation successful"); 
} 
+0

是的mbaxi,我用GetLastError()检查它,我一直在得到0错误代码。 – user1234 2014-09-19 07:45:52

+0

Jarod42 - 我没有足够的声望对问题发表评论,但我似乎可以在评论中添加评论。 – mbaxi 2014-09-19 07:53:13

+0

@mbaxi:你的第二句话应该是OP的错误:'='vs'=='。我建议编辑你的答案,清楚说明OP的错误并删除问题部分。 – Jarod42 2014-09-19 17:22:46