I have a CAN-IB600/PCIe and i will write a Net application to communicate a device over CAN which uses extended identification. Since i am not familier with CAN communication, the layout of 32 bit arbitration field got me thinking. Layout is RTR(1 Bit) + Extended Identifier (18 bits) + IDE (1 Bit) + SRR (1 bit) + Identifier (11 Bits), total 32 bits.
When constructing a can message with VCI net API, it seems one can explicitly set the value of SRR, RTR and IDE and identifier as shown below. And identifier is uint, so the question is how does the api fills this arbitration field exactly? Does it automaticly shift 1 bit left for RTR and divide identifier (extended and normal) before shifting for SRR and IDE?
var msg = new CanMessage(); msg.ExtendedFrameFormat = true; msg.FrameType = CanMsgFrameType.Data; msg.DataLength = 1; msg.RemoteTransmissionRequest = true; msg.SelfReceptionRequest = false; msg.Identifier = 0x100;