static Program() { tclsErrlog.OpenLog(AppDomain.CurrentDomain.BaseDirectory); tclsDataPage.vSetWorkingBaseAddress(tclsASAM.u32GetCharMinAddress()); tclsErrlog.LogAppend("ASAM parsed..."); mProgramTextForecolor = System.Drawing.Color.Aquamarine; mProgramTextBackcolor = System.Drawing.Color.Black; mProgramTextToggleBackcolor = System.Drawing.Color.DarkSlateGray; mSplashLoading = true; mSplashWorker = new BackgroundWorker(); mSplashWorker.DoWork += new DoWorkEventHandler(Splash); tclsErrlog.LogAppend("Splash started..."); mFileOpenWorker = new BackgroundWorker(); mFileOpenWorker.DoWork += new DoWorkEventHandler(FileOpen); mSplashWorker.RunWorkerAsync(); try { mszAdapterDeviceName = mAPP_mclsIniParser.GetSetting("NetworkConnection", "SelectedDevice"); tclsErrlog.LogAppend("Adapter Device Name: " + mszAdapterDeviceName); } catch { mszAdapterDeviceName = "Unknown"; } mszCalibrationFilePath = null; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); mFormUDP = new tclsMDIParent(); tclsErrlog.LogAppend("MDI created..."); mAPP_clsUDPComms = new tclsUDSComms(mszAdapterDeviceName, mFormUDP.Handle); mboCommsOnline = mAPP_clsUDPComms.Connected; tclsErrlog.LogAppend("CommsOnline: " + mboCommsOnline.ToString()); if (false == mboCommsOnline) { mAPP_clsUDPComms.vDispose(); } mboCommsSuspend = true; UInt16 u16ASAMCRC = tclsASAM.u16GetCRC16(); //if (0 != u16ASAMCRC) if (39430 != u16ASAMCRC) { Program.vNotifyProgramEvent(tenProgramEvent.enProgramMessage, 0, "ASAM file does not contain a correct CRC"); } else { tclsErrlog.LogAppend("ASAM CRC correct..."); } }
public bool CommsTryConnect(tclsUDSComms clsUDSComms, string szIniFilePath, int iReceiveMaxLength) { tclsIniParser mclsIniParser; string szDLL; string szBaud; int iBaud = 0; string szDeviceSerial; string szConnectionType; string szCommPort; string szDiagRXID; string szDiagTXID; UInt32 u32DiagRXID = 0; UInt32 u32DiagTXID = 0; mclsUDSComms = clsUDSComms; mclsIniParser = new tclsIniParser(szIniFilePath); try { szConnectionType = mclsIniParser.GetSetting("Program", "ConnectionType"); if (0 == String.Compare(szConnectionType, "CANAL")) { menCommsType = tenCommsType.enCANAL; } if (0 == String.Compare(szConnectionType, "CANRP1210")) { menCommsType = tenCommsType.enCANRP1210; } if (0 == String.Compare(szConnectionType, "USBCDC")) { menCommsType = tenCommsType.enUSBCDC; } if (0 == String.Compare(szConnectionType, "Serial")) { menCommsType = tenCommsType.enSerial; } if (0 == String.Compare(szConnectionType, "CANLIBKVASER")) { menCommsType = tenCommsType.enCANLIBKVASER; } } catch { szConnectionType = null; } try { szBaud = mclsIniParser.GetSetting("Devices", "ComsBaud"); iBaud = Convert.ToInt16(szBaud); } catch { szBaud = null; } try { szDeviceSerial = mclsIniParser.GetSetting("Devices", "ComsDeviceSerial"); } catch { szDeviceSerial = null; } try { szDLL = mclsIniParser.GetSetting("Devices", "RP1210Lib"); } catch { szDLL = "Unknown"; } try { szDiagRXID = mclsIniParser.GetSetting("Devices", "ComsDiagIDRX"); u32DiagRXID = Convert.ToUInt32(szDiagRXID); } catch { szDiagRXID = null; } try { szDiagTXID = mclsIniParser.GetSetting("Devices", "ComsDiagIDTX"); u32DiagTXID = Convert.ToUInt32(szDiagTXID); } catch { szDiagTXID = null; } try { szCommPort = mclsIniParser.GetSetting("Devices", "ComsPort"); } catch { szCommPort = null; } switch (menCommsType) { case tenCommsType.enCANAL: { if ((null != szDeviceSerial) && (null != szBaud) && (null != szDiagRXID)) { try { mclsUSB2CAN64Interface = new MDACUSB2CAN64Interface.tclsMDACUSB2CAN64Interface(szDeviceSerial, szBaud); mclsUSB2CAN64Interface.DataReceived += new MDACUSB2CAN64Interface.tclsMDACUSB2CAN64Interface.DataReceivedEventHandler(vRXCallBackUDSOverCAN2USB); mclsUSB2CAN64Interface.SetHeaderSize(10); mboChannelActive = mclsUSB2CAN64Interface.Connect(iBaud, (int)u32DiagRXID, (int)u32DiagTXID); } catch { mboChannelActive = false; } } break; } case tenCommsType.enCANLIBKVASER: { if ((null != szDeviceSerial) && (null != szBaud) && (null != szDiagRXID)) { try { mclsUDSDotNet64Interface = new MDACUDSDotNet64Interface.tclsMDACUDSDotNet64Interface(); mclsUDSDotNet64Interface.DataReceived += new MDACUDSDotNet64Interface.tclsMDACUDSDotNet64Interface.DataReceivedEventHandler(vRXCallBackUDSOverCANLIBKVASER); mclsUDSDotNet64Interface.SetHeaderSize(10); mboChannelActive = mclsUDSDotNet64Interface.Connect(iBaud, szDLL, u32DiagRXID); } catch { mboChannelActive = false; } } break; } case tenCommsType.enUSBCDC: { if ((null != szBaud) && (null != szCommPort)) { try { mclsUSBInterface = new MDACUSBInterface.MDACUSBInterface(); mclsUSBInterface.DataReceived += new MDACUSBInterface.MDACUSBInterface.DataReceivedEventHandler(vRXCallBackUDSOverUSB); mclsUSBInterface.SetHeaderSize(10); mboChannelActive = mclsUSBInterface.Connect(MDACUSBInterface.MDACUSBInterface.tenClassType.enUSBVirtualComm, 0, 0, 0, 0, szCommPort, 1000 * iBaud); if (true == mboChannelActive) { mUSBCDCSubscribed = true; } } catch { } } break; } } return(mboChannelActive); }
public static void vNotifyProgramEvent(tenProgramEvent enRPCResponse, int iData, string szErrOrMessage) { if (null != mFormUDP) { switch (enRPCResponse) { case tenProgramEvent.enRPCUploadComplete: { tclsDataPage.vSetChangeLock(true); mboCommsSuspend = true; mFormUDP.vNotify(tenMDIParentNotify.enMDIDataPageRefreshed, 0, "", ""); tclsDataPage.vSetChangeLock(false); mboCommsSuspend = false; vNotifyProgramState(tenProgramState.enProgNormal, 0); mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, 100, szErrOrMessage, "Upload complete"); break; } case tenProgramEvent.enRPCDownloadComplete: { vNotifyProgramState(tenProgramState.enProgNormal, 0); mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, 100, szErrOrMessage, "Download complete"); break; } case tenProgramEvent.enWindowElementsLoaded: { vNotifyProgramState(tenProgramState.enProgNormal, 0); mFormUDP.vNotify(tenMDIParentNotify.enMDILoaded, 0, "", ""); mboCommsSuspend = false; mSplashLoading = false; break; } case tenProgramEvent.enLoadCalibrationComplete: { tclsDataPage.vSetChangeLock(true); mFormUDP.vNotify(tenMDIParentNotify.enMDIDataPageRefreshed, 0, "", ""); tclsDataPage.vSetChangeLock(false); vNotifyProgramState(tenProgramState.enProgNormal, 0); break; } case tenProgramEvent.enProgramError: { mFormUDP.vNotify(tenMDIParentNotify.enMDIShowError, 0, szErrOrMessage, ""); break; } case tenProgramEvent.enProgramMessage: { mFormUDP.vNotify(tenMDIParentNotify.enMDIShowMessage, 0, szErrOrMessage, ""); break; } case tenProgramEvent.enProgramOnline: { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, 0, szErrOrMessage, ""); mboCommsOnline = true; break; } case tenProgramEvent.enProgramOffline: { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOffline, 0, szErrOrMessage, ""); mboCommsOnline = false; break; } case tenProgramEvent.enRPCUploadIncrement: { if (75 > iData) { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, iData, szErrOrMessage, "Uploading " + iData.ToString() + "%"); } else { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, iData, szErrOrMessage, "Uploaded data processing 80 %"); } break; } case tenProgramEvent.enRPCDownloadIncrement: { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, iData, szErrOrMessage, "Downloading " + iData.ToString() + "%"); break; } case tenProgramEvent.enSlowTaskProgress: { if (true == mboCommsOnline) { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOnline, iData, szErrOrMessage, szErrOrMessage); } else { mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOffline, iData, szErrOrMessage, szErrOrMessage); } break; } case tenProgramEvent.enCommDisconnectOrError: { mboCommsSuspendError = true; mFormUDP.vNotify(tenMDIParentNotify.enMDIToolStripOffline, 100, szErrOrMessage, "Comm disconnect or error, now offline please save and restart"); mboCommsOnline = false; break; } case tenProgramEvent.enCommRequestSuspend: { mboCommsSuspend = true; break; } case tenProgramEvent.enCommRequestUnSuspend: { mboCommsSuspend = false; break; } case tenProgramEvent.enCommRequestDDDIReset: { mAPP_clsUDPComms.vResetDDDI(); break; } case tenProgramEvent.enUSBConnectDetected: { if (false == mboCommsOnline) { mAPP_clsUDPComms = new tclsUDSComms(mszAdapterDeviceName, mFormUDP.Handle); mboCommsOnline = mAPP_clsUDPComms.Connected; if (false == mboCommsOnline) { mAPP_clsUDPComms.vDispose(); } else { mAPP_clsUDPComms.vResetDDDI(); int iDDDIIDX; for (iDDDIIDX = 0; iDDDIIDX < ConstantData.BUFFERSIZES.u16UDS_MEASURE_RATE_COUNT; iDDDIIDX++) { tclsASAM.vSetDDDIResetPending(iDDDIIDX, true); } mboCommsSuspendError = false; } } break; } case tenProgramEvent.enUSBDisconnectDetected: { if (true == mboCommsOnline) { mboCommsOnline = false; mAPP_clsUDPComms.CommsDisconnect(); mAPP_clsUDPComms.vDispose(); } break; } default: { break; } } } }