private bool term_requested = false; ///< thread termination flag #endregion Fields #region Constructors //------------------------------------------------------------------------- /** Default constructor. */ public CanDODevice() { // create adapter object CANdoUSB = new TCANdoUSB(); CANdoUSB.OpenFlag = CLOSED; // Create a store for CAN receive messages CANDataBuffer = new TCANdoCAN[CAN_BUFFER_LENGTH]; // Cyclic buffer data CANBufferControl = new TCANdoCANBufferControl(); // Cyclic buffer control CANDataType = typeof(TCANdoCAN); CANDataSize = Marshal.SizeOf(CANDataType); CANBufferControlType = typeof(TCANdoCANBufferControl); CANBufferControlSize = Marshal.SizeOf(CANBufferControlType); CANBufferSize = CANDataBuffer.Length * CANDataSize + CANBufferControlSize; CANBufferPointer = Marshal.AllocHGlobal(CANBufferSize); // Allocate unmanaged memory for the CAN receive message cyclic buffer CANBufferControlPointer = (IntPtr)(((int)CANBufferPointer) + CANDataBuffer.Length * CANDataSize); CANBufferControl.WriteIndex = 0; // Reset cyclic buffer CANBufferControl.ReadIndex = 0; CANBufferControl.FullFlag = 0; Marshal.StructureToPtr(CANBufferControl, CANBufferControlPointer, true); // Update unmanaged memory // Create a store for status message CANdoStatus = new TCANdoStatus(); // create reader thread this.read_thread = new Thread(this.read_messages); Debug.Assert(read_thread != null); }
public static extern int CANdoSetBaudRate( [InAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer, byte SJW, byte BRP, byte PHSEG1, byte PHSEG2, byte PROPSEG, byte SAM);
public static extern int CANdoSetMode( [InAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer, byte Mode);
public static extern int CANdoFlushBuffers( [InAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer);
public static extern void CANdoClose( [OutAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer);
public static extern int CANdoOpen( [OutAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer);
public static extern int CANdoRequestStatus( [InAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer);
public static extern int CANdoReceive( [InAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoUSB CANdoUSBPointer, IntPtr CANdoCANBufferPointer, [OutAttribute, MarshalAs(UnmanagedType.LPStruct)] TCANdoStatus CANdoStatusPointer);