首页/技术开发/内容

用Win32 API完成串行通信

技术开发2024-06-13 阅读()
EVRXCHAR);  
//设置串行设备控制参数
 SetCommState(hComDev,&dcb);  
//设备已打开
 bOpen=TRUE;  
 //创建人工重设、未发信号的事件
 hEvent=CreateEvent(NULL,FALSE,FALSE,
“WatchEvent”);
//创建一个事件监视线程来监视串口事件
 AfxBeginThread(CommWatchProc,pParam);  
}
        在设置串口DCB结构的参数时,不必设置每一个值。首先读出DCB缺省的参数设置,然后只修改必要的参数,其他参数都取缺省值。由于对串口进行的是同步I/O操作,所以除非指定进行监测的事件发生,否则WaitCommEvent函数不会返回。在串行设备初始化的最后要建立一个单独的监视线程来监视串口事件,以免挂起当前调用线程,其中pParam可以是一个对事件进行处理的窗口类指针。
如果要进行异步I/O操作,打开设备句柄时,CreateFile的第6个参数应增加FILEFLAGOVERLAPPED 标志。
数据发送
        数据发送利用WriteFile函数实现。对于同步I/O操作,它的最后一个参数可为NULL;而对异步I/O操作,它的最后一个参数必需是一个指向OVERLAPPED结构的指针,通过OVERLAPPED结构来获得当前的操作状态。
BOOL WriteComm(LPCVOID lpSndBuffer,DWORD  
dwBytesToWrite)
{ //lpSndBuffer为发送数据缓冲区指针,
dwBytesToWrite为将要发送的字节长度
//设备已打开
 BOOL bWriteState;  
//实际发送的字节数
 DWORD dwBytesWritten;  
//设备未打开
 if(!bOpen) return FALSE;  
 bWriteState=WriteFile(hComDev,lpSndBuffer,
dwBytesToWrite,&dwBytesWritten,NULL);
 if(!bWriteState (北联网教程,专业提供视频软件下载)

第1页  第2页  第3页  第4页  第5页  第6页  第7页  第8页 

……

相关阅读