WEB开发网
开发学院软件开发VC Win32串口编程 阅读

Win32串口编程

 2007-03-17 22:00:53 来源:WEB开发网   
核心提示: ReadFile函数只要在串口输入缓冲区中读入指定数量的字符,就算完成操作,Win32串口编程(7),而WriteFile函数不但要把指定数量的字符拷入到输出缓冲区,而且要等这些字符从串行口送出去后才算完成操作,它也可以实现阻塞(例如我们可以设置一定要读取到一个数据才能进行到下一步操作),

ReadFile函数只要在串口输入缓冲区中读入指定数量的字符,就算完成操作。而WriteFile函数不但要把指定数量的字符拷入到输出缓冲区,而且要等这些字符从串行口送出去后才算完成操作。

如果操作成功,这两个函数都返回TRUE。需要注意的是,当ReadFile和WriteFile返回FALSE时,不一定就是操作失败,线程应该调用GetLastError函数分析返回的结果。例如,在重叠操作时如果操作还未完成函数就返回,那么函数就返回FALSE,而且GetLastError函数返回ERROR_IO_PENDING。这说明重叠操作还未完成。

同步方式读写串口比较简单,下面先例举同步方式读写串口的代码://同步读串口
char str[100];
DWORD wCount;//读取的字节数
BOOL bReadStat;
bReadStat=ReadFile(hCom,str,100,&wCount,NULL);
if(!bReadStat)
{
  AfxMessageBox("读串口失败!");
  return FALSE;
}
return TRUE;
//同步写串口
  char lpOutBuffer[100];
  DWORD dwBytesWrite=100;
  COMSTAT ComStat;
  DWORD dwErrorFlags;
  BOOL bWriteStat;
  ClearCommError(hCom,&dwErrorFlags,&ComStat);
  bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL);
  if(!bWriteStat)
  {
    AfxMessageBox("写串口失败!");
  }
  PurgeComm(hCom, PURGE_TXABORT|
    PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
在重叠操作时,操作还未完成函数就返回。

重叠I/O非常灵活,它也可以实现阻塞(例如我们可以设置一定要读取到一个数据才能进行到下一步操作)。有两种方法可以等待操作完成:一种方法是用象WaitForSingleObject这样的等待函数来等待OVERLAPPED结构的hEvent成员;另一种方法是调用GetOverlappedResult函数等待,后面将演示说明。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Win 串口 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接