在写入和读取扩展仲裁ID之前,必须将其进行转换。在使用
ncWriteNet.vi或
ncWriteNetMult.vi写入仲裁ID之前,必须使用十六进制数0x20000000对扩展仲裁ID进行
或运算。若使用
ncReadNet.vi或
ncReadNetMult.vi对该扩展仲裁ID进行读取,则必须使用相同的十六进制数0x20000000进行
异或运算,这样才能读取到正确的仲裁ID。
这样做的原因在于:仲裁ID由32位比特数表示,而其中第30位则被用于标识扩展或标准仲裁ID。第30位为高表示该仲裁ID为扩展仲裁ID,使用29位比特数。当第30位为低时,则表示该仲裁ID为标准仲裁ID,使用11位比特数表示。
注意:大多数范例并不包含该逻辑,因此它们不支持扩展仲裁ID。其中一个支持扩展仲裁ID的范例是“
Transmit Receive same Port.vi ”,您可以在NI范例查找器中找到这个NI-CAN的范例。
该范例的前面板如
图1所示 ,您可以手动设置是否使用扩展ID。
图1