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

📄 node_8cpp-source.html

📁 美国COPLEY驱动器,程序开发工具之一.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00258"></a>00258       }<a name="l00259"></a>00259       <span class="keywordflow">if</span>( i == ct )<a name="l00260"></a>00260     done = <span class="keyword">true</span>;<a name="l00261"></a>00261    }<a name="l00262"></a>00262 <a name="l00263"></a>00263    <span class="keywordflow">if</span>( !done )<a name="l00264"></a>00264    {<a name="l00265"></a>00265       <span class="comment">// Clear out any old mapping</span><a name="l00266"></a>00266       err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a12">Dnld8</a>( base, 0, (<a class="code" href="CML__Utils_8h.html#a2">byte</a>)0 );<a name="l00267"></a>00267       <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00268"></a>00268 <a name="l00269"></a>00269       <span class="comment">// Download the new mapping</span><a name="l00270"></a>00270       <span class="keywordflow">for</span>( <a class="code" href="CML__Utils_8h.html#a2">byte</a> i=0; i&lt;ct; i++ )<a name="l00271"></a>00271       {<a name="l00272"></a>00272     err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a8">Dnld32</a>( base, i+1, codes[i] );<a name="l00273"></a>00273     <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00274"></a>00274       }<a name="l00275"></a>00275 <a name="l00276"></a>00276       <span class="comment">// Active the new mapping</span><a name="l00277"></a>00277       err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a12">Dnld8</a>( base, 0, ct );<a name="l00278"></a>00278       <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00279"></a>00279    }<a name="l00280"></a>00280 <a name="l00281"></a>00281    <span class="comment">// Enable the PDO if so requested</span><a name="l00282"></a>00282    <span class="keywordflow">if</span>( enable )<a name="l00283"></a>00283       <span class="keywordflow">return</span> <a class="code" href="classNode.html#a9">PdoEnable</a>( slot, pdo );<a name="l00284"></a>00284 <a name="l00285"></a>00285    <span class="keywordflow">return</span> 0;<a name="l00286"></a>00286 }<a name="l00287"></a>00287 <a name="l00288"></a>00288 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00289"></a>00289 <span class="comment">/**</span><a name="l00290"></a>00290 <span class="comment">Enable the specified PDO.  When this function is called it is assumed</span><a name="l00291"></a>00291 <span class="comment">that the PDO has already be setup.</span><a name="l00292"></a>00292 <span class="comment">@param n The slot number of the PDO to enable</span><a name="l00293"></a>00293 <span class="comment">@param base The index number in the object dictionary where this type</span><a name="l00294"></a>00294 <span class="comment">       of PDO starts (0x1800 for transmit, 0x1400 for receive)</span><a name="l00295"></a>00295 <span class="comment">@return A pointer to an error object, or NULL on success</span><a name="l00296"></a>00296 <span class="comment">*/</span><a name="l00297"></a>00297 <span class="comment">/***************************************************************************/</span><a name="l00298"></a>00298 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classNode.html#a9">Node::PdoEnable</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> n, <a class="code" href="CML__Utils_8h.html#a8">uint16</a> base )<a name="l00299"></a>00299 {<a name="l00300"></a>00300    <span class="comment">// Make sure the slot is reasonable.</span><a name="l00301"></a>00301    <span class="keywordflow">if</span>( n &gt; 511 )<a name="l00302"></a>00302       <span class="keywordflow">return</span> &amp;<a class="code" href="classCanOpenError.html#s1">CanOpenError::BadParam</a>;<a name="l00303"></a>00303 <a name="l00304"></a>00304    n += base;<a name="l00305"></a>00305 <a name="l00306"></a>00306    <span class="comment">// Upload the PDO's ID</span><a name="l00307"></a>00307    <a class="code" href="CML__Utils_8h.html#a10">uint32</a> id;<a name="l00308"></a>00308    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a9">Upld32</a>( n, 1, <span class="keywordtype">id</span> );<a name="l00309"></a>00309    <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00310"></a>00310 <a name="l00311"></a>00311    <span class="comment">// If it's not yet enabled, enable it</span><a name="l00312"></a>00312    <span class="keywordflow">if</span>( <span class="keywordtype">id</span> &amp; 0x80000000 )<a name="l00313"></a>00313       err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a8">Dnld32</a>( n, 1, <span class="keywordtype">id</span>&amp;0x7fffffff );<a name="l00314"></a>00314 <a name="l00315"></a>00315    <span class="keywordflow">return</span> err;<a name="l00316"></a>00316 }<a name="l00317"></a>00317 <a name="l00318"></a>00318 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00319"></a>00319 <span class="comment">/**</span><a name="l00320"></a>00320 <span class="comment">Disable the specified PDO.</span><a name="l00321"></a>00321 <span class="comment">@param n The slot number of the transmit PDO to disable</span><a name="l00322"></a>00322 <span class="comment">@param base The index number in the object dictionary where this type</span><a name="l00323"></a>00323 <span class="comment">       of PDO starts (0x1800 for transmit, 0x1400 for receive)</span><a name="l00324"></a>00324 <span class="comment">@return A pointer to an error object, or NULL on success</span><a name="l00325"></a>00325 <span class="comment">*/</span><a name="l00326"></a>00326 <span class="comment">/***************************************************************************/</span><a name="l00327"></a>00327 <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classNode.html#a10">Node::PdoDisable</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> n, <a class="code" href="CML__Utils_8h.html#a8">uint16</a> base )<a name="l00328"></a>00328 {<a name="l00329"></a>00329    <span class="comment">// Make sure the slot is reasonable.</span><a name="l00330"></a>00330    <span class="keywordflow">if</span>( n &gt; 511 )<a name="l00331"></a>00331       <span class="keywordflow">return</span> &amp;<a class="code" href="classCanOpenError.html#s1">CanOpenError::BadParam</a>;<a name="l00332"></a>00332 <a name="l00333"></a>00333    n += base;<a name="l00334"></a>00334 <a name="l00335"></a>00335    <span class="comment">// Upload the PDO's ID</span><a name="l00336"></a>00336    <a class="code" href="CML__Utils_8h.html#a10">uint32</a> id;<a name="l00337"></a>00337    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a9">Upld32</a>( n, 1, <span class="keywordtype">id</span> );<a name="l00338"></a>00338    <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00339"></a>00339 <a name="l00340"></a>00340    <span class="comment">// If it's enabled, disable it</span><a name="l00341"></a>00341    <span class="keywordflow">if</span>( !(<span class="keywordtype">id</span> &amp; 0x80000000) )<a name="l00342"></a>00342       err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a8">Dnld32</a>( n, 1, (<a class="code" href="CML__Utils_8h.html#a10">uint32</a>)(<span class="keywordtype">id</span>|0x80000000) );<a name="l00343"></a>00343 <a name="l00344"></a>00344    <span class="keywordflow">return</span> err;<a name="l00345"></a>00345 }<a name="l00346"></a>00346 <a name="l00347"></a>00347 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00348"></a>00348 <span class="comment">/**</span><a name="l00349"></a>00349 <span class="comment">Get the error history array (CANopen object 0x1003).</span><a name="l00350"></a>00350 <span class="comment"></span><a name="l00351"></a>00351 <span class="comment">@param ct    When the function is first called, this variable holds the maximum number</span><a name="l00352"></a>00352 <span class="comment">             of errors that can be stored in the err array (i.e. the length of the array).</span><a name="l00353"></a>00353 <span class="comment">             On return, the actual number of errors uploaded will be stored here.</span><a name="l00354"></a>00354 <span class="comment">@param array An array of 32-bit integers that will be used to return the list of errors.</span><a name="l00355"></a>00355 <span class="comment">@return A pointer to an error object, or NULL on success</span><a name="l00356"></a>00356 <span class="comment">*/</span><a name="l00357"></a>00357 <span class="comment">/***************************************************************************/</span><a name="l00358"></a><a class="code" href="classNode.html#a24">00358</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classNode.html#a24">Node::GetErrorHistory</a>( <a class="code" href="CML__Utils_8h.html#a8">uint16</a> &amp;ct, <a class="code" href="CML__Utils_8h.html#a10">uint32</a> *array )<a name="l00359"></a>00359 {<a name="l00360"></a>00360    <a class="code" href="CML__Utils_8h.html#a10">uint32</a> i;<a name="l00361"></a>00361 <a name="l00362"></a>00362    <span class="comment">// Upload the first element in the error array.</span><a name="l00363"></a>00363    <span class="comment">// This holds the actual number of errors in it's </span><a name="l00364"></a>00364    <span class="comment">// lowest byte.</span><a name="l00365"></a>00365    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a9">Upld32</a>( 0x1003, 0, i );<a name="l00366"></a>00366    <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00367"></a>00367 <a name="l00368"></a>00368    <span class="keywordflow">if</span>( i &gt; 254 ) i = 254;<a name="l00369"></a>00369 <a name="l00370"></a>00370    <span class="comment">// Limit the number of errors to download to ct</span><a name="l00371"></a>00371    <span class="keywordflow">if</span>( i &lt; (<a class="code" href="CML__Utils_8h.html#a10">uint32</a>)ct ) ct = i;<a name="l00372"></a>00372 <a name="l00373"></a>00373    <span class="keywordflow">for</span>( i=1; i&lt;=(<a class="code" href="CML__Utils_8h.html#a10">uint32</a>)ct; i++ )<a name="l00374"></a>00374    {<a name="l00375"></a>00375       err = <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a9">Upld32</a>( 0x1003, i, array[i-1] );<a name="l00376"></a>00376       <span class="keywordflow">if</span>( err ) <span class="keywordflow">return</span> err;<a name="l00377"></a>00377    }<a name="l00378"></a>00378 <a name="l00379"></a>00379    <span class="keywordflow">return</span> 0;<a name="l00380"></a>00380 }<a name="l00381"></a>00381 <a name="l00382"></a>00382 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00383"></a>00383 <span class="comment">/**</span><a name="l00384"></a>00384 <span class="comment">Get the CANopen identity object for this node (object dictionary entry 0x1018).</span><a name="l00385"></a>00385 <span class="comment">Note that only the VendorID field is mandatory.  Any unsupported fields will</span><a name="l00386"></a>00386 <span class="comment">be returned as zero.</span><a name="l00387"></a>00387 <span class="comment"></span><a name="l00388"></a>00388 <span class="comment">@param id The identity object to be filled in by this call</span><a name="l00389"></a>00389 <span class="comment">@return A pointer to an error object, or NULL on success</span><a name="l00390"></a>00390 <span class="comment">*/</span>

⌨️ 快捷键说明

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