//initialise the usb interface library based on which interface was selected public static void initialiseCAN() { for (int i = 0; i < CAN_Channel.numOfChan; i++) { switch (CAN_Channel._INTERFACEs[i]) { case CAN_Channel.CAN_INTERFACE.KVASER: if (!KvaserInit) { Canlib.canInitializeLibrary(); } if (CanInit) { Close(); } numOfKvaser++; canHandle[i] = Canlib.canOpenChannel(numOfKvaser - 1, Canlib.canOPEN_ACCEPT_VIRTUAL); KvaserInit = true; //check whether handle was gotten successfully ErrorControl(handle: canHandle[i], location: "canOpenChannel: initialise()"); switch (CAN_Channel._BAUDRATEs[i]) { case CAN_Channel.CAN_BAUDRATE._250K: status = Canlib.canSetBusParams(canHandle[i], Canlib.canBITRATE_250K, 0, 0, 0, 0, 0); break; case CAN_Channel.CAN_BAUDRATE._500K: status = Canlib.canSetBusParams(canHandle[i], Canlib.canBITRATE_500K, 0, 0, 0, 0, 0); break; case CAN_Channel.CAN_BAUDRATE._1M: status = Canlib.canSetBusParams(canHandle[i], Canlib.canBITRATE_1M, 0, 0, 0, 0, 0); break; } ErrorControl(status: status, location: "canSetBusParams: initialise()"); Canlib.canSetBusOutputControl(canHandle[i], Canlib.canDRIVER_NORMAL); //turn the bus on with a handle to the open channel to write data Canlib.canBusOn(canHandle[i]); break; case CAN_Channel.CAN_INTERFACE.PEAK: if (CanInit) { Close(); } numOfPeak++; if (numOfPeak == 1) { canHandle[i] = PCANBasic.PCAN_USBBUS1; } if (numOfPeak == 2) { canHandle[i] = PCANBasic.PCAN_USBBUS2; } switch (CAN_Channel._BAUDRATEs[i]) { case CAN_Channel.CAN_BAUDRATE._250K: pCANBaudrate[numOfPeak - 1] = TPCANBaudrate.PCAN_BAUD_250K; break; case CAN_Channel.CAN_BAUDRATE._500K: pCANBaudrate[numOfPeak - 1] = TPCANBaudrate.PCAN_BAUD_500K; break; case CAN_Channel.CAN_BAUDRATE._1M: pCANBaudrate[numOfPeak - 1] = TPCANBaudrate.PCAN_BAUD_1M; break; } if (PCANBasic.Initialize((ushort)canHandle[i], pCANBaudrate[numOfPeak - 1]) == TPCANStatus.PCAN_ERROR_INITIALIZE) { ErrorControl(-1, location: "PCANBasic.initialize: initialise()"); return; } break; } } CanInit = true; numOfPeak = 0; numOfKvaser = 0; }