Esempio n. 1
0
        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...");
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
                }
                }
            }
        }