A:
CAN FD通信の概要については、「CAN2.0B通信とCAN FD通信の違い」を参照ください。
①CAN FD通信は、アービトレーション領域に対するビットレート設定と、データ領域に対するビットレート設定には異なる値を指定できます。
その際、CanTransmit関数のMessageType引数で、CAN
FDメッセージ(CCAN_MSG_TYPE_CAN_FD)とともに、ビットレートスイッチ(CCAN_MSG_TYPE_BITRATE_SWITCH)が必要になります。
②同じCAN経路上のアービトレーション領域及び、データ領域に対する各ビットレート設定とサンプリングポイントは、送信デバイスと受信デバイスで同等の設定を行ってください。
設定には、CanSetCanFdTiming関数を使用します。
また、設定値を確認する場合は、CanGetCanFdTiming関数を使用します。
詳細は、各関数の関数リファレンスを参照ください。
CANデバイスのChannelNo = 1から、CAN FD送信。
MessageNum =1、CAN ID = 0x11c、DataLength
= 1 、Data = 0xff
VB.NET |
Dim Ret As Integer Dim MessageType(0) As UInteger Dim CanId(0) As UInteger Dim DataLength(0) As UShort Dim Data(0)(63) As Byte
MessageType(0) = CCAN_MSG_TYPE_CAN_FD Or CCAN_MSG_TYPE_BITRATE_SWITCH CanId(0) = &H11C Data(0)(0) = &HFF
Ret = CanTransmit ( Id
, 1 , 1 , MessageType , CanId , Data ) |
C, C++ |
long Ret; unsinged long MessageType[1]; unsinged long CanId[1]; unsinged short DataLength[1]; unsinged char Data[1][64];
MessageType[0] = CCAN_MSG_TYPE_CAN_FD | CCAN_MSG_TYPE_BITRATE_SWITCH; CanId[0] = 0x11c; Data[0][0] = 0xff;
|
C# |
int Ret; uint[] MessageType = new unit[1]; uint[] CanId = new uint[1]; ushort[] DataLength = new ushort[1]; ubyte[,] Data = new ubyte[1,64];
MessageType[0] = CCAN_MSG_TYPE_CAN_FD | CCAN_MSG_TYPE_BITRATE_SWITCH; CanId[0] = 0x11c; Data[0,0] = 0xff;
|
Python |
Ret = ctypes.c_long() MessageTypeType = ctypes.c_uint() * 1 MessageType = MessageTypeType() CanIdType = ctypes.c_uint() * 1 CanId = CanIdType() DataLengthType = ctypes.c_ushort() *1 DataLength = DataLengthType() SingleDataType = ctypes.c_ubyte() * 64 DataType = ctypes.SingleDataType * 1 Data = DataType()
MessageType[0] = ccan.CCAN_MSG_TYPE_CAN_FD | ccan.CCAN_MSG_TYPE_BITRATE_SWITCH CanId[0] = 0x11c DataLength[0] = 1 Data[0][0] = 0xff
Ret.value = ccan.CanTransmit ( Id , 1 , DataLength , MessageType , CanId , Data )
|