CANlib バス設定(仮想モード時)

まずはこちらを確認(ページ上部のデバイスとバスの接続図)

https://www.kvaser.com/developer-blog/use-kvaser-virtual-device-channel-bus/


仮想モードで接続すると、

異なるチャネルに接続しても、デフォルトでは同じバス(Bus 0)で繋がっているため、

チャネル0で送信したCANデータを、チャネル1で受信することが出来る


var handle1 = Canlib.canOpenChannel(0 /* チャネル0 */, 0);

var handle2 = Canlib.canOpenChannel(1 /* チャネル1 */, 0);

冒頭のリンクにも記載されているが、別バスとして扱いたい場合は、

チャネル毎にバス番号を設定する必要がある



STEP 1:バス切断

最初に現在ハンドルに紐づいているバスをすべて切断

※リンク先でもぶん回せばOKと記載してたのでそのまま実装w

for(var i = 0; i < 32; i++)

{

  Canlib.canIoCtl(handle1, Canlib.canIOCTL_DISCONNECT_FROM_VIRTUAL_BUS, i);

  Canlib.canIoCtl(handle2, Canlib.canIOCTL_DISCONNECT_FROM_VIRTUAL_BUS, i);

}


STEP 2:バス設定

チャネル毎にバス番号を設定する

Canlib.canIoCtl(handle1, Canlib.canIOCTL_CONNECT_TO_VIRTUAL_BUS, 0 /* バス番号 */);

Canlib.canIoCtl(handle2, Canlib.canIOCTL_CONNECT_TO_VIRTUAL_BUS, 1 /* バス番号 */);



以上で完了となります。設定後は下図のようなイメージですね

0コメント

  • 1000 / 1000