Exemple #1
0
 public TagInfo(TableResultItem info)
 {
     Info = info;
 }
        private void UpdateCodingInfo()
        {
            UpdateCodingText();

            bool          shortCoding     = IsShortCoding();
            StringBuilder sbCodingComment = new StringBuilder();

            _layoutVagCodingAssitantAdapter.Items.Clear();
            if (_instanceData.CurrentCoding != null && _instanceData.CurrentDataFileName != null)
            {
                UdsFileReader.UdsReader udsReader = ActivityCommon.GetUdsReader(_instanceData.CurrentDataFileName);
                // ReSharper disable once UseNullPropagation
                if (udsReader != null)
                {
                    if (shortCoding)
                    {
                        List <UdsFileReader.DataReader.DataInfo> dataInfoCodingList =
                            udsReader.DataReader.ExtractDataType(_instanceData.CurrentDataFileName, UdsFileReader.DataReader.DataType.Coding);
                        if (dataInfoCodingList != null)
                        {
                            foreach (UdsFileReader.DataReader.DataInfo dataInfo in dataInfoCodingList)
                            {
                                if (dataInfo.TextArray.Length > 0)
                                {
                                    if (sbCodingComment.Length > 0)
                                    {
                                        sbCodingComment.Append("\r\n");
                                    }
                                    sbCodingComment.Append(dataInfo.TextArray[0]);
                                }
                            }
                        }
                    }

                    List <UdsFileReader.DataReader.DataInfo> dataInfoLcList =
                        udsReader.DataReader.ExtractDataType(_instanceData.CurrentDataFileName, UdsFileReader.DataReader.DataType.LongCoding);
                    if (dataInfoLcList != null)
                    {
                        string          lastCommentLine     = null;
                        TableResultItem lastGroupResultItem = null;
                        long            lastGroupId         = -1;
                        StringBuilder   sbComment           = new StringBuilder();
                        foreach (UdsFileReader.DataReader.DataInfo dataInfo in dataInfoLcList)
                        {
                            if (dataInfo is UdsFileReader.DataReader.DataInfoLongCoding dataInfoLongCoding)
                            {
                                if (!string.IsNullOrEmpty(dataInfoLongCoding.Text))
                                {
                                    bool textLine = dataInfoLongCoding.LineNumber != null;
                                    if (textLine)
                                    {
                                        if (lastCommentLine == null || (lastCommentLine != dataInfoLongCoding.Text))
                                        {
                                            if (sbComment.Length > 0)
                                            {
                                                sbComment.Append("\r\n");
                                            }
                                            sbComment.Append(dataInfoLongCoding.Text);
                                        }
                                        lastCommentLine = dataInfoLongCoding.Text;
                                    }
                                    else
                                    {
                                        lastCommentLine = null;
                                        if (sbComment.Length > 0)
                                        {
                                            _layoutVagCodingAssitantAdapter.Items.Add(new TableResultItem(sbComment.ToString(), null, null, false, false));
                                            sbComment.Clear();
                                        }

                                        if (dataInfoLongCoding.Byte != null)
                                        {
                                            bool          selected = false;
                                            bool          enabled  = false;
                                            long          groupId  = -1;
                                            byte?         dataByte = null;
                                            StringBuilder sb       = new StringBuilder();
                                            if (dataInfoLongCoding.Byte.Value < _instanceData.CurrentCoding.Length)
                                            {
                                                dataByte = _instanceData.CurrentCoding[dataInfoLongCoding.Byte.Value];
                                            }
                                            sb.Append(string.Format("{0}", dataInfoLongCoding.Byte.Value));
                                            if (dataInfoLongCoding.Bit != null)
                                            {
                                                if (dataByte.HasValue)
                                                {
                                                    selected = (dataByte.Value & (1 << dataInfoLongCoding.Bit)) != 0;
                                                    enabled  = true;
                                                }
                                                sb.Append(string.Format("/{0}", dataInfoLongCoding.Bit.Value));
                                            }
                                            else if (dataInfoLongCoding.BitMin != null && dataInfoLongCoding.BitMax != null && dataInfoLongCoding.BitValue != null)
                                            {
                                                if (dataByte.HasValue)
                                                {
                                                    byte mask = 0x00;
                                                    for (int i = dataInfoLongCoding.BitMin.Value; i <= dataInfoLongCoding.BitMax.Value; i++)
                                                    {
                                                        mask |= (byte)(1 << i);
                                                    }
                                                    selected = (dataByte.Value & mask) == dataInfoLongCoding.BitValue;
                                                    enabled  = !selected;
                                                    groupId  = (dataInfoLongCoding.Byte.Value << 16) + (dataInfoLongCoding.BitMin.Value << 8) + dataInfoLongCoding.BitMax.Value;
                                                }
                                                sb.Append(string.Format("/{0}-{1}={2:X02}",
                                                                        dataInfoLongCoding.BitMin.Value, dataInfoLongCoding.BitMax.Value, dataInfoLongCoding.BitValue.Value));
                                            }

                                            sb.Append(" ");
                                            sb.Append(dataInfoLongCoding.Text);
                                            TableResultItem resultItem = new TableResultItem(sb.ToString(), null, dataInfoLongCoding, true, selected)
                                            {
                                                CheckEnable = enabled
                                            };
                                            resultItem.CheckChangeEvent += item =>
                                            {
                                                UpdateCodingSelected(item.Tag as UdsFileReader.DataReader.DataInfoLongCoding, item.Selected);
                                            };
                                            _layoutVagCodingAssitantAdapter.Items.Add(resultItem);
                                            if (groupId >= 0)
                                            {
                                                if (lastGroupResultItem != null && lastGroupId >= 0 && lastGroupId == groupId)
                                                {
                                                    lastGroupResultItem.SeparatorVisible = false;
                                                }
                                                lastGroupResultItem = resultItem;
                                                lastGroupId         = groupId;
                                            }
                                            else
                                            {
                                                lastGroupResultItem = null;
                                                lastGroupId         = -1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (sbComment.Length > 0)
                        {
                            _layoutVagCodingAssitantAdapter.Items.Add(new TableResultItem(sbComment.ToString(), null, null, false, false));
                            sbComment.Clear();
                        }
                    }
                }
            }

            _layoutVagCodingShort.Visibility = shortCoding ? ViewStates.Visible : ViewStates.Gone;
            _editTextVagCodingShort.Enabled  = shortCoding;
            _editTextVagCodingRaw.Enabled    = !shortCoding;

            _textViewCodingComments.Text        = sbCodingComment.ToString();
            _layoutVagCodingComments.Visibility = sbCodingComment.Length > 0 ? ViewStates.Visible : ViewStates.Gone;

            _layoutVagCodingAssitantAdapter.NotifyDataSetChanged();
            _layoutVagCodingAssitant.Visibility = _layoutVagCodingAssitantAdapter.Items.Count > 0 ? ViewStates.Visible : ViewStates.Gone;
        }