<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CAN手柄归档 - Kvaser</title>
	<atom:link href="https://www.kvaser.cn/support/developer-blog/tag/can%e6%89%8b%e6%9f%84/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kvaser.cn/support/developer-blog/tag/can手柄/</link>
	<description>先进的CAN总线解决方案专家</description>
	<lastBuildDate>Thu, 19 Dec 2019 09:52:59 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.kvaser.cn/wp-content/uploads/2024/06/favicon-3.ico</url>
	<title>CAN手柄归档 - Kvaser</title>
	<link>https://www.kvaser.cn/support/developer-blog/tag/can手柄/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CAN手柄 vs 通道号</title>
		<link>https://www.kvaser.cn/developer-blog/can-handle-vs-channel-number/</link>
		
		<dc:creator><![CDATA[Magnus Carlsson]]></dc:creator>
		<pubDate>Wed, 03 Jun 2015 17:22:12 +0000</pubDate>
				<guid isPermaLink="false">http://www.kvaser.cn/?post_type=developer_blog&#038;p=7694</guid>

					<description><![CDATA[<p>The post <a href="https://www.kvaser.cn/developer-blog/can-handle-vs-channel-number/">CAN手柄 vs 通道号</a> appeared first on <a href="https://www.kvaser.cn">Kvaser</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row vc_row-fluid"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>在撰写&#8221;<a href="http://www.kvaser.cn/developer-blog/canlib-channel-number-card-number/">CANlib通道号还是卡号？</a>&#8220;一文时，有用户评论要求阐明CanHandle和通道号之间的区别，因为它们都可从零开始。</p>
<p>CAN通道使用CANlib中的<code>canOpenChannel()</code>函数打开，将通道号作为第一个参数。</p>

		</div>
	</div>
<pre class="code-toolbar1 code-wrapper line-numbers"><code class="language-c">CanHandle handle;
canStatus stat;

int canLibChannelNumber = 0;

handle = canOpenChannel(canLibChannelNumber, canOPEN_ACCEPT_VIRTUAL);
if (handle &lt; 0) {
  printf(&quot;canOpenChannel failed, status=%d\n&quot;, stat);
}</code></pre>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>这将返回一个可以是任何非负数的句柄（在第一次调用它时通常为零）。手柄稍后会被用到，如当读取下一个可用的CAN报文时。如果调用<code>tocanOpenChannel()</code>失败，将返回负错误代码，而不是有效的句柄。</p>

		</div>
	</div>
<pre class="code-toolbar1 code-wrapper line-numbers"><code class="language-c">long id;
unsigned char data[8];
unsigned int dlc, flags;
unsigned long timestamp;

stat = canRead(handle, &amp;id, data, &amp;dlc, &amp;flags, &amp;timestamp);
if (stat != canERR_NOMSG) {
  printf(&quot;Failed, status == %d\n&quot;, stat);
}</code></pre>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>句柄是内部的正数，不能手动编辑。如前所述，CANlib中返回的<code>CanHandle</code>可能与通道号混淆，但新版库，如kvrlib，则会返回一个更大更随机的数字，以降低混淆的风险。</p>
<p>我建议我们应该养成习惯将句柄声明为<code>CanHandle</code>（而不是int），从而清楚地标记句柄。在此建议的同时，也鼓励大家始终检查返回状态，就像上面对<code>canRead()</code> 所做的那样。当出现错误时，这将有助于缩短调试时间。</p>

		</div>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://www.kvaser.cn/developer-blog/can-handle-vs-channel-number/">CAN手柄 vs 通道号</a> appeared first on <a href="https://www.kvaser.cn">Kvaser</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
