示例#1
0
 private static void AddFrameGroupID(AnalysisSignal dbcSignal)
 {
     if (!frameIdList.Contains(dbcSignal.DataAddress))
     {
         frameIdList.Add(dbcSignal.DataAddress);
     }
 }
示例#2
0
    // Use this for initialization
    void Start()
    {
        scoreUtil.init();
        string xmlPath = Application.streamingAssetsPath + "/" + PlayerPrefs.GetString("selectedLevel") + ".xml";

        midi = Midi.getMidi(xmlPath);
        midiPlayer.StopAll();
        midiPlayer.Play(PlayerPrefs.GetString("selectedLevel") + ".mid");

        analysisSignal = new AnalysisSignal();
        analysisSignal.midiStart(0);
        midikeycode   = new MidiKeyCode();
        midichordcode = new ChordKeycode();
    }
示例#3
0
        private static List <AnalysisSignal> DbcDataToSignal(GridViewData listData, RadGridView gridView)
        {
            if (listData.DbcCheckIndex.Count < 1)
            {
                return(null);
            }
            List <AnalysisSignal> analysisSignalList = new List <AnalysisSignal>();

            for (int i = 0; i < listData.DbcCheckIndex.Count; i++)
            {
                AnalysisSignal analysisSignal = new AnalysisSignal();
                analysisSignal.Name = gridView.Rows[listData.DbcCheckIndex[i]].Cells[1].Value.ToString();
                var describle = gridView.Rows[listData.DbcCheckIndex[i]].Cells[2].Value.ToString().Replace('"', ' ').Trim();
                if (describle.Length >= 12)
                {
                    describle = describle.Substring(0, 12);
                    //describle = "\"" + describle + "\"";
                }

                analysisSignal.Describle    = describle;
                analysisSignal.Unit         = gridView.Rows[listData.DbcCheckIndex[i]].Cells[3].Value.ToString();
                analysisSignal.SaveDataType = (SaveDataTypeEnum)Enum.Parse(typeof(SaveDataTypeEnum), gridView.Rows[listData.DbcCheckIndex[i]].Cells[4].Value.ToString());
                analysisSignal.SaveDataLen  = int.Parse(gridView.Rows[listData.DbcCheckIndex[i]].Cells[5].Value.ToString());
                analysisSignal.IsMotorola   = int.Parse(gridView.Rows[listData.DbcCheckIndex[i]].Cells[6].Value.ToString());
                analysisSignal.StartIndex   = int.Parse(gridView.Rows[listData.DbcCheckIndex[i]].Cells[7].Value.ToString());
                analysisSignal.DataBitLen   = int.Parse(gridView.Rows[listData.DbcCheckIndex[i]].Cells[8].Value.ToString());
                analysisSignal.DataAddress  = gridView.Rows[listData.DbcCheckIndex[i]].Cells[9].Value.ToString();
                analysisSignal.Factor       = gridView.Rows[listData.DbcCheckIndex[i]].Cells[10].Value.ToString();
                analysisSignal.OffSet       = gridView.Rows[listData.DbcCheckIndex[i]].Cells[11].Value.ToString();

                analysisSignalList.Add(analysisSignal);
                AddFrameGroupID(analysisSignal);    //添加分组ID
                acturalDBCList.Add(analysisSignal); //添加实际保存数据
            }
            return(analysisSignalList);
        }
示例#4
0
        /// <summary>
        /// 合并a2l 与dbc数据,统一格式
        /// </summary>
        public static AnalysisData UnionXcpDbc(FileType fileType, XcpData xcpData, DBCData dbcData, string baudRateDbc)
        {
            ////name + describle+unit+dataType+dataLen+IsMotorola+startIndex+dataBitLen+dataAddress+factor+offset
            AnalysisData analysisData = new AnalysisData();

            if (fileType == FileType.A2L)
            {
                analysisData.AgreeMentXCP = xcpData.AgreeMentType;
            }
            analysisData.BaudRateDbc = baudRateDbc.Trim();
            try
            {
                switch (fileType)
                {
                case FileType.A2L:
                    var measureList = xcpData.MeasureData;
                    if (measureList == null)
                    {
                        LogHelper.Log.Info("XCP_DATA_MeasureData为空!");
                        return(null);
                    }
                    var metholdList = xcpData.MetholdData;
                    if (metholdList == null)
                    {
                        LogHelper.Log.Info("XCP_DATA_METHOLD_LIST为空!");
                        return(null);
                    }
                    var propertyList = xcpData.PropertyData;
                    if (propertyList == null)
                    {
                        LogHelper.Log.Info("XCP_DATA_PROPERTY_LIST为空!");
                        return(null);
                    }
                    analysisData.AnalysisiXcpDataList = new List <AnalysisSignal>();
                    for (int i = 0; i < measureList.Count; i++)
                    {
                        AnalysisSignal analysisSignal = new AnalysisSignal();
                        analysisSignal.OrderId   = i + 1;
                        analysisSignal.Name      = measureList[i].Name;
                        analysisSignal.Describle = measureList[i].Describle;

                        ///查询函数值
                        var mdList = metholdList.Find(tm => tm.name == measureList[i].ReferenceMethod);

                        if (mdList == null)
                        {
                            //LogHelper.Log.Info("查询metholdList失败,查询结果为空!空ID号为"+i+" 方法名为"+measureList[i].ReferenceMethod);
                            //B_TRUE 查询不到
                            continue;
                        }
                        analysisSignal.Unit = mdList.unit;

                        DataTypeEnum     dataTypeEnum = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), measureList[i].Type.ToUpper());
                        SaveDataTypeEnum svType       = TypeConvert.AnalysisTypeToSaveType(dataTypeEnum);
                        analysisSignal.SaveDataType = svType;

                        analysisSignal.SaveDataLen = TypeConvert.AnalysisTypeToLength(dataTypeEnum);
                        analysisSignal.IsMotorola  = (int)propertyList[0].byteOrder;
                        analysisSignal.StartIndex  = 0;
                        analysisSignal.DataBitLen  = 0;
                        analysisSignal.DataAddress = measureList[i].EcuAddress;

                        analysisSignal.Factor = mdList.Factor;
                        analysisSignal.OffSet = mdList.OffSet;
                        analysisData.AnalysisiXcpDataList.Add(analysisSignal);
                        //if (i == 1000)
                        //    break;
                    }
                    break;

                case FileType.DBC:
                    var dbcmsgList = dbcData.DBCMessageList;
                    var dbcsigList = dbcData.DBCSignalList;
                    analysisData.AnalysisDbcDataList = new List <AnalysisSignal>();
                    int count = 0;
                    LogHelper.Log.Info(" start :" + dbcmsgList.Count + "  " + dbcsigList.Count);
                    for (int i = 0; i < dbcmsgList.Count; i++)
                    {
                        var dbcList = dbcsigList.FindAll(msg => msg.FrameID == dbcmsgList[i].FrameID);
                        for (int j = 0; j < dbcList.Count; j++)
                        {
                            AnalysisSignal signal = new AnalysisSignal();
                            signal.OrderId   = count + 1;
                            signal.Name      = dbcList[j].SignalName;
                            signal.Describle = dbcmsgList[i].FrameName;
                            signal.Unit      = dbcList[j].Unit;
                            if (dbcList[j].SymbolType == "+")
                            {
                                signal.SaveDataType = SaveDataTypeEnum.V_UINT;
                            }
                            else if (dbcList[j].SymbolType == "-")
                            {
                                signal.SaveDataType = SaveDataTypeEnum.V_INT;
                            }
                            //signal.SaveDataLen = dbcmsgList[i].MessageLen;
                            //len = (bitLen+7)/len
                            signal.SaveDataLen = (dbcList[j].BitLength + 7) / 8;
                            signal.IsMotorola  = (int)dbcList[j].ByteOrder;
                            signal.StartIndex  = dbcList[j].StartBitIndex;
                            signal.DataBitLen  = dbcList[j].BitLength;
                            signal.DataAddress = dbcmsgList[i].FrameID;
                            signal.Factor      = dbcList[j].Factor;
                            signal.OffSet      = dbcList[j].Offset;
                            analysisData.AnalysisDbcDataList.Add(signal);
                            count++;
                        }
                    }
                    break;
                }
            }
            catch (Exception e)
            {
                LogHelper.Log.Error("a2l dbc数据整合失败!失败原因:" + e.Message + e.StackTrace);
            }
            return(analysisData);
        }