⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap12_3.htm

📁 MFC开发基础教程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
    95/NT</font><font SIZE="3">中,</font><font FACE="Times New Roman" SIZE="3">WM_COMMNOTIFY</font><font SIZE="3">消息已经取消,在串行口产生一个通信事件时,程序并不会收到通知消息。线程需要调用</font><font FACE="Times New Roman" SIZE="3">WaitCommEvent</font><font SIZE="3">函数来监视发生在串行口中的各种事件,该函数的第二个参数返回一个事件屏蔽变量,用来指示事件的类型。线程可以用</font><font FACE="Times New Roman" SIZE="3">SetCommMask</font><font SIZE="3">建立事件屏蔽以指定要监视的事件,表</font><font FACE="Times New Roman" SIZE="3">12.4</font><font SIZE="3">列出了可以监视的事件。调用</font><font FACE="Times New Roman" SIZE="3">GetCommMask</font><font SIZE="3">可以查询串行口当前的事件屏蔽。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="CENTER">表</font><font FACE="Times New Roman" SIZE="3">12.4 </font><font SIZE="3">通信事件</font></b></p>
    <table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
      <tr>
        <td WIDTH="35%"><font SIZE="3"><b><p ALIGN="JUSTIFY">事件屏蔽</b></font></td>
        <td WIDTH="65%"><font SIZE="3"><b><p ALIGN="JUSTIFY">含义</b></font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_BREAK</font></td>
        <td WIDTH="65%"><font SIZE="3"><p ALIGN="JUSTIFY">检测到一个输入中断</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_CTS</font></td>
        <td WIDTH="65%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CTS</font><font SIZE="3">信号发生变化</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_DSR</font></td>
        <td WIDTH="65%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">DSR</font><font SIZE="3">信号发生变化</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_ERR</font></td>
        <td WIDTH="65%"><font SIZE="3"><p ALIGN="JUSTIFY">发生行状态错误</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_RING</font></td>
        <td WIDTH="65%"><font SIZE="3"><p ALIGN="JUSTIFY">检测到振铃信号</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_RLSD</font></td>
        <td WIDTH="65%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">RLSD(CD)</font><font SIZE="3">信号发生变化</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_RXCHAR</font></td>
        <td WIDTH="65%"><font SIZE="3"><p ALIGN="JUSTIFY">输入缓冲区接收到新字符</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_RXFLAG</font></td>
        <td WIDTH="65%"><font SIZE="3"><p ALIGN="JUSTIFY">输入缓冲区收到事件字符</font></td>
      </tr>
      <tr>
        <td WIDTH="35%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">EV_TXEMPTY</font></td>
        <td WIDTH="65%"><font SIZE="3"><p ALIGN="JUSTIFY">发送缓冲区为空</font></td>
      </tr>
    </table>
    <font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">WaitCommEvent</font><font SIZE="3">即可以同步使用,也可以重叠使用。如果串口是用</font><font FACE="Times New Roman" SIZE="3">FILE_FLAG_OVERLAPPED</font><font SIZE="3">标志打开的,那么</font><font FACE="Times New Roman" SIZE="3">WaitCommEvent</font><font SIZE="3">就进行重叠操作,此时该函数需要一个</font><font FACE="Times New Roman" SIZE="3">OVERLAPPED</font><font SIZE="3">结构。线程可以调用等待函数或</font><font FACE="Times New Roman" SIZE="3">GetOverlappedResult</font><font SIZE="3">函数来等待重叠操作的完成。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">当指定范围内的某一事件发生后,线程就结束等待并把该事件的屏蔽码设置到事件屏蔽变量中。需要注意的是,</font><font FACE="Times New Roman" SIZE="3">WaitCommEvent</font><font SIZE="3">只检测调用该函数后发生的事件。例如,如果在调用</font><font FACE="Times New Roman" SIZE="3">WaitCommEvent</font><font SIZE="3">前在输入缓冲区中就有字符,则不会因为这些字符而产生</font><font FACE="Times New Roman" SIZE="3">EV_RXCHAR</font><font SIZE="3">事件。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">如果检测到输入的硬件信号(如</font><font FACE="Times New Roman" SIZE="3">CTS</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">RTS</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">CD</font><font SIZE="3">信号等)发生了变化,线程可以调用</font><font FACE="Times New Roman" SIZE="3">GetCommMaskStatus</font><font SIZE="3">函数来查询它们的状态。而用</font><font FACE="Times New Roman" SIZE="3">EscapeCommFunction</font><font SIZE="3">函数可以控制输出的硬件信号(如</font><font FACE="Times New Roman" SIZE="3">DTR</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">RTS</font><font SIZE="3">信号)。</font><font FACE="Times New Roman" SIZE="3"></p>
    </font><div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
      <tr>
        <td><a href="chap12_2.htm">上一页</a></td>
        <td><p align="right"><a href="chap12_4.htm">下一页</a></td>
      </tr>
    </table>
    </center></div><font SIZE="5"><hr noshade color="#3973DE" size="1">
    <p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>协助制作<br>
    未经许可,请勿以任何形式复制</font></td>
    <b>
  </tr>
</table>
</center></div>

<p ALIGN="CENTER"></b><font SIZE="5"> </font><font FACE="Times New Roman" SIZE="5"></p>
</font><font FACE="Times New Roman" SIZE="3">

<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
</font></b>

<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>

<p></font> </p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -