CreateFile()、GetCommState()、SetCommState()打开串口失败的原因或许是这个

博主初次在CSDN发帖,如果有什么写的不好的地方请多多见谅!

对于一般新手而言,直接使用CreateFile函数时,通常会出现以下错误:

函数 "char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容

例如:

bool openport(char *portname)//打开串口
{
hComm = CreateFile(portname, //串口号
 //GENERIC_READ | GENERIC_WRITE, //允许读写
0,
0, //通讯设备必须以独占方式打开

0, //无安全属性
OPEN_EXISTING, //通讯设备已存在
  //0, //同步I/O
FILE_FLAG_OVERLAPPED, //异步I/O
0); //通讯设备不能用模板打开
if (hComm == INVALID_HANDLE_VALUE)
{
CloseHandle(hComm);
return FALSE;
}
else
return TRUE;
}

使用VS2015编译时就会提示实参“portname”出现以上错误

如果此时直接使用关键词“L”或者强制类型转换把原为“char *”的实参转换为“LPCWSTR”,那么悲剧就发生了,无论如何都打不开串口,起初我还一直以为是串口的文件名不正确或驱动有问题。到后来才想到这个参数类型,然后去寻找度娘的帮助,按照以下这个百度h 经验ttp://jingyan.baidu.com/article/7c6fb428629c3a80652c907e.html  操作,困扰了博主许久的问题解决了!虽然不明白是什么原因...如果哪位大神路过请给小弟指点指点

你可能感兴趣的:(Windows串口通讯,VS2015串口通信)