WEB开发网
开发学院软件开发VC 使用Win32创建串口通讯程序 阅读

使用Win32创建串口通讯程序

 2010-06-29 20:42:40 来源:WEB开发网   
核心提示:ReadIntervalTimeout指定通讯线上两个字符到达的最大时延,以毫秒为单位,使用Win32创建串口通讯程序(4),在ReadFile操作期间,时间周期从第一个字符接收到算起,程序员可以应用文件操作函数从串口接收数据,用ReadFile函数接收串口的数据,如果收到的两个字符之间的间隔超过该值,ReadFile

ReadIntervalTimeout

指定通讯线上两个字符到达的最大时延,以毫秒为单位。在ReadFile操作期间,时间周期从第一个字符接收到算起。如果收到的两个字符之间的间隔超过该值,ReadFile操作完毕并返回所有缓冲数据。如果ReadIntervalTimeout为0,则该值不起作用。

如果值为MAXDWORD, 并且ReadTotalTimeoutConstant和ReadTotalTimeoutMultiplier两个值都为0, 则指定读操作携带已经收到的字符立即返回,即使没有收到任何字符。

ReadTotalTimeoutMultiplier

指定以毫秒为单位的累积值。用于计算读操作时的超时总数。对于每次读操作,该值与所要读的字节数相乘。

ReadTotalTimeoutConstant

指定以毫秒为单位的常数。用于计算读操作时的超时总数。对于每次读操作,ReadTotalTimeoutMultiplier与所要读的字节数相乘后与该值相加。

如果ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都为0,则在读操作时忽略总超时数。

WriteTotalTimeoutMultiplier

指定以毫秒为单位的累积值。用于计算写操作时的超时总数。对于每次写操作,该值与所要写的字节数相乘。

WriteTotalTimeoutConstant

指定以毫秒为单位的常数。用于计算写操作时的超时总数。对于每次写操作, WriteTotalTimeoutMultiplier与所要写的字节数相乘后与该值相加。

如果 WriteTotalTimeoutMultiplier 和 WriteTotalTimeoutConstant都为0,则在写操作时忽略总超时数。

提示:用户设置通讯超时后,如没有出错,串口已经被打开。

发送数据

串口数据发送多作为写文件处理的,程序员可以应用文件操作函数发送数据到串口。采用WriteFile函数发送数据到串口。

if (WriteFile(handlePort_,   // 文件句柄
   outputData,       // 数据缓冲区指针
   sizeBuffer,       // 字节数
&length,NULL) == 0)     // 接收成功发送数据长度的指针
{
   AfxMessageBox("Reading of serial communication has problem.");
   return FALSE;
}

提示:如果函数成功,返回非0值

接收数据

串口数据接收多作为读文件处理。程序员可以应用文件操作函数从串口接收数据。用ReadFile函数接收串口的数据。

if (ReadFile(handlePort_,  // 句柄
  inputData,        // 数据缓冲区指针
  sizeBuffer,       // 字节数
  &length,         // 指向已经读入的字节数
  NULL) == 0)       // 重叠I/O结构体
{
  AfxMessageBox("Reading of serial communication has problem.");
  return FALSE;
}

提示:如果函数成功,返回非0值

关闭串口

可以调用CloseHandle API函数关闭串口

if(CloseHandle(handlePort_) == 0)  // 调用该函数关闭串口
{
   AfxMessageBox("Port Closeing isn''t successed.");
   return FALSE;
}

提示:如果函数成功,返回非0值

本文配套源码

上一页  1 2 3 4 

Tags:使用 Win 创建

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