public override int GetHashCode()
        {
            int hash = 1;

            if (MultiTargetTracker.Length != 0)
            {
                hash ^= MultiTargetTracker.GetHashCode();
            }
            if (FrameClassifier.Length != 0)
            {
                hash ^= FrameClassifier.GetHashCode();
            }
            if (FusionClassifier.Length != 0)
            {
                hash ^= FusionClassifier.GetHashCode();
            }
            return(hash);
        }
Example #2
0
        }; // 先默认他是四个

        // 当下层帧来的时候在这儿显示一下原始内容
        private void ComFrameUp(object sender, FrameReceivedArgs e)
        {
            // 如果不用下面这一行,我想要的对象还被子线程所拥有,无法用来改变UI层的元素
            // 按这一行这样操作一下就可以了。虽然我也不清楚为什么,C#这边还需要学习。
            // 参考了https://blog.csdn.net/u014117094/article/details/47776165
            Dispatcher.Invoke(new Action(() => {
                _output.AppendLine("Frame received:  " + e.IncomingFrame + Environment.NewLine + Environment.NewLine);
                TheTextBox.ScrollToEnd();

                // 调用FrameClassifier来解析帧
                FrameClassifier.IncomingFrameTypes result;
                FrameClassifier classifier = new FrameClassifier();
                result = classifier.RunClassifier(e.IncomingFrameBytes);
                ProcessClassifyResult(result, e.IncomingFrameBytes);
            }));

            // 显示一次之后就取消委托,下次要再显示下次再添加委托。不然每次“初始化”都增加一个委托,每次都多显示一行同样的内容。
            serial.rs232.rsr.NewFrame -= ComFrameUp;
        }