CANlib 同じチャネルを複数オープンした場合

同じチャネルのハンドルを取得した場合、

var channel = 0;

var handle1 = Canlib.canOpenChannel(channel, 0);

var handle2 = Canlib.canOpenChannel(channel, 0);


1回目に開いたハンドルでCAN送信すると、

Canlib.canWrite(handle1, id, msg, dlc, 0);


2回目に開いたハンドルでCAN受信することが出来る(デフォルト動作)

Canlib.canRead(_handle2, out var id, msg, out var dlc, out var flag, out var time);


これは抑止するためには、以下処理を実装すれば良い(バスON前に設定)

Canlib.canIoCtl(handle1, Canlib.canIOCTL_SET_LOCAL_TXECHO, 0);


CANlib SDK:

canIoCtrl

https://www.kvaser.com/canlib-webhelp/group__can__general.html#gacef9be3499b47381587121437d9386ba

canIOCTL_SET_LOCAL_TXECHO

https://www.kvaser.com/canlib-webhelp/canlib_8h.html#a86f7ce6c809f30983b69ead49d793689

0コメント

  • 1000 / 1000