串口是系统资源,也当作文件一样操作,所以也用CreateFile函数,如果调用成功返回串口句柄,如果失败返回INVALID_HANDLE_VALUE值.函数参数说明如下:
HANDLE WINAPI CreateFile(
__in LPCTSTR lpFileName,//串口名(逻辑端口名),如:”COM1”,”COM2”
__in DWORD dwDesiredAccess,//访问模式,对串口有读/写权限
__in DWORD dwShareMode,//共享模式,有读/写/删除共享,对串口通信只能独占模式
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,//文件安全属性,对串口设置为NULL
__in DWORD dwCreationDisposition,//创建方式,串口通信设置为OPEN_EXISTING
__in DWORD dwFlagsAndAttributes,//文件属性标记,是否异步方式,在些设置
__in_opt HANDLE hTemplateFile);//文件句柄,如果不为NULL,新文件从该够本复制或扩展,如果函数执行成功,返回新的串口句柄.
参数分析:
lpFileName:逻辑串口号,用字符串”COMX”表示,”X”是串口序号,关于电脑中的逻辑串口号,在注册表HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP目录下,包含字符"Serial"或"VCom"项下面的值就是,可以有多个
dwDesiredAccess:是对对串口的访问权限,串口只有读/写(GENERIC_READ/GENERIC_WRITE)权限,可以同时设置成读/写权限,也可以单独只设置读或写权限.
dwShareMode:是共享模式,有读/写/删除共享,对串口通信只能独占模式,即是0.
lpSecurityAttributes:文件安全属性,对串口设置成NULL.
dwCreationDisposition:创建方式,有CREATE_ALWAYS/ CREATE_NEW/ OPEN_EXISTING等方式,但是对串口只能是OPEN_EXISTING,只能打开存在的串口,不像文件一样可创建之类
dwFlagsAndAttributes:文件属性与标志,详细信息查看MSDN,如果想把串口设置成异步方式,那么要设置成FILE_FLAG_OVERLAPPED.
hTemplateFile:文件句柄,新文件从该句柄复制或扩展,如果函数执行成功,返回新的句柄,对串口通信,设置成NULL
以下为代码示例:
HANDLE hCom = CreateFile("COM1", //打开串口1
GENERIC_READ|GENERIC_WRITE, //允许读和写操作
0, //独占方式
NULL,
OPEN_EXISTING, //打开存在的串口,必须是O