C++ 在C/C+;中打开与COM端口的连接时出错+;

C++ 在C/C+;中打开与COM端口的连接时出错+;,c++,serial-port,C++,Serial Port,我正在使用Windows 8.1 Pro计算机。好的,我正在尝试打开串行设备的COM端口连接。我的代码如下: #include<stdio.h> #include<windows.h> int main(void) { HANDLE hcomm; char *comPort = "COM6"; hcomm = CreateFile(comPort, GENERIC_READ | GENERIC_WRITE, 0, 0,

我正在使用Windows 8.1 Pro计算机。好的,我正在尝试打开串行设备的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;
     }
}
#包括
#包括
内部主(空)
{
处理hcomm;
char*comPort=“COM6”;
hcomm=CreateFile(comPort,GENERIC_READ | GENERIC_WRITE,0,0,
打开(现有,0,空);
if(hcomm=无效的句柄值)
{
printf(“连接失败…\n”);
}
其他的
printf(“连接成功…”\n);
//返回hcomm;
}
}

但是这个代码对我不起作用。请给我一些建议,我哪里弄错了。

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

如果条件正在将hcomm重新初始化为无效句柄,则您的
。注意在
if
条件下从赋值到比较运算符的更改。请将您的代码更改为以下,并查看它是否解决了您的问题:

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

你说的
不起作用是什么意思?
?感谢Jarod的重播,我真的不明白我在这里哪里出错了..我的语法和程序是正确的。。是Windows的版本问题吗。。??它在那里返回无效的句柄值..顺便说一句,它应该是
const char*comPort=“COM6”是,你是对的。。我也在mingw和vc++编译器上试过这个程序。但运气不好。
CreateFile
作为第一个参数
LPCTSTR lpFileName
LPCTSTR=const char*
const wchar\u t*
根据
\UNICODE
的不同,你是否尝试过使用宽字符,我已经用GetLastError()检查过了,我一直得到0错误代码。Jarod42-我没有足够的声誉对这个问题发表评论,但是我似乎能够在评论中添加评论。@mbaxi:你的第二句话应该是OP的错误:
=
vs
=
。我建议编辑您的答案,以清楚地说明OP的错误,并删除问题部分。