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

📄 serialport.htm

📁 串口通讯类
💻 HTM
📖 第 1 页 / 共 3 页
字号:

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::ClearRTS</font></b></p>
<p><font face="Arial"><span class="op"><b>void ClearRTS()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Escape function using the constant CLRRTS which
lowers the RTS line.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::SetDTR</font></b></p>
<p><font face="Arial"><span class="op"><b>void SetDTR()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Escape function using the constant SETDTR which
raises the DTR line.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::SetRTS</font></b></p>
<p><font face="Arial"><span class="op"><b>void SetRTS()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Escape function using the constant SETRTS which
raises the RTS line.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::SetXOFF</font></b></p>
<p><font face="Arial"><span class="op"><b>void SetXOFF()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Escape function using the constant SETXOFF which
causes transmission to act as if an XOFF character has been received..</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::SetXON</font></b></p>
<p><font face="Arial"><span class="op"><b>void SetXON()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Escape function using the constant SETXON which
causes transmission to act as if an XON character has been received..</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::GetProperties</font></b></p>
<p><font face="Arial"><span class="op"><b>void GetProperties(COMMPROP&amp; </b><i>properties</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the GetCommProperties SDK function
call. See the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::GetModemStatus</font></b></p>
<p><font face="Arial"><span class="op"><b>void GetModemStatus(DWORD&amp; </b><i>dwModemStatus</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the GetCommModemStatus SDK function
call. See the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::SetTimeouts</font></b></p>
<p><font face="Arial"><span class="op"><b>void SetTimeouts(COMMTIMEOUTS&amp; </b><i>timeouts</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the SetCommTimeouts SDK function call.
See the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::GetTimeouts</font></b></p>
<p><font face="Arial"><span class="op"><b>void GetTimeouts(COMMTIMEOUTS&amp; </b><i>timeouts</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the GetCommTimeouts SDK function call.
See the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::Set0Timeout</font></b></p>
<p><font face="Arial"><span class="op"><b>void Set0Timeout()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Configure both send and receive timeouts to be 0. This
cause writes to return immediately and for reads to return with whatever data is
waiting in the receive buffer rather than wait for the specified amount of bytes
to arrive.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::Set0WriteTimeout</font></b></p>
<p><font face="Arial"><span class="op"><b>void Set0WriteTimeout()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Configures the send timeouts to be 0. This cause writes to
return immediately.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::Set0ReadTimeout</font></b></p>
<p><font face="Arial"><span class="op"><b>void Set0ReadTimeout()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Configure the receive timeout to be 0. This cause reads to
return with whatever data is waiting in the receive buffer rather than wait for
the specified amount of bytes to arrive.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::SetMask</font></b></p>
<p><font face="Arial"><span class="op"><b>void SetMask(DWORD </b><i>dwMask</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the SetCommMask SDK function call. See
the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::GetMask</font></b></p>
<p><font face="Arial"><span class="op"><b>void GetMask(DWORD&amp; </b><i>dwMask</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the GetCommMask SDK function call. See
the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::WaitEvent</font></b></p>
<p><font face="Arial"><span class="op"><b>void WaitEvent(DWORD&amp; </b><i>dwMask</i><b>)<br>
void WaitEvent(DWORD&amp; </b><i>dwMask</i><b>, OVERLAPPED&amp; </b><i>overlapped</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the WaitCommEvent SDK function call.
The second version of WaitEvent is the overlapped version which will return
immediately and you can wait for the manual reset event member of the OVERLAPPED
structure to become signaled in your code. See the Win32 SDK documentation for
further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::Flush</font></b></p>
<p><font face="Arial"><span class="op"><b>void Flush()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the FlushFileBuffers SDK function call.
See the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::Purge</font></b></p>
<p><font face="Arial"><span class="op"><b>void Purge(DWORD </b><i>dwFlags</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the PurgeComm SDK function call. See
the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::TerminateOutstandingWrites</font></b></p>
<p><font face="Arial"><span class="op"><b>void TerminateOutstandingWrites()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Purge function using the constant PURGE_TXABORT
which terminates all outstanding write operations and returns immediately, even
if the write operations have not been completed.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::TerminateOutstandingReads</font></b></p>
<p><font face="Arial"><span class="op"><b>void TerminateOutstandingReads()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Purge function using the constant PURGE_RXABORT
which terminates all outstanding read operations and returns immediately, even
if the read operations have not been completed.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::ClearWriteBuffer</font></b></p>
<p><font face="Arial"><span class="op"><b>void ClearWriteBuffer()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Purge function using the constant PURGE_TXCLEAR
which clears the output buffer (if the device driver has one)..</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::ClearReadBuffer</font></b></p>
<p><font face="Arial"><span class="op"><b>void ClearReadBuffer()<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Calls the Purge function using the constant PURGE_RXCLEAR
which clears the input buffer (if the device driver has one)..</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::Setup</font></b></p>
<p><font face="Arial"><span class="op"><b>void Setup(DWORD </b><i>dwInQueue, </i><b>DWORD
</b><i>dwOutQueue</i><b>)<br>
&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">Simple wrapper for the SetupComm SDK function call. See
the Win32 SDK documentation for further details.</font></p>

<p>&nbsp;</p>

<p><b><font face="Arial" size="4">CSerialPort::OnCompletion</font></b></p>
<p><font face="Arial"><span class="op"><b>virtual void OnCompletion(DWORD</b></span><b>
</b><i>dwErrorCode</i><b>, DWORD </b><i>dwCount</i><b>, LPOVERLAPPED </b><i>lpOverlapped</i><b><span class="op">);<br>
</span></b><span class="op"><b>&nbsp;&nbsp;&nbsp;</b></span> <b><span class="op">throw(</span>
<span class="op">CSerialException</span> <span class="op">);</span></b></font></p>
<p><b><font face="Arial">Parameters</font></b></p>
<p><font face="Arial"><span class="p"><i>dwErrorCode</i></span>&nbsp;&nbsp;</font></p>
<p><font face="Arial">Specifies the I/O completion status. This parameter may be
one of the following values:</font></p>
<table width="582">
  <tbody>
    <tr vAlign="top">
      <td width="151">
        <p><b><font size="2" face="Arial">Value</font></b></p>
      <td width="417">
        <p><b><font size="2" face="Arial">Meaning</font></b></p>
    <tr vAlign="top">
      <td width="151">
        <p><font size="2" face="Arial">0</font></p>
      <td width="417">
        <p><font size="2" face="Arial">The I/O was successful.</font></p>
    <tr vAlign="top">
      <td width="151">
        <p><font size="2" face="Arial">ERROR_HANDLE_EOF</font></p>
      <td width="417">
        <p><font size="2" face="Arial">The ReadFileEx function tried to read
        past the end of the file.</font></p>
    </tr>
  </tbody>
</table>
<p><font face="Arial"><i>dwCount</i> Specifies the number of bytes transferred.
If an error occurs, this parameter is zero</font></p>

<p><font face="Arial"><i>lpOverlapped</i>  Points to the OVERLAPPED structure
specified by the asynchronous I/O function.</font></p>
<p><b><font face="Arial">Remarks</font></b></p>
<p><font face="Arial">This function is called as the completion routine for any asynchronous calls
to WriteEx or ReadEx. In your derived class from CSerialPort, you can override
this function to perform your own specific code in reaction to an asynchronous
call completing. Don't forget to call the parent version namely this function
&quot;CSerialPort::OnCompletion&quot; as it handles the cleanup of the memory
allocated for the lpOverlapped parameter.</font></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font face="Arial"><big><a name="Enhancements"></a></big><font color="#000000" size="4"><strong>PLANNED
ENHANCEMENTS</strong></font> </font>

<ul>
  <li><font face="Arial">Provide a better sample app. At the moment, it's very much a test
    program which tests all of the functions.</font> </li>
  <li><font color="#000000" face="Arial" size="3">If you have any other suggested
    improvements, please let me know so that I can incorporate them into the next release.</font>
  </li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font face="Arial"><a name="Contact"></a><font color="#000000" size="4"><strong>CONTACTING
THE AUTHOR</strong></font></font></p>

<p><font color="#000000" face="Arial" size="3">PJ Naughter<br>
Email: <a href="mailto:pjn@indigo..ie">pjn@indigo.ie</a><br>
Web: <a href="http://indigo.ie/~pjn">http://indigo.ie/~pjn</a><br>
29th September 1999</font></p>
</body>
</html>

⌨️ 快捷键说明

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