まずはこちらを確認(ページ上部のデバイスとバスの接続図)
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コメント