📄 classposix__qextserialport.html
字号:
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"> const<code> [virtual, inherited]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
This function will return true if the input buffer is empty (or on error), and false otherwise. Call <a class="el" href="classQextSerialBase.html#e4029cb49127422b7e76586930366b05">QextSerialBase::lastError()</a> for error information. <div class="fragment"><pre class="fragment"><a name="l00164"></a>00164 {
<a name="l00165"></a>00165 <span class="keywordflow">if</span> (<a class="code" href="classQextSerialBase.html#86fc9d6239b7d136a9d80b93a727e093">size</a>()) {
<a name="l00166"></a>00166 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00167"></a>00167 }
<a name="l00168"></a>00168 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00169"></a>00169 }
</pre></div>
<p>
</div>
</div><p>
<a class="anchor" name="6d6eeab48cad2fa2adbebb23920c661a"></a><!-- doxytag: member="Posix_QextSerialPort::baudRate" ref="6d6eeab48cad2fa2adbebb23920c661a" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="qextserialbase_8h.html#6f031169a6a9b150b5af707bb23cf010">BaudRateType</a> QextSerialBase::baudRate </td>
<td>(</td>
<td class="paramtype">void </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 baud rate of the serial port. For a list of possible return values see the definition of the enum BaudRateType. <div class="fragment"><pre class="fragment"><a name="l00103"></a>00103 {
<a name="l00104"></a>00104 <span class="keywordflow">return</span> <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#be617f3545d6be4587e1a0700a0b0e5b">BaudRate</a>;
<a name="l00105"></a>00105 }
</pre></div>
<p>
</div>
</div><p>
<a class="anchor" name="6d593fe4f4623e93537a531d2c6157b7"></a><!-- doxytag: member="Posix_QextSerialPort::bytesAvailable" ref="6d593fe4f4623e93537a531d2c6157b7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">qint64 Posix_QextSerialPort::bytesAvailable </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns the number of bytes waiting in the port's receive queue. This function will return 0 if the port is not currently open, or -1 on error. Error information can be retrieved by calling Posix_QextSerialPort::getLastError().
<p>
Implements <a class="el" href="classQextSerialBase.html#7e130a0ba5a0a9ba95ce5f75a5e2c526">QextSerialBase</a>.<div class="fragment"><pre class="fragment"><a name="l00922"></a>00922 {
<a name="l00923"></a>00923 LOCK_MUTEX();
<a name="l00924"></a>00924 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="qiodevice.tag:" href="qiodevice.html#isOpen">isOpen</a>()) {
<a name="l00925"></a>00925 <span class="keywordtype">int</span> bytesQueued;
<a name="l00926"></a>00926 fd_set fileSet;
<a name="l00927"></a>00927 FD_ZERO(&fileSet);
<a name="l00928"></a>00928 FD_SET(<a class="code" href="classPosix__QextSerialPort.html#c4fcc5ae9850c3bc9952a13e4ef82273">Posix_File</a>->handle(), &fileSet);
<a name="l00929"></a>00929
<a name="l00930"></a>00930 <span class="comment">/*on Linux systems the Posix_Timeout structure will be altered by the select() call.</span>
<a name="l00931"></a>00931 <span class="comment"> Make sure we use the right timeout values*/</span>
<a name="l00932"></a>00932 <span class="comment">//memcpy(&Posix_Timeout, &Posix_Copy_Timeout, sizeof(struct timeval));</span>
<a name="l00933"></a>00933 <a class="code" href="classPosix__QextSerialPort.html#0a876397917fbf082b56ae43ab2b4b7b">Posix_Timeout</a> = <a class="code" href="classPosix__QextSerialPort.html#e5813ea1fd76c8c5a8948c4085d3e84e">Posix_Copy_Timeout</a>;
<a name="l00934"></a>00934 <span class="keywordtype">int</span> n=select(<a class="code" href="classPosix__QextSerialPort.html#c4fcc5ae9850c3bc9952a13e4ef82273">Posix_File</a>->handle()+1, &fileSet, NULL, &fileSet, &Posix_Timeout);
<a name="l00935"></a>00935 <span class="keywordflow">if</span> (!n) {
<a name="l00936"></a>00936 <a class="code" href="classQextSerialBase.html#31816951ba89902fa1dfdb6f18b80f41">lastErr</a>=E_PORT_TIMEOUT;
<a name="l00937"></a>00937 UNLOCK_MUTEX();
<a name="l00938"></a>00938 <span class="keywordflow">return</span> -1;
<a name="l00939"></a>00939 }
<a name="l00940"></a>00940 <span class="keywordflow">if</span> (n==-1 || ioctl(<a class="code" href="classPosix__QextSerialPort.html#c4fcc5ae9850c3bc9952a13e4ef82273">Posix_File</a>->handle(), FIONREAD, &bytesQueued)==-1) {
<a name="l00941"></a>00941 <a class="code" href="classPosix__QextSerialPort.html#a099923f1360a08c6b7072254fd056e6">translateError</a>(errno);
<a name="l00942"></a>00942 UNLOCK_MUTEX();
<a name="l00943"></a>00943 <span class="keywordflow">return</span> -1;
<a name="l00944"></a>00944 }
<a name="l00945"></a>00945 <a class="code" href="classQextSerialBase.html#31816951ba89902fa1dfdb6f18b80f41">lastErr</a>=E_NO_ERROR;
<a name="l00946"></a>00946 UNLOCK_MUTEX();
<a name="l00947"></a>00947 <span class="keywordflow">return</span> bytesQueued + <a class="codeRef" doxygen="qiodevice.tag:" href="qiodevice.html#bytesAvailable">QIODevice::bytesAvailable</a>();
<a name="l00948"></a>00948 }
<a name="l00949"></a>00949 UNLOCK_MUTEX();
<a name="l00950"></a>00950 <span class="keywordflow">return</span> 0;
<a name="l00951"></a>00951 }
</pre></div>
<p>
</div>
</div><p>
<a class="anchor" name="3a7ddf86a867770c88777c3e78545cb0"></a><!-- doxytag: member="Posix_QextSerialPort::close" ref="3a7ddf86a867770c88777c3e78545cb0" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Posix_QextSerialPort::close </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Closes a serial port. This function has no effect if the serial port associated with the class is not currently open.
<p>
Implements <a class="el" href="classQextSerialBase.html#2a4aea428bc05a88f86849bb7478c082">QextSerialBase</a>.<div class="fragment"><pre class="fragment"><a name="l00878"></a>00878 {
<a name="l00879"></a>00879 LOCK_MUTEX();
<a name="l00880"></a>00880 <a class="code" href="classPosix__QextSerialPort.html#c4fcc5ae9850c3bc9952a13e4ef82273">Posix_File</a>->close();
<a name="l00881"></a>00881 <a class="codeRef" doxygen="qiodevice.tag:" href="qiodevice.html#close">QIODevice::close</a>();
<a name="l00882"></a>00882 UNLOCK_MUTEX();
<a name="l00883"></a>00883 }
</pre></div>
<p>
</div>
</div><p>
<a class="anchor" name="7495b472b5e269d04c0c2e856901207f"></a><!-- doxytag: member="Posix_QextSerialPort::construct" ref="7495b472b5e269d04c0c2e856901207f" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void QextSerialBase::construct </td>
<td>(</td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"><code> [virtual, inherited]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Common constructor function for setting up default port settings. (115200 Baud, 8N1, Hardware flow control where supported, otherwise no flow control, and 0 ms timeout). <div class="fragment"><pre class="fragment"><a name="l00062"></a>00062 {
<a name="l00063"></a>00063 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#be617f3545d6be4587e1a0700a0b0e5b">BaudRate</a>=<a class="code" href="qextserialbase_8h.html#6f031169a6a9b150b5af707bb23cf01054a5ab3e880bc1722d455e420c0351e6">BAUD115200</a>;
<a name="l00064"></a>00064 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#9ec9d5a304b2ac8d3a100d07bce7c0b6">DataBits</a>=<a class="code" href="qextserialbase_8h.html#189ef78c2c1b7537ab114d576f6214fa719dc653cb3f7c9fbf6c8b8c36d78a9f">DATA_8</a>;
<a name="l00065"></a>00065 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#8d0bfbdcb40e9e3919e3f9829ae72582">Parity</a>=<a class="code" href="qextserialbase_8h.html#ee22d32d87c815090354bf9b8e957acee0df16cbf90ff8b05d96d37094b3980a">PAR_NONE</a>;
<a name="l00066"></a>00066 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#0752c70eb7e12f02ddf59739a056b04c">StopBits</a>=<a class="code" href="qextserialbase_8h.html#dc8078895cd941d755d46633b54d3e7f5a97cec5fc7aa14a4caae4b53d97fcfc">STOP_1</a>;
<a name="l00067"></a>00067 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#10720f6217b8d8b90c326ea030c43e30">FlowControl</a>=<a class="code" href="qextserialbase_8h.html#02ad1c7cf791a069dd54e409f8db479037eb6a580629a080ce39792149cf4976">FLOW_HARDWARE</a>;
<a name="l00068"></a>00068 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#159ca543549b3b872917fc4ef0757b60">Timeout_Sec</a>=0;
<a name="l00069"></a>00069 <a class="code" href="classQextSerialBase.html#2d796e3080f78ff63e821f528439db57">Settings</a>.<a class="code" href="structPortSettings.html#c1b008038ad143262a2ee18247fe2c39">Timeout_Millisec</a>=0;
<a name="l00070"></a>00070 <a class="code" href="classQextSerialBase.html#0c7cf6443ad80a05d51daaca5d0102ab">mutex</a> = <span class="keyword">new</span> QMutex( QMutex::Recursive );
<a name="l00071"></a>00071 <a class="codeRef" doxygen="qiodevice.tag:" href="qiodevice.html#setOpenMode">setOpenMode</a>(QIODevice::NotOpen);
<a name="l00072"></a>00072 }
</pre></div>
<p>
</div>
</div><p>
<a class="anchor" name="6836465ea5deaa1280e0e777e9c8651e"></a><!-- doxytag: member="Posix_QextSerialPort::dataBits" ref="6836465ea5deaa1280e0e777e9c8651e" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -