// CAN return rate public static string CanRateReturn(string canInterface) { try { string hardwareString0 = canInterface.Replace(" ", ""); string[] msgOutput = hardwareString0.Split(';'); ECOMLibrary.DeviceInfo di = new ECOMLibrary.DeviceInfo(); // ECom can return // NOTE: ECom API does not have a bus parameter call if (msgOutput[2] == "ECom") { // Finds the open ECom Adapters UInt32 deviceSearch = ECOMLibrary.StartDeviceSearch(ECOMLibrary.FIND_OPEN); while (deviceSearch != 0 && ECOMLibrary.FindNextDevice(deviceSearch, ref di) == ECOMLibrary.ECI_NO_ERROR) { if (di.CANOpen != 0) { return(Convert.ToString(di.SerialNumber)); } } ECOMLibrary.CloseDeviceSearch(deviceSearch); } return(null); } catch (Exception) { ErrorLog.NewLogEntry("Adapter", "ECom library not found"); return(null); } } // End GenericCanRateReturn
} // End DetectCanInterfaces // *************************************** // GenericCanBusOn // Turns canInterface on based on User Selection // *************************************** public static int CanBusOn(string canInterface, string bitRateSetting) { string hardwareString0 = canInterface.Replace(" ", ""); string[] msgOutput = hardwareString0.Split(';'); Byte ReturnError = 0; //This will be used for all error return status codes UInt32 EcomHandle; //This will be the HANDLE to our ECOM device used for all function calls byte EComCANBitrate = ECOMLibrary.CAN_BAUD_500K; ECOMLibrary.DeviceInfo di = new ECOMLibrary.DeviceInfo(); // Assigns settings for the adapter if (bitRateSetting == "1M") { EComCANBitrate = ECOMLibrary.CAN_BAUD_1MB; } else if (bitRateSetting == "500K") { EComCANBitrate = ECOMLibrary.CAN_BAUD_500K; } else if (bitRateSetting == "250K") { EComCANBitrate = ECOMLibrary.CAN_BAUD_250K; } else if (bitRateSetting == "125K") { EComCANBitrate = ECOMLibrary.CAN_BAUD_125K; } else if (bitRateSetting == "100K" || msgOutput[4] == "62K" || msgOutput[4] == "50K" || msgOutput[4] == "33K") { MainWindow.ErrorDisplayString("ECom Adapter does not support low speed CAN (100K, 62K, 50K, 33K)"); return(-1); } EcomHandle = ECOMLibrary.CANOpen(Convert.ToUInt32(msgOutput[3]), EComCANBitrate, ref ReturnError); //MainWindow.ErrorDisplayString("ECom Handle: " + Convert.ToString(EcomHandle)); BusInterface.AddHandle(canInterface, (int)EcomHandle); if (EcomHandle == 0 || ReturnError != 0) { StringBuilder ErrMsg = new StringBuilder(400); ECOMLibrary.GetFriendlyErrorMessage(ReturnError, ErrMsg, 400); MainWindow.ErrorDisplayString("CANOpen failed with error message: " + ErrMsg); return(-1); } ECOMLibrary.GetDeviceInfo(EcomHandle, ref di); ErrorLog.NewLogEntry("CAN", "Bus On: " + di.SerialNumber); return(1); }
// *************************************** // GenericCanBusOn // Turns canInterface on based on User Selection // *************************************** public static int CanBusOn(string canInterface, string bitRateSetting) { string hardwareString0 = canInterface.Replace(" ", ""); string[] msgOutput = hardwareString0.Split(';'); Byte ReturnError = 0; //This will be used for all error return status codes UInt32 EcomHandle; //This will be the HANDLE to our ECOM device used for all function calls byte EComCANBitrate = ECOMLibrary.CAN_BAUD_500K; ECOMLibrary.DeviceInfo di = new ECOMLibrary.DeviceInfo(); // Assigns settings for the adapter if (bitRateSetting == "1M") EComCANBitrate = ECOMLibrary.CAN_BAUD_1MB; else if (bitRateSetting == "500K") EComCANBitrate = ECOMLibrary.CAN_BAUD_500K; else if (bitRateSetting == "250K") EComCANBitrate = ECOMLibrary.CAN_BAUD_250K; else if (bitRateSetting == "125K") EComCANBitrate = ECOMLibrary.CAN_BAUD_125K; else if (bitRateSetting == "100K" || msgOutput[4] == "62K" || msgOutput[4] == "50K" || msgOutput[4] == "33K") { MainWindow.ErrorDisplayString("ECom Adapter does not support low speed CAN (100K, 62K, 50K, 33K)"); return -1; } EcomHandle = ECOMLibrary.CANOpen(Convert.ToUInt32(msgOutput[3]), EComCANBitrate, ref ReturnError); //MainWindow.ErrorDisplayString("ECom Handle: " + Convert.ToString(EcomHandle)); BusInterface.AddHandle(canInterface, (int)EcomHandle); if (EcomHandle == 0 || ReturnError != 0) { StringBuilder ErrMsg = new StringBuilder(400); ECOMLibrary.GetFriendlyErrorMessage(ReturnError, ErrMsg, 400); MainWindow.ErrorDisplayString("CANOpen failed with error message: " + ErrMsg); return -1; } ECOMLibrary.GetDeviceInfo(EcomHandle, ref di); ErrorLog.NewLogEntry("CAN", "Bus On: " + di.SerialNumber); return 1; }
} // End GenericCanRateReturn // *************************************** // DetectCanInterfaces // Pulls all of the available adapters for the CAN bus // *************************************** public static void DetectCanInterfaces() { // Detect Process for ECom devices try { ECOMLibrary.DeviceInfo di = new ECOMLibrary.DeviceInfo(); UInt32 deviceSearch = ECOMLibrary.StartDeviceSearch(ECOMLibrary.FIND_ALL); while (deviceSearch != 0 && ECOMLibrary.FindNextDevice(deviceSearch, ref di) == ECOMLibrary.ECI_NO_ERROR) { BusInterface.AddInterface("CAN;" + "CANCapture" + ";" + "ECom" + ";" + di.SerialNumber, -1); ErrorLog.NewLogEntry("CAN", "Detect CAN: " + di.SerialNumber); } ECOMLibrary.CloseDeviceSearch(deviceSearch); } catch (Exception) { ErrorLog.NewLogEntry("Adapter", "ECom library not found"); } } // End DetectCanInterfaces
// *************************************** // DetectCanInterfaces // Pulls all of the available adapters for the CAN bus // *************************************** public static void DetectCanInterfaces() { // Detect Process for ECom devices try { ECOMLibrary.DeviceInfo di = new ECOMLibrary.DeviceInfo(); UInt32 deviceSearch = ECOMLibrary.StartDeviceSearch(ECOMLibrary.FIND_ALL); while (deviceSearch != 0 && ECOMLibrary.FindNextDevice(deviceSearch, ref di) == ECOMLibrary.ECI_NO_ERROR) { BusInterface.AddInterface("CAN;" + "CANCapture" + ";" + "ECom" + ";" + di.SerialNumber, -1); ErrorLog.NewLogEntry("CAN", "Detect CAN: " + di.SerialNumber); } ECOMLibrary.CloseDeviceSearch(deviceSearch); } catch (Exception) { ErrorLog.NewLogEntry("Adapter", "ECom library not found"); } }
// CAN return rate public static string CanRateReturn(string canInterface) { try { string hardwareString0 = canInterface.Replace(" ", ""); string[] msgOutput = hardwareString0.Split(';'); ECOMLibrary.DeviceInfo di = new ECOMLibrary.DeviceInfo(); // ECom can return // NOTE: ECom API does not have a bus parameter call if (msgOutput[2] == "ECom") { // Finds the open ECom Adapters UInt32 deviceSearch = ECOMLibrary.StartDeviceSearch(ECOMLibrary.FIND_OPEN); while (deviceSearch != 0 && ECOMLibrary.FindNextDevice(deviceSearch, ref di) == ECOMLibrary.ECI_NO_ERROR) { if (di.CANOpen != 0) return Convert.ToString(di.SerialNumber); } ECOMLibrary.CloseDeviceSearch(deviceSearch); } return null; } catch (Exception) { ErrorLog.NewLogEntry("Adapter", "ECom library not found"); return null; } }