Exemple #1
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;
        }
        private void Reader_FrameReceived(object sender, FrameReceivedArgs args)
        {
            XBeeFrame frame = args.Response;

            switch (Convert.ToChar(((ZigBeeReceivePacket)frame).Data[0])) //Convert first byte of packet to char
            {
            case '4':                                                     //Telemetry data
                if (frame.GetCommandId() == XBeeAPICommandId.RECEIVE_PACKET_RESPONSE)
                {
                    tel.addPacket((ZigBeeReceivePacket)frame);
                    backup.saveTelemetryPacket((ZigBeeReceivePacket)frame);

                    if (NewTelemetry != null)
                    {
                        NewTelemetry.Invoke(this, new EventArgs());
                    }
                }
                break;

            case 'n':     //New photo
                if (frame.GetCommandId() == XBeeAPICommandId.RECEIVE_PACKET_RESPONSE)
                {
                    photoHandler.newPhoto((ZigBeeReceivePacket)frame);

                    /*if (NewTelemetry != null)
                     *  NewTelemetry.Invoke(this, new EventArgs());*/
                }
                break;

            case 'p':     //Photo packet
                if (frame.GetCommandId() == XBeeAPICommandId.RECEIVE_PACKET_RESPONSE)
                {
                    photoHandler.addPacket((ZigBeeReceivePacket)frame);

                    /*if (NewTelemetry != null)
                     *  NewTelemetry.Invoke(this, new EventArgs());*/
                }
                break;

            default:
                break;
            }
        }
Exemple #3
0
 private void FrameReceivedEvent(object sender, FrameReceivedArgs args)
 {
     frame = args.Response;
 }
 private void FrameReceivedEvent(object sender, FrameReceivedArgs args)
 {
     frame = args.Response;
 }