我正在按照这里的教程学习串口通信。
打开和关闭串口的主要代码如下:
HANDLE hComm;
hComm = CreateFileA((LPCSTR)"COM8", //port name
GENERIC_READ | GENERIC_WRITE, //Read/Write
0, // No Sharing
NULL, // No Security
OPEN_EXISTING,// Open existing port only
0, // Non Overlapped I/O // FILE_FLAG_NO_BUFFERING, // copied from the MFC version
NULL); // Null for Comm Devices
if (hComm == INVALID_HANDLE_VALUE){
DWORD err = GetLastError();
printf("Error in opening serial port\n");
printf("err = 0x%x\n", err);
}
else
printf("opening serial port successful\n");
CloseHandle(hComm);//Closing the Serial Port
如果我使用
CreateFile()
,代码可以成功编译,但串口无法打开(会显示“Error in opening serial port”错误信息)。在对代码进行了一番尝试之后,我发现CreateFileA()
可以成功打开串口(而且我能找到这个函数是因为当我谷歌搜索CreateFile()
函数时,我得到的第一个结果是CreateFileA()
的MSDN页面)。我搜索了一下,但并没有找到两者之间的区别。我发现这篇文章说应该始终使用
CreateFile()
,让编译器自行处理,但在我的情况下无效,只有特别使用CreateFileA()
才有效。那么
CreateFile()
和CreateFileA()
之间有什么区别?在我的程序中应该使用哪一个以进行基本的串口通信?Windows 10
Visual Studio 2013 express