📄 d041.bmp.txt
字号:
1)函数声明:
HANDLE CreateFile f
LPCTSTR lpFileName, //文件名“COM1”、“COM2"等
DWORD dwDesiredAccess, /,访问模式读写或同时读写
DWORD dwShareMode, //共享模式,常为0
LPSECURITY_ATTRIBUTES lpSecurityAttributes,/,通常为NULL
DWORD dwCreationDistribution,//iIJ建方式:OPEN EXISTING
DWORD dwFlagsAndAttributes, /,文件属性和标志
HANDLE hTemplateFile //ir~6时文件句柄,常为NULL
);
2)功能:在Win32操作系统中,文件是一个广泛的概念,包含文件、通信设备、命名
管道、邮件槽、磁盘、控制台等,这些都是用CreateFile函数来打开或创建的。
3)返回值:CreateFile函数调用成功后,返回值是一个文件句柄(long),在Windows API
中调用任何通信例程时都使用该值,它与MSComm控件中的CommID属性值是等同的;若
不成功,则返回错误信息INVALID_HANDLE_VELUE.同时设置GetLastError。即使函数成
功,但若文件不存在,且指定了CREATE_ALWAYS或OPEN一ALWAYS,GetLastError也会
设为ERROR_ALREADY_EXSTS。具体参数说明请查阅MSDN。
重叠(OVERLAPPED) I/O操作,就是异步操作或非阻塞操作,即在执行一项操作时,
若系统有别的操作请求,可以立即返回执行其他任务,这样程序就不会类似“死机”一样停
在那里。而NonOverLapped(同步)方式则正好相反,因程序原因应该在于同步方式下如果
有一个通信API函数在操作中,另一个会阻塞(等待)直到上一个操作完成,所以当读数据
的线程停留在WaitCommEven时,写操作WriteFile就停在“原地”等待。因此,如果程序
没有特殊要求,则在调用CreateFile函数打开串口时,一般将操作方式设为使用Overlapped
(异步)方式。
综上,这里给出一个打开串口1(COMl)的程序段,一般的程序均可按此编写。
HANDLE hCom;
DWORD dwError;
hCom=CreateFile f
”COM1”, ,/串口号
GENERIC_READ I GENERIC_WRITE, /,允许读和写
0, ,/独占方式NULL
OPEN_EXISTING, //打开而不是创建
FILE ATTRIBUTE_NORMAL I FILE_FLAG-OVERLAPPED,胆妻叠方式
NULL
);
if(hCom==NVALID_HANDLE_VALUE)
{
wError-GetLastError();,/得到错误信息
||...||处翼崤误
)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -