Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public static extern int CANdoSetBaudRate(
     [InAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer,
     byte SJW, byte BRP, byte PHSEG1, byte PHSEG2, byte PROPSEG, byte SAM);
Exemplo n.º 3
0
 public static extern int CANdoSetMode(
     [InAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer,
     byte Mode);
Exemplo n.º 4
0
 public static extern int CANdoFlushBuffers(
     [InAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer);
Exemplo n.º 5
0
 public static extern void CANdoClose(
     [OutAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer);
Exemplo n.º 6
0
 public static extern int CANdoOpen(
     [OutAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer);
Exemplo n.º 7
0
 public static extern int CANdoRequestStatus(
     [InAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer);
Exemplo n.º 8
0
 public static extern int CANdoReceive(
     [InAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoUSB CANdoUSBPointer,
     IntPtr CANdoCANBufferPointer,
     [OutAttribute, MarshalAs(UnmanagedType.LPStruct)]
     TCANdoStatus CANdoStatusPointer);