📄 classwin__qextserialport.html
字号:
<td> ) </td> <td width="100%"> const<code> [virtual, inherited]</code></td> </tr> </table></div><div class="memdoc"><p>Returns true if device is sequential, otherwise returns false. Serial port is sequential device so this function always returns true. Check <a class="elRef" doxygen="qiodevice.tag:http://doc.trolltech.com/" href="http://doc.trolltech.com/qiodevice.html#isSequential">QIODevice::isSequential()</a> documentation for more information. <div class="fragment"><pre class="fragment"><a name="l00177"></a>00177 {<a name="l00178"></a>00178 <span class="keywordflow">return</span> <span class="keyword">true</span>;<a name="l00179"></a>00179 }</pre></div><p></div></div><p><a class="anchor" name="e4029cb49127422b7e76586930366b05"></a><!-- doxytag: member="Win_QextSerialPort::lastError" ref="e4029cb49127422b7e76586930366b05" args="() const " --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">ulong QextSerialBase::lastError </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [virtual, inherited]</code></td> </tr> </table></div><div class="memdoc"><p>Returns the code for the last error encountered by the port, or E_NO_ERROR if the last port operation was successful. Possible error codes are:<p><div class="fragment"><pre class="fragment">Error Explanation--------------------------- -------------------------------------------------------------E_NO_ERROR No Error has occuredE_INVALID_FD Invalid file descriptor (port was not opened correctly)E_NO_MEMORY Unable to allocate memory tables (POSIX)E_CAUGHT_NON_BLOCKED_SIGNAL Caught a non-blocked signal (POSIX)E_PORT_TIMEOUT Operation timed out (POSIX)E_INVALID_DEVICE The file opened by the port is not a character device (POSIX)E_BREAK_CONDITION The port detected a break conditionE_FRAMING_ERROR The port detected a framing error (usually caused by incorrect baud rate settings)E_IO_ERROR There was an I/O error while communicating with the portE_BUFFER_OVERRUN Character buffer overrunE_RECEIVE_OVERFLOW Receive buffer overflowE_RECEIVE_PARITY_ERROR The port detected a parity error in the received dataE_TRANSMIT_OVERFLOW Transmit buffer overflowE_READ_FAILED General read operation failureE_WRITE_FAILED General write operation failure</pre></div> <div class="fragment"><pre class="fragment"><a name="l00248"></a>00248 {<a name="l00249"></a>00249 <span class="keywordflow">return</span> <a class="code" href="classQextSerialBase.html#31816951ba89902fa1dfdb6f18b80f41">lastErr</a>;<a name="l00250"></a>00250 }</pre></div><p></div></div><p><a class="anchor" name="5aecf6de25391bb59ad4d18f3562eef3"></a><!-- doxytag: member="Win_QextSerialPort::lineStatus" ref="5aecf6de25391bb59ad4d18f3562eef3" args="(void)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">ulong Win_QextSerialPort::lineStatus </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [virtual]</code></td> </tr> </table></div><div class="memdoc"><p>returns the line status as stored by the port function. This function will retrieve the states of the following lines: DCD, CTS, DSR, and RI. On POSIX systems, the following additional lines can be monitored: DTR, RTS, Secondary TXD, and Secondary RXD. The value returned is an unsigned long with specific bits indicating which lines are high. The following constants should be used to examine the states of individual lines:<p><div class="fragment"><pre class="fragment">Mask Line------ ----LS_CTS CTSLS_DSR DSRLS_DCD DCDLS_RI RI</pre></div><p>This function will return 0 if the port associated with the class is not currently open. <p>Implements <a class="el" href="classQextSerialBase.html#28b87dd41160a61e2953dca38aa332d6">QextSerialBase</a>.<div class="fragment"><pre class="fragment"><a name="l00838"></a>00838 {<a name="l00839"></a>00839 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Status=0, Temp=0;<a name="l00840"></a>00840 LOCK_MUTEX();<a name="l00841"></a>00841 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="qiodevice.tag:http://doc.trolltech.com/" href="http://doc.trolltech.com/qiodevice.html#isOpen">isOpen</a>()) {<a name="l00842"></a>00842 GetCommModemStatus(<a class="code" href="classWin__QextSerialPort.html#f6dae6bb1c6b51e766e551bc11f1721d">Win_Handle</a>, &Temp);<a name="l00843"></a>00843 <span class="keywordflow">if</span> (Temp&MS_CTS_ON) {<a name="l00844"></a>00844 Status|=LS_CTS;<a name="l00845"></a>00845 }<a name="l00846"></a>00846 <span class="keywordflow">if</span> (Temp&MS_DSR_ON) {<a name="l00847"></a>00847 Status|=LS_DSR;<a name="l00848"></a>00848 }<a name="l00849"></a>00849 <span class="keywordflow">if</span> (Temp&MS_RING_ON) {<a name="l00850"></a>00850 Status|=LS_RI;<a name="l00851"></a>00851 }<a name="l00852"></a>00852 <span class="keywordflow">if</span> (Temp&MS_RLSD_ON) {<a name="l00853"></a>00853 Status|=LS_DCD;<a name="l00854"></a>00854 }<a name="l00855"></a>00855 }<a name="l00856"></a>00856 UNLOCK_MUTEX();<a name="l00857"></a>00857 <span class="keywordflow">return</span> Status;<a name="l00858"></a>00858 }</pre></div><p></div></div><p><a class="anchor" name="48e6b76953155180647f0b1a1ace8c2a"></a><!-- doxytag: member="Win_QextSerialPort::open" ref="48e6b76953155180647f0b1a1ace8c2a" args="(OpenMode mode=0)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Win_QextSerialPort::open </td> <td>(</td> <td class="paramtype">OpenMode </td> <td class="paramname"> <em>mode</em> = <code>0</code> </td> <td> ) </td> <td width="100%"><code> [virtual]</code></td> </tr> </table></div><div class="memdoc"><p>Opens a serial port. Note that this function does not specify which device to open. If you need to open a device by name, see Win_QextSerialPort::open(const char*). This function has no effect if the port associated with the class is already open. The port is also configured to the current settings, as stored in the Settings structure. <p>Implements <a class="el" href="classQextSerialBase.html#e7fadc74c97f903f6b499e6155236b3e">QextSerialBase</a>.<div class="fragment"><pre class="fragment"><a name="l00144"></a>00144 {<a name="l00145"></a>00145 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> confSize = <span class="keyword">sizeof</span>(COMMCONFIG);<a name="l00146"></a>00146 <a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dwSize = confSize;<a name="l00147"></a>00147 <a name="l00148"></a>00148 LOCK_MUTEX();<a name="l00149"></a>00149 <span class="keywordflow">if</span> (mode == QIODevice::NotOpen)<a name="l00150"></a>00150 <span class="keywordflow">return</span> <a class="codeRef" doxygen="qiodevice.tag:http://doc.trolltech.com/" href="http://doc.trolltech.com/qiodevice.html#isOpen">isOpen</a>();<a name="l00151"></a>00151 <span class="keywordflow">if</span> (!<a class="codeRef" doxygen="qiodevice.tag:http://doc.trolltech.com/" href="http://doc.trolltech.com/qiodevice.html#isOpen">isOpen</a>()) {<a name="l00152"></a>00152 <span class="comment">/*open the port*/</span><a name="l00153"></a>00153 <a class="code" href="classWin__QextSerialPort.html#f6dae6bb1c6b51e766e551bc11f1721d">Win_Handle</a>=CreateFileA(<a class="code" href="classQextSerialBase.html#7459f3818391091877c88595a48a950a">port</a>.toAscii(), GENERIC_READ|GENERIC_WRITE,<a name="l00154"></a>00154 FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);<a name="l00155"></a>00155 <span class="keywordflow">if</span> (<a class="code" href="classWin__QextSerialPort.html#f6dae6bb1c6b51e766e551bc11f1721d">Win_Handle</a>!=INVALID_HANDLE_VALUE) {<a name="l00156"></a>00156 <span class="comment">/*set open mode*/</span><a name="l00157"></a>00157 <a class="codeRef" doxygen="qiodevice.tag:http://doc.trolltech.com/" href="http://doc.trolltech.com/qiodevice.html#open">QIODevice::open</a>(mode);<a name="l00158"></a>00158 <a name="l00159"></a>00159 <span class="comment">/*configure port settings*/</span><a name="l00160"></a>00160 GetCommConfig(<a class="code" href="classWin__QextSerialPort.html#f6dae6bb1c6b51e766e551bc11f1721d">Win_Handle</a>, &<a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>, &confSize);<a name="l00161"></a>00161 GetCommState(<a class="code" href="classWin__QextSerialPort.html#f6dae6bb1c6b51e766e551bc11f1721d">Win_Handle</a>, &(<a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dcb));<a name="l00162"></a>00162 <a name="l00163"></a>00163 <span class="comment">/*set up parameters*/</span><a name="l00164"></a>00164 <a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dcb.fBinary=TRUE;<a name="l00165"></a>00165 <a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dcb.fInX=FALSE;<a name="l00166"></a>00166 <a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dcb.fOutX=FALSE;<a name="l00167"></a>00167 <a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dcb.fAbortOnError=FALSE;<a name="l00168"></a>00168 <a class="code" href="classWin__QextSerialPort.html#a51a3047aa92b01531219215bb415dbb">Win_CommConfig</a>.dcb.fNull=FALSE;<a name="l00169"></a>00169 <a class="code" href="classWin__QextSerialPort.html#a5578e4862e3743da2a923f082f821d6">setBaudRate</a>(<a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#be617f3545d6be4587e1a0700a0b0e5b">BaudRate</a>);<a name="l00170"></a>00170 <a class="code" href="classWin__QextSerialPort.html#33168191b03365b429b8413f6286f4c8">setDataBits</a>(<a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#9ec9d5a304b2ac8d3a100d07bce7c0b6">DataBits</a>);<a name="l00171"></a>00171 <a class="code" href="classWin__QextSerialPort.html#67fc083cb06b6b1872fc4360cd599821">setStopBits</a>(<a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#0752c70eb7e12f02ddf59739a056b04c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -