cml__canopen_8h-source.html
来自「美国COPLEY驱动器,程序开发工具之一.」· HTML 代码 · 共 334 行 · 第 1/3 页
HTML
334 行
<a name="l00216"></a>00216 <span class="comment">/***************************************************************************/</span><a name="l00217"></a><a class="code" href="classReceiver.html">00217</a> <span class="keyword">class </span><a class="code" href="classReceiver.html">Receiver</a><a name="l00218"></a>00218 {<a name="l00219"></a>00219 <span class="keyword">public</span>:<a name="l00220"></a>00220 <a class="code" href="classReceiver.html#a0">Receiver</a>();<a name="l00221"></a>00221 <a class="code" href="classReceiver.html#a0">Receiver</a>( <a class="code" href="classCanOpen.html">CanOpen</a> &canOpen, <a class="code" href="CML__Utils_8h.html#a10">uint32</a> <span class="keywordtype">id</span> );<a name="l00222"></a>00222 <span class="keyword">virtual</span> <a class="code" href="classReceiver.html#a2">~Receiver</a>();<a name="l00223"></a>00223 <a name="l00224"></a>00224 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classReceiver.html#a3">Init</a>( <a class="code" href="classCanOpen.html">CanOpen</a> &canOpen, <a class="code" href="CML__Utils_8h.html#a10">uint32</a> <span class="keywordtype">id</span> );<a name="l00225"></a>00225 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classReceiver.html#a4">UnInit</a>( <span class="keywordtype">void</span> );<a name="l00226"></a>00226 <a name="l00227"></a>00227 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classReceiver.html#a5">NewFrame</a>( <a class="code" href="structCanFrame.html">CanFrame</a> &frame );<a name="l00228"></a>00228 <a class="code" href="CML__Utils_8h.html#a10">uint32</a> <a class="code" href="classReceiver.html#a6">getRecvID</a>( <span class="keywordtype">void</span> );<a name="l00229"></a>00229 <a name="l00230"></a>00230 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classReceiver.html#a7">EnableReceiver</a>();<a name="l00231"></a>00231 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classReceiver.html#a8">DisableReceiver</a>();<a name="l00232"></a>00232 <span class="comment"></span><a name="l00233"></a>00233 <span class="comment"> /// Return a reference to the CanOpen object </span><a name="l00234"></a>00234 <span class="comment"> /// associated with this receiver</span><a name="l00235"></a>00235 <span class="comment"> /// @return The CanOpen object </span><a name="l00236"></a><a class="code" href="classReceiver.html#a9">00236</a> <span class="comment"></span> <a class="code" href="classCanOpen.html">CanOpen</a> &<a class="code" href="classReceiver.html#a9">GetCanOpen</a>(<span class="keywordtype">void</span>){<a name="l00237"></a>00237 <span class="keywordflow">return</span> *<a class="code" href="classReceiver.html#p0">co</a>;<a name="l00238"></a>00238 }<a name="l00239"></a>00239 <span class="comment"></span><a name="l00240"></a>00240 <span class="comment"> /// Return true if this receiver has been initialized</span><a name="l00241"></a>00241 <span class="comment"> /// @return True if initialized</span><a name="l00242"></a><a class="code" href="classReceiver.html#a10">00242</a> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classReceiver.html#a10">IsInitialized</a>( <span class="keywordtype">void</span> )<a name="l00243"></a>00243 {<a name="l00244"></a>00244 <span class="keywordflow">return</span> <a class="code" href="classReceiver.html#p0">co</a> != 0;<a name="l00245"></a>00245 }<a name="l00246"></a>00246 <a name="l00247"></a>00247 <span class="keyword">protected</span>:<a name="l00248"></a><a class="code" href="classReceiver.html#p0">00248</a> <a class="code" href="classCanOpen.html">CanOpen</a> *<a class="code" href="classReceiver.html#p0">co</a>;<a name="l00249"></a>00249 <a name="l00250"></a>00250 <span class="keyword">private</span>:<a name="l00251"></a>00251 <a class="code" href="CML__Utils_8h.html#a10">uint32</a> id;<a name="l00252"></a>00252 <a class="code" href="classReceiver.html">Receiver</a> *next;<a name="l00253"></a><a class="code" href="classReceiver.html#n0">00253</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classCanOpen.html">CanOpen</a>;<a name="l00254"></a>00254 };<a name="l00255"></a>00255 <a name="l00256"></a>00256 <a name="l00257"></a>00257 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00258"></a>00258 <span class="comment">/**</span><a name="l00259"></a>00259 <span class="comment">CANopen Layer Setting Services object.</span><a name="l00260"></a>00260 <span class="comment"></span><a name="l00261"></a>00261 <span class="comment">The Layer Setting Services (LSS) protocol is part of the CANopen network </span><a name="l00262"></a>00262 <span class="comment">standard. The intent of LSS is to allow low level network settings, such</span><a name="l00263"></a>00263 <span class="comment">as the network bit rate and device node ID numbers to be configured over </span><a name="l00264"></a>00264 <span class="comment">the network.</span><a name="l00265"></a>00265 <span class="comment"></span><a name="l00266"></a>00266 <span class="comment">The CANopen protocol requires each device on the network to have a unique</span><a name="l00267"></a>00267 <span class="comment">node ID number in the range 1 to 127. In general, it's not possible to </span><a name="l00268"></a>00268 <span class="comment">communicate with a device using CANopen if it doesn't have a unique node</span><a name="l00269"></a>00269 <span class="comment">ID in this range.</span><a name="l00270"></a>00270 <span class="comment"></span><a name="l00271"></a>00271 <span class="comment">The LSS protocol allows some limited communication with any device on the </span><a name="l00272"></a>00272 <span class="comment">network even if it doesn't have a node ID set. This allows node ID numbers</span><a name="l00273"></a>00273 <span class="comment">to be assigned to devices over the network.</span><a name="l00274"></a>00274 <span class="comment"></span><a name="l00275"></a>00275 <span class="comment">This object implements the LSS protocol and allows devices on the network</span><a name="l00276"></a>00276 <span class="comment">to be queried and configured. </span><a name="l00277"></a>00277 <span class="comment"></span><a name="l00278"></a>00278 <span class="comment">For more detailed information on the LSS protocol please see the CANopen </span><a name="l00279"></a>00279 <span class="comment">standard document DSP305.</span><a name="l00280"></a>00280 <span class="comment">*/</span><a name="l00281"></a>00281 <span class="comment">/***************************************************************************/</span><a name="l00282"></a><a class="code" href="classLSS.html">00282</a> <span class="keyword">class </span><a class="code" href="classLSS.html">LSS</a>: <span class="keyword">public</span> <a class="code" href="classReceiver.html">Receiver</a><a name="l00283"></a>00283 {<a name="l00284"></a>00284 <a class="code" href="classSemaphore.html">Semaphore</a> sem;<a name="l00285"></a>00285 <a class="code" href="CML__Utils_8h.html#a9">int32</a> timeout;<a name="l00286"></a>00286 <span class="keywordtype">int</span> max, tot;<a name="l00287"></a>00287 <a class="code" href="CML__Utils_8h.html#a6">uint8</a> recvCS;<a name="l00288"></a>00288 <a class="code" href="CML__Utils_8h.html#a10">uint32</a> *serial;<a name="l00289"></a>00289 <a class="code" href="CML__Utils_8h.html#a10">uint32</a> recvData;<a name="l00290"></a>00290 <span class="keyword">public</span>:<a name="l00291"></a>00291 <a class="code" href="classLSS.html#a0">LSS</a>( <a class="code" href="classCanOpen.html">CanOpen</a> &<a class="code" href="classReceiver.html#p0">co</a> );<a name="l00292"></a>00292 <span class="keywordtype">int</span> <a class="code" href="classLSS.html#a1">FindAmplifiers</a>( <span class="keywordtype">int</span> max, <a class="code" href="CML__Utils_8h.html#a10">uint32</a> serial[] );<a name="l00293"></a>00293 <span class="comment"></span><a name="l00294"></a>00294 <span class="comment"> /// Set the timeout value used by the LSS protocol.</span><a name="l00295"></a>00295 <span class="comment"> /// @param to The new timeout (milliseconds)</span><a name="l00296"></a><a class="code" href="classLSS.html#a2">00296</a> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classLSS.html#a2">setTimeout</a>( <a class="code" href="CML__Utils_8h.html#a9">int32</a> to ){ timeout = to; }<a name="l00297"></a>00297 <span class="comment"></span><a name="l00298"></a>00298 <span class="comment"> /// Get the current timeout value used by the LSS protocol</span><a name="l00299"></a>00299 <span class="comment"> /// @return The current timeout in milliseconds.</span><a name="l00300"></a><a class="code" href="classLSS.html#a3">00300</a> <span class="comment"></span> <a class="code" href="CML__Utils_8h.html#a9">int32</a> <a class="code" href="classLSS.html#a3">getTimeout</a>( <span class="keywordtype">void</span> ){ <span class="keywordflow">return</span> timeout; }<a name="l00301"></a>00301 <a name="l00302"></a>00302 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLSS.html#a4">GetAmpNodeID</a>( <a class="code" href="CML__Utils_8h.html#a10">uint32</a> serial, <a class="code" href="CML__Utils_8h.html#a2">byte</a> &nodeID );<a name="l00303"></a>00303 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLSS.html#a5">SetAmpNodeID</a>( <a class="code" href="CML__Utils_8h.html#a10">uint32</a> serial, <a class="code" href="CML__Utils_8h.html#a2">byte</a> nodeID );<a name="l00304"></a>00304 <span class="keyword">protected</span>:<a name="l00305"></a>00305 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLSS.html#b0">SelectAmp</a>( <a class="code" href="CML__Utils_8h.html#a10">uint32</a> serial );<a name="l00306"></a>00306 <a class="code" href="CML__Utils_8h.html#a10">uint32</a> <a class="code" href="classLSS.html#b1">FindAmpSerial</a>( <a class="code" href="CML__Utils_8h.html#a10">uint32</a> low, <a class="code" href="CML__Utils_8h.html#a10">uint32</a> high );<a name="l00307"></a>00307 <span class="keywordtype">int</span> <a class="code" href="classLSS.html#b2">NewFrame</a>( <a class="code" href="structCanFrame.html">CanFrame</a> &frame );<a name="l00308"></a>00308 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLSS.html#b3">Xmit</a>( <a class="code" href="CML__Utils_8h.html#a2">byte</a> cs, <a class="code" href="CML__Utils_8h.html#a10">uint32</a> data=0 );<a name="l00309"></a>00309 };<a name="l00310"></a>00310 <a name="l00311"></a>00311 <a class="code" href="CML__Settings_8h.html#a12">CML_NAMESPACE_END</a>()<a name="l00312"></a>00312 <a name="l00313"></a>00313 #endif<a name="l00314"></a>00314 </pre></div><hr><address style="align: right;"><small>Copley Motion Library, Copyright (c) 2002-2003<a href="http://www.copleycontrols.com"><img src="CCC_logo.gif" alt="Copley Controls Corp." align="middle" border=0 ></a></small></address></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?