串口操作之API
来源:互联网 发布:java声明多维数组 编辑:程序博客网 时间:2024/05/20 20:47
串口操作之API
1. CreateFile
功能:
主要用来打开和创建文件,也可以用来打开和创建管道、邮槽、通信服务、设备以及控制台缓冲区。
函数原型:
HANDLE CreateFile(
LPCTSTR lpFileName, // 指向文件名的指针
DWORD dwDesiredAccess, // 访问模式(写/读)
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向安全属性的指针
DWORD dwCreationDisposition, // 如何创建
DWORD dwFlagsAndAttributes, // 文件属性
HANDLE hTemplateFile // 用于复制文件句柄
);
说明:
dwDesiredAccess
GENERIC_READ
允许对设备进行读访问
GENERIC_WRITE
允许对设备进行写访问
0
只允许获取与一个设备有关的信息
dwShareMode
FILE_SHARE_READ
允许对文件进行共享访问
FILE_SHARE_WRITE
允许对文件进行共享访问
0
不共享
dwCreationDisposition
CREATE_NEW
创建文件;如文件存在则会出错
CREATE_ALWAY
创建文件,会改写前一个文件
OPEN_EXISTING
文件必须已经存在
OPEN_ALWAYS
如文件不存在则创建它
TRUNCATE_EXISTING
现有文件缩短为零长度
dwFlagsAndAttributes
FILE_ATTRIBUTE_ARCHIVE
标记归档属性
FILE_ATTRIBUTE_COMPRESSED
将文件标记为已压缩
FILE_ATTRIBUTE_NORMAL
默认属性
FILE_ATTRIBUTE_HIDDEN
隐藏文件或目录
FILE_ATTRIBUTE_READONLY
文件为只读
FILE_ATTRIBUTE_SYSTEM
文件为系统文件
FILE_FLAG_WRITE_THROUGH
系统不得推迟对文件的写操作
FILE_FLAG_OVERLAPPED
允许对文件进行重叠操作
FILE_FLAG_NO_BUFFERING
禁止对文件进行缓冲处理
FILE_FLAG_RANDOM_ACCESS
针对随机访问对文件缓冲进行优化
FILE_FLAG_SEQUENTIAL_SCAN
针对连续访问对文件缓冲进行优化
FILE_FLAG_DELETE_ON_CLOSE
关闭了上一次打开的句柄后,将文件删除
返回文件句柄为INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS
用法举例:
HANDLE hCom;
hCom = CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
NULL);
if(hCom == INVALID_HANDLE_VALUE)
{
MessageBox("打开端口失败。");
}
2. GetCommState
功能:
主要用于获取串行口的当前配置。
函数原型:
BOOL GetCommState(
HANDLE hFile, // 文件句柄
LPDCB lpDCB // 指向设备控制块DCB
);
3. SetCommState
功能:
主要用于设置串行口的配置。
函数原型:
BOOL SetCommState(
HANDLE hFile, // 文件句柄
LPDCB lpDCB // 指向设备控制块DCB
);
用法举例:
HANDLE hCom;
hCom = CreateFile(…);
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 9600;
SetCommState(hCom, &dcb);
4. SetupComm
功能:
主要用于配置串口接收和发送缓冲区。
函数原型:
BOOL SetupComm(
HANDLE hFile, // 文件句柄
DWORD dwInQueue, // 接收缓冲区大小
DWORD dwOutQueue // 发送缓冲区大小
);
5. PurgeComm
功能:
主要用于清空串口接收和发送缓冲区。
函数原型:
BOOL PurgeComm(
HANDLE hFile, // 文件句柄
DWORD dwFlages // 执行的动作
);
说明:
dwFlages
PURGE_TXABORT
中断所有写操作并立即返回,即使写操作还没有完成
PURGE_RXABORT
中断所有读操作并立即返回,即使读操作还没有完成
PURGE_TXCLEAR
清空发送缓冲区
PURGE_RXCLEAR
清空接收缓冲区
6. GetCommTimeouts
功能:
读取TimeOut的值。
函数原型:
BOOL GetCommTimeouts(
HANDLE hFile, // 文件句柄
LPCOMMTIMEOUTS lpCommTimeouts // COMMTIMEOUTS结构指针
);
7. SetCommTimeouts
功能:
设置TimeOut的值。
函数原型:
BOOL SetCommTimeouts(
HANDLE hFile, // 文件句柄
LPCOMMTIMEOUTS lpCommTimeouts // COMMTIMEOUTS结构指针
);
COMMTIMEOUTS结构:
typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout; // 读间隔超时
DWORD ReadTotalTimeoutMultiplier; // 读时间系数
DWORD ReadTotalTimeoutConstant; // 读时间常量
DWORD WriteTotalTimeoutMultiplier;// 写时间系数
DWORD WriteTotalTimeoutConstant; // 写时间常量
}COMMTIMEOUTS,*LPCOMMTIMEOUTS;
COMMTIMEOUTS结构的成员都以毫秒为单位。总超时的计算公式是:
总超时 = 时间系数 × 要求读/写的字符数 + 时间常量
8. GetCommMask
功能:
得到设置的通信事件的掩码。
函数原型:
BOOL GetCommMask(
HANDLE hFile, // 文件句柄
LPDWORD lpEvtMask // 事件掩码
);
9. SetCommMask
功能:
设置想要得到的通信事件的掩码。
函数原型:
BOOL SetCommMask(
HANDLE hFile, // 文件句柄
DWORD dwEvtMask // 事件掩码
);
说明:
可设置的通信事件标志(即SetCommMask()函数所设置的掩码),可以有EV_BREAK、EV_CTS、EV_DSR、 EV_ERR、EV_RING、EV_RLSD、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY。
注:若对端口数据的响应时间要求较严格,可采用事件驱动I/O读写,Windows定义了9种串口通信事件,较常用的有:
EV_RXCHAR: 接收到一个字节,并放入输入缓冲区。
EV_TXEMPTY: 输出缓冲区中的最后一个字符发送出去。
EV_RXFLAG: 接收到事件字符(DCB结构中EvtChar成员),放入输入缓冲区。
10. WaitCommEvent
功能:
等待设定的通讯事件的发生,阻塞方式。
函数原型:
BOOL WaitCommEvent(
HANDLE hFile, // 文件句柄
LPDWORD lpEvtMask, // 事件掩码
LPOVERLAPPED lpOverlapped, //
);
11. ClearCommError
功能:
清除错误情况, 但是实际上它还可以拿来取得目前通讯设备的一些信息.。
函数原型:
BOOL ClearCommError(
HANDLE hFile, // 文件句柄
LPDWORD lpErrors, // 接收时的错误码
LPCOMSTAT lpStat // 通信状态
);
12. ReadFile
功能:
读取串口数据。
函数原型:
BOOL ReadFile(
HANDLE hFile, // 文件句柄
LPVOID lpBuffer, // 读缓冲区
DWORD nNumberOfBytesToRead, // 要求读入的字节数
LPDWORD lpNumberOfBytesRead, // 实际读入的字节数
LPOVERLAPPED lpOverlapped // 指向一个OVERLAPPED结构
); //若返回TRUE则表明操作成功
13. WriteFile
功能:
向串口发送数据。
函数原型:
BOOL WriteFile(
HANDLE hFile, // 文件句柄
LPCVOID lpBuffer, // 写缓冲区
DWORD nNumberOfBytesToWrite, // 要求写入的字节数
LPDWORD lpNumberOfBytesWritten,// 实际写入的字节数
LPOVERLAPPED lpOverlapped // 指向一个OVERLAPPED结构
);
14. CloseHandle
功能:
关闭串口。
函数原型:
BOOL CloseHandle(
HANDLE hObject // 文件句柄
)
- 串口操作之API
- MFC之四WIN32 API串口操作1串口初始化
- api操作串口
- api操作串口
- Chrome API操作串口
- MFC之五WIN32 API串口操作2串口同步方式写
- API串口操作封装类
- MFC WIN32 API 操作串口
- C# 调用API 操作串口
- ARM之串口操作
- VC++串口编程之API
- API串口操作封装类(转)
- C#调用API操作串口(ZT)
- Delphi调用API函数操作串口
- Android 操作串口 (android serial port api)
- 异步重叠操作之串口
- 串口操作之SetCommState小记
- MSP430 - G2553之串口操作
- Code1 将字符串转换为byte数组
- 关于float和double
- 怎么理解JAVA中的多态性
- Code2 将byte数组转换为字符串
- .NET
- 串口操作之API
- strtok使用...
- 在content页中用JS改变Panel属性
- oracle Eterprise Mnager Cnsole 不见了
- (ZZ)discuz上传附件设置
- VC的一些实用技巧和注意事项
- 多方携手MeeGo抢占车载信息市场
- Flex性能优化常用手法总结
- windows自带画图软件