CanSetChannelAcceptance


機能

受信受容設定をします。

書式

Ret = CanSetChannelAcceptance ( Id , ChannelNo , MessageTypeMask , CanIdMask , CanIdCode )

引数

Id [ VB.NET: Short ] [ C, C++: short ] [ C#: short ]
CanInitで取得したデバイスIDを指定します。

ChannelNo [ VB.NET: UShort ] [ C, C++: unsigned short ] [ C#: ushort ]
チャネル番号を指定します。

MessageTypeMask [ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ]
受信しないメッセージタイプを指定します。
ビット指定されているメッセージタイプが受信対象外となります。

複数のメッセージタイプを指定する場合は、論理和(OR)でビット演算します。
例えば、0x00の場合、メッセージタイプの指定がないため、全メッセージタイプが受信対象となります。

定義


[Hex]

意味

CCAN_MSG_TYPE_DISABLE

0x00

指定なし(全メッセージタイプが受信対象とする)

CCAN_MSG_TYPE_CAN

0x01

CANメッセージ

CCAN_MSG_TYPE_CAN_FD

0x02

CAN FDメッセージ

CCAN_MSG_TYPE_REMOTE_FRAME

0x04

リモートフレーム。 ※CANのみ有効にできます

CCAN_MSG_TYPE_BITRATE_SWITCH

0x08

ビットレートスイッチ。 ※CAN FDのみ有効にできます

CCAN_MSG_TYPE_EXTENDED_FORMAT

0X20

拡張フォーマット

CanIdMask [ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ]
受信対象とするCAN IDのマスク指定をします。

標準フォーマットが指定されている場合は、ベースID(11bit)で指定します。
有効な指定範囲は、0x000~0x7FFです。
0x000を指定すると、すべてのCAN IDメッセージが受信バッファに格納されます。
0x7FFを指定すると、すべてのCAN IDがフィルタ対象となり、CanIdCodeで受信バッファに格納するCAN IDメッセージを指定します。

拡張フォーマットが指定されている場合は、拡張ID + ベースID (合計29bit)で指定します。
有効な指定範囲は、0x000~0x1FFFFFFFです。
0x00000000を指定すると、すべてのCAN IDメッセージが受信バッファに格納されます。
0x1FFFFFFFを指定すると、すべてのCAN IDがフィルタ対象となり、CanIdCodeで受信バッファに格納するCAN IDメッセージを指定します。

CanIdMask
のビット番号

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

拡張ID / ベースID

-

-

-

拡張ID

ベースID

各IDのビット番号

-

-

-

17

16

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

10

09

08

07

06

05

04

03

02

01

00

CanIdCode [ VB.NET: UInteger ] [ C, C++: unsigned long ] [ C#: uint ]
CanIdMask指定でフィルタ対象となったメッセージの中で、受信バッファへ格納するCAN IDをコード指定します。

標準フォーマットが指定されている場合は、ベースID(11bit)で指定します。
有効な指定範囲は、0x000~0x7FFです。

拡張フォーマットが指定されている場合は、拡張ID + ベースID (合計29bit)で指定します。
拡張IDが上位ビット、ベースIDが下位ビットとなります。
有効な指定範囲は、0x000~0x1FFFFFFFです。

CanIdCode
のビット番号

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

拡張ID / ベースID

-

-

-

拡張ID

ベースID

各IDのビット番号

-

-

-

17

16

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

10

09

08

07

06

05

04

03

02

01

00

 

戻り値

Ret [ VB.NET: Integer ] [ C, C++: long ] [ C#: int ]

定義

戻り値

[Dec]

内容

CAN_ERR_SUCCESS

0

正常終了

CAN_ERR_SYS_RECOVERED_FROM_STANDBY

7

スタンバイモードから復帰したため、DioResetDevice関数を実行してください

CAN_ERR_DLL_INVALID_ID

10001

無効なIDが指定されました。

CAN_ERR_DLL_CALL_DRIVER

10002

ドライバーを呼び出せません(デバイスI/Oコントロールに失敗)。

CAN_ERR_SYS_CH_NO

20101

チャネル番号が設定可能範囲外です

CAN_ERR_SYS_DATA_FRAME_FORMAT

20102

データフレームフォーマットが設定可能範囲外です。

その他のエラー(参照:エラーコード詳細

初期値

MessageTypeMask = 0x00 (CCAN_MSG_TYPE_DISABLEL。指定なし(全メッセージタイプが受信対象とする) )
CanIdMask = 0x00000000 (全メッセージが受信バッファへ格納されます)
CanIdCode = 0x00000000

説明

受信受容設定をします。

バス未接続時のみ設定可能です。

1つのCAN IDを受信対象とするだけでなく、CanIdMaskとCanIdCodeを組み合わせることで、複数のCAN IDを受信対象にすることができます。
詳細は、「CanIdMaskとCanIdCodeの設定例」を参照ください。

使用例

ChannelNo = 1へ、標準フォーマットのCAN通信で、CanIdMask = 2047、CanIdCode = 3に設定します。なお、10進数の2047を、16進数で表すと 0x7FFです。

VB.NET

Dim Ret As Integer

Ret = CanSetChannelAcceptance ( Id , 1 , CCAN_MSG_TYPE_CAN , 2047 , 3 )
 

C, C++

long Ret;

Ret = CanSetChannelAcceptance ( Id , 1 , CCAN_MSG_TYPE_CAN , 2047 , 3 );
 

C#

int Ret;

Ret = can.SetChannelAcceptance ( Id , 1 , CCAN_MSG_TYPE_CAN , 2047 , 3 );
 

関連項目

CanGetChannelAcceptance