Пример #1
0
        void OnRecMsg(RecMsgArgs args)
        {
            try
            {
                if(args.DataType==typeof(LL_Status))
                {
                    LL_Status stat = (LL_Status)args.Data;
                    double batVol=(stat.battery_voltage_1)/1000.0;
                    meterBattery.CurrentValue=batVol;
                    textInfo.AppendText("状态数据LL_Status\r\n");
                }

               if(args.DataType==typeof(IMU_CalcData))
               {
                    IMU_CalcData icd=(IMU_CalcData)args.Data;
                   double heigt=icd.height/1000.0;
                   double pitch=icd.angle_nick/1000.0;
                   double roll=icd.angle_roll / 1000.0;
                   double yaw=icd.angle_yaw / 1000.0;
                    meterHeight.CurrentValue=heigt;
                    meterPitch.CurrentValue=pitch;
                    meterRoll.CurrentValue = roll;
                    meterYaw.CurrentValue = yaw;
                    chartAt.Series["Pitch"].Points.AddXY(sysTime / 10.0, pitch);
                    chartAt.Series["Roll"].Points.AddXY(sysTime / 10.0,roll);
                    //chartAt.Series["Yaw"].Points.AddXY(sysTime / 10.0, icd.angvel_yaw/1000.0);
                    textInfo.AppendText("飞行数据LL_Status\r\n");
               }

               if(args.DataType==null)
               {
                    textInfo.AppendText(string.Format("{0:X}",args.RawData)+"\r\n");
               }
               //Application.DoEvents();
            }
            catch
            {
            }
        }
Пример #2
0
        void xbee_OnRecMsg(object sender, SerialRecMsgEventArgs args)
        {
            while (!mutex)
            {
                Thread.Sleep(1);
            }
            mutex = false;
            try
            {

                byte[] pack = CombineBytes(lastPack, args.MessageBuf);

                RecMsgArgs targs = new RecMsgArgs();
                Debug.WriteLine("上次:" + BytesToHexString(lastPack));
                Debug.WriteLine("新接收:" + BytesToHexString(args.MessageBuf));
                Debug.WriteLine("组合包:" + BytesToHexString(pack));
                lastPack = pack;
                while (pack != null)
                {
                    pack = GetPackage(lastPack, out lastPack);
                    try
                    {
                        if (lastPack != null)
                        {
                            Debug.WriteLine("剩余包:" + BytesToHexString(lastPack));
                        }
                    }
                    catch (Exception e)
                    {
                        Debug.WriteLine("空引用--" + e.Message);
                    }

                    Debug.WriteLine("完整包:" + BytesToHexString(pack));
                    if (pack == null)
                    {
                        return;
                    }
                    Debug.WriteLine("数据总长度:" + pack.Length.ToString());
                    byte p = (byte)pack[5];

                    UInt16 l = (UInt16)(((UInt16)pack[4]) * 256 + (UInt16)pack[3]);

                    Debug.WriteLine("数据有效字段长度:" + l.ToString());

                    byte[] data = GetBytes(pack, 6, l);

                    switch (p)
                    {
                        case (byte)PackDes.LL_Status:
                            targs.RawData = args.Message;
                            targs.DataType = typeof(LL_Status);
                            targs.Data = StructBytesConvertor.BytesToStruts(data, typeof(LL_Status));
                            SetRecEvent(targs);
                            break;
                        case (byte)PackDes.IMU_CalcData:
                            targs.RawData = args.Message;

                            targs.DataType = typeof(IMU_CalcData);
                            byte[] tmp = new byte[4];
                            for (int k = 0; k < 4; k++)
                            {
                                tmp[k] = data[k + 76];
                            }
                            /*
                            byte tmp = data[76];
                            data[76] = data[78];
                            data[78] = tmp;
                            tmp = data[77];
                            data[77] = data[79];
                            data[79] = tmp;*/
                            targs.Data = StructBytesConvertor.BytesToStruts(data, typeof(IMU_CalcData));
                            SetRecEvent(targs);
                            break;

                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("接收线程异常:" + e.Message);
            }
            finally
            {
                mutex = true;
            }
        }
Пример #3
0
 void Instance_OnRecMsg(RecMsgArgs args)
 {
     OnRecMsgHandler orm = new OnRecMsgHandler(OnRecMsg);
     BeginInvoke(orm, args);
 }
Пример #4
0
 public void SetRecEvent(RecMsgArgs msg)
 {
     try
     {
         OnRecMsg(msg);
     }
     catch
     {
     }
 }