【第一周周报】WINCE下串口通讯
2010-01-28 11:21
225 查看
1.WindowsCE使用串口需要有串口驱动程序,一般由BSP实现
2WindowsCE系统中驱动程序分为两种:内建设备驱动和流接口驱动
3.流接口驱动程序是以设备管理器接受控制命令并且通过调用文件系统API处理相关应用程序
串口驱动即为流接口驱动的形式 设备名一般是COMx的形式
串口通讯编程:
1.打开和关闭串口
打开串行端口API函数:
HANDLE WINAPI CreateFile(
LPCTSTR lpFileName, //打开文件名 对串口而言 如TEXT("COM1:")
DWORD dwDesiredAccess, //访问模式( 读,写)
DWORD dwShareMode, //是否共享读写
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //安全属性 一般选择缺省 NULL
DWORD dwCreationDisposition, //对串口已经存在的设备 使用OPEN_EXISTING 表示打开已经存在的文件
DWORD dwFlagsAndAttributes, // 文件标志和属性
HANDLE hTemplateFile
); //模板文件
关闭串行端口API函数
打开串口成功之后会返回一个有效地句柄值,调用CloseHandle函数关闭已经打开的串口
2.读写串行端口
读串口API函数ReadFile:
BOOL WINAPI ReadFile(
举例:
int rc;
DWORD cBytes;
BYTE ch;
rc=ReadFile(hSer, &ch, 1, &cBytes, NULL);
写串口函数 WriteFile:
BOOL WINAPI WriteFile(
HANDLE hFile, //句柄
LPCVOID lpBuffer, //缓冲区指针
DWORD nNumberOfBytesToWrite, //number of bytes to write
LPDWORD lpNumberOfBytesWritten, //pointer to number of bytes written
LPOVERLAPPED lpOverlapped
); //pointer to structure for overlapped IO
举例:
Int rc;
DWORD cBytes;
BYTE ch;
ch = TEXT(‘a’);
rc = WriteFile(hSer, &ch, 1, &cBytes, NULL);
3.配置串行端口
读写操作之前应该正确配置串口工作状态 使用的API函数如下:
BOOL GetCommState(HANDLE hFile, LPDCB lpDCB);
BOOL SetCommState(HANDLE hRle, LPDCB lpDCB);
第一个参数是已经打开的函数的句柄,第二个参数是一个指针,指向DCB结构(查阅MSDN)
4.异步多线程通讯
(未完待续)
2WindowsCE系统中驱动程序分为两种:内建设备驱动和流接口驱动
3.流接口驱动程序是以设备管理器接受控制命令并且通过调用文件系统API处理相关应用程序
串口驱动即为流接口驱动的形式 设备名一般是COMx的形式
串口通讯编程:
1.打开和关闭串口
打开串行端口API函数:
HANDLE WINAPI CreateFile(
LPCTSTR lpFileName, //打开文件名 对串口而言 如TEXT("COM1:")
DWORD dwDesiredAccess, //访问模式( 读,写)
DWORD dwShareMode, //是否共享读写
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //安全属性 一般选择缺省 NULL
DWORD dwCreationDisposition, //对串口已经存在的设备 使用OPEN_EXISTING 表示打开已经存在的文件
DWORD dwFlagsAndAttributes, // 文件标志和属性
HANDLE hTemplateFile
); //模板文件
关闭串行端口API函数
打开串口成功之后会返回一个有效地句柄值,调用CloseHandle函数关闭已经打开的串口
2.读写串行端口
读串口API函数ReadFile:
BOOL WINAPI ReadFile(
HANDLE hFile, //文件句柄 LPVOID lpBuffer, //接受数据的缓冲区的指针 DWORD nNumberOfBytesToRead, //number of bytes to read LPDWORD lpNumberOfBytesRead, //point to number of bytes written LPOVERLAPPED lpOverlapped //pointer to structure for overlapped IO );
举例:
int rc;
DWORD cBytes;
BYTE ch;
rc=ReadFile(hSer, &ch, 1, &cBytes, NULL);
写串口函数 WriteFile:
BOOL WINAPI WriteFile(
HANDLE hFile, //句柄
LPCVOID lpBuffer, //缓冲区指针
DWORD nNumberOfBytesToWrite, //number of bytes to write
LPDWORD lpNumberOfBytesWritten, //pointer to number of bytes written
LPOVERLAPPED lpOverlapped
); //pointer to structure for overlapped IO
举例:
Int rc;
DWORD cBytes;
BYTE ch;
ch = TEXT(‘a’);
rc = WriteFile(hSer, &ch, 1, &cBytes, NULL);
3.配置串行端口
读写操作之前应该正确配置串口工作状态 使用的API函数如下:
BOOL GetCommState(HANDLE hFile, LPDCB lpDCB);
BOOL SetCommState(HANDLE hRle, LPDCB lpDCB);
第一个参数是已经打开的函数的句柄,第二个参数是一个指针,指向DCB结构(查阅MSDN)
4.异步多线程通讯
(未完待续)