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); }
}; // 先默认他是四个 // 当下层帧来的时候在这儿显示一下原始内容 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; }