Example #1
0
        /// <summary>
        /// Event from bluetooth device
        /// </summary>
        /// <param name="packet"></param>
        private void MavlinkDataReceivedHandlerMap(MavlinkPacket packet)
        {
            CheckBox chkMagnOn = FindViewById <CheckBox>(Resource.Id.chkMagnetic);

            if (packet.Message.GetType() == typeof(MavLink.Msg_mav_game_rotation_vector_euler))
            {
                Msg_mav_game_rotation_vector_euler game_angle = (MavLink.Msg_mav_game_rotation_vector_euler)packet.Message;
                if (chkMagnOn.Checked == false)
                {
                    currVisirDirGeg = game_angle.yaw;
                    DrawDirection(currVisirDirGeg);
                }
            }
            if (packet.Message.GetType() == typeof(MavLink.Msg_mav_rotation_vector_euler))
            {
                Msg_mav_rotation_vector_euler rotation_angle = (MavLink.Msg_mav_rotation_vector_euler)packet.Message;
                if (chkMagnOn.Checked == true)
                {
                    currVisirDirGeg = rotation_angle.yaw;
                    DrawDirection(currVisirDirGeg);
                }
            }
            else if (packet.Message.GetType() == typeof(MavLink.Msg_mav_button_event))
            {
                parse_keys_event((MavLink.Msg_mav_button_event)packet.Message);
            }
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <exception cref="Exception">Various IO exceptions</exception>
        /// <param name="data"></param>
        /// <param name="length"></param>
        private void Transmit(MavlinkMessage message)
        {
            MavlinkPacket packet = new MavlinkPacket();

            packet.Message        = message;
            packet.SequenceNumber = mavMsg++;
            packet.SystemId       = SYSTEM_ID;
            packet.ComponentId    = wifiCompIdSettings;
            packet.TimeStamp      = DateTime.Now;
            // TODO: systemid, componentid (?)
            byte[] serializedMessageWiFi = mav.Send(packet); // mav.Serialize(message, 0, 0);

            packet.ComponentId = serialCompIdSettings;
            byte[] serializedMessageSerial = mav.Send(packet);

            Parallel.ForEach(sinks, sink => {
                lock (sink)
                {
                    if (sink.Enabled)
                    {
                        if (sink.GetType() == typeof(SerialSink))
                        {
                            sink.Send(serializedMessageSerial);
                        }
                        else
                        {
                            sink.Send(serializedMessageWiFi);
                        }
                        lastTimeSent = DateTime.Now;
                    }
                }
            });
        }
Example #3
0
        private void mavlink_send(byte[] buf, bool close)
        {
            MavlinkPacket      p  = new MavlinkPacket();
            Msg_serial_control sc = new Msg_serial_control();

            int left = buf.Length;
            int idx  = 0;

            do
            {
                int c = Math.Min(70, left);
                sc.data = new byte[c]; // System.Text.Encoding.UTF8.GetBytes(cmd);
                Array.Copy(buf, idx, sc.data, 0, c);
                sc.count    = (byte)c;
                sc.device   = 9;
                sc.baudrate = (uint)(close ? 0 : 1);

                //Console.WriteLine("mavlink_send() len={0} buf='{1}'",
                //    sc.count, System.Text.Encoding.UTF8.GetString(buf));

                p.Message     = sc;
                p.SystemId    = 201;
                p.ComponentId = 0;
                byte[] packet = mav.Send(p);
                serial_port.Write(packet, 0, packet.Length);

                idx  += c;
                left -= c;
            } while (left > 0);
        }
Example #4
0
        private void OnPacketRecieved(object sender, MavlinkPacket e)
        {
            uint           x = Mv.PacketsReceived;
            MavlinkMessage m = e.Message;

            if (m.GetType() == Hb.GetType())
            {
                Hb = (Msg_heartbeat)e.Message;
            }

            if (m.GetType() == Ss.GetType())
            {
                Ss = (Msg_sys_status)e.Message;
            }

            if (m.GetType() == Ps.GetType())
            {
                Ps = (Msg_power_status)e.Message;
            }

            if (m.GetType() == At.GetType())
            {
                At = (Msg_attitude)e.Message;
            }

            if (m.GetType() == Gps.GetType())
            {
                Gps = (Msg_gps_raw_int)e.Message;
            }

            if (m.GetType() == Vfr.GetType())
            {
                Vfr = (Msg_vfr_hud)e.Message;
            }

            if (m.GetType() == Rp.GetType())
            {
                Rp = (Msg_raw_pressure)e.Message;
            }

            if (m.GetType() == Sp.GetType())
            {
                Sp = (Msg_scaled_pressure)e.Message;
                PressureAbsolute   = (int)(Sp.press_abs * 1000f);
                Temperature        = Sp.temperature;
                PressureDifference = (int)(Sp.press_diff * 1000f);
                Total++;

                if (OnAtmosphericData != null)
                {
                    OnAtmosphericData.Invoke(PressureAbsolute, PressureDifference, Temperature, Total);
                }
            }

            if (x > 0 && OnPacketCountGreaterThanZero != null)
            {
                OnPacketCountGreaterThanZero.Invoke();
            }
        }
Example #5
0
        private void RequestMav()
        {
            Ds.message_rate = 2;
            Ds.on_off       = 1;
            Ds.stream_id    = (byte)MAV_DATA_STREAM.MAV_DATA_STREAM_ALL;

            MavlinkPacket p = new MavlinkPacket();
        }
Example #6
0
 private void MavlinkDataReceivedHandlerMap(MavlinkPacket packet)
 {
     if (packet.Message.GetType() == typeof(MavLink.Msg_mav_game_rotation_vector_euler))
     {
         Msg_mav_game_rotation_vector_euler game_angle = (MavLink.Msg_mav_game_rotation_vector_euler)packet.Message;
         UpdateCurrentPosition(game_angle.pitch, game_angle.yaw);
     }
 }
Example #7
0
        public void ProcessRxMavlinkPacket(object sender, MavlinkPacket e)
        {
            //partical parsing
            if (e.Message.GetType() == typeof(MavLink.Msg_mav_button_event))
            {
                parse_keys_event((MavLink.Msg_mav_button_event)e.Message);
            }

            MavlinkDataReceived?.Invoke(e);
        }
Example #8
0
        private void Mavlink_PacketReceived(object sender, MavlinkPacket e)
        {
            var type = e.Message.GetType();

            switch (type.Name)
            {
            case "Msg_attitude":
                break;
            }
        }
Example #9
0
        private void SendPacket(MavlinkMessage m)
        {
            MavlinkPacket p = new MavlinkPacket();

            p.Message        = m;
            p.SequenceNumber = (byte)Sequence;
            p.SystemId       = 255;
            p.ComponentId    = (byte)MAV_COMPONENT.MAV_COMP_ID_MISSIONPLANNER;
            byte[] b = Mv.Send(p);
            Serial.Write(b, 0, b.Length);
        }
Example #10
0
        void send_mavlink_paket(MavlinkPacket packet)
        {
            byte[] data_to_send = mavlink_obj.Send(packet);

            if (BthSocket.IsConnected)
            {
                var outs             = BthSocket.OutputStream;
                var base_out_steream = (outs as OutputStreamInvoker).BaseOutputStream;
                base_out_steream.Write(data_to_send);
            }
        }
Example #11
0
    private void SendPacket(MavlinkMessage m)
    {
        MavlinkPacket p = new MavlinkPacket();

        p.Message        = m;
        p.SequenceNumber = (byte)seq;
        p.SystemId       = SystemId;
        p.ComponentId    = ComponentId;
        byte[] by = Mv.Send(p);
//		Serial.Write(by, 0, by.Length);
        socket.SendTo(by, by.Length, SocketFlags.None, ipEnd);
    }
Example #12
0
        private void Tlogmav_PacketReceived(object sender, MavlinkPacket e)
        {
            //Console.WriteLine("will send packet from [{0};{1}] type {2}", e.SystemId, e.ComponentId, e.Message);
            byte[] b = tlog_mav.Send(e);
            if (mav_packet_send(b))
            {
                tlog_active = false;
            }

            System.Threading.Thread.Sleep(10);
            //Console.WriteLine("sent .tlog packet");
        }
Example #13
0
        private void mavlink_PacketReceived(object sender, MavlinkPacket e)
        {
            if (e.Message == null)
            {
                return;
            }

            if (!Disposing && !IsDisposed)
            {
                BeginInvoke((Action <MavlinkMessage>)ProcessMessage, e.Message);
            }
        }
Example #14
0
        public void SendTest()
        {
            Mavlink      mavlink      = new Mavlink();
            Msg_attitude msg_Attitude = new Msg_attitude();

            msg_Attitude.roll = 1;
            MavlinkPacket packet = new MavlinkPacket(msg_Attitude);
            var           res    = mavlink.Send(packet);

            mavlink.PacketReceived += Mavlink_PacketReceived;
            mavlink.ParseBytes(res);
            Assert.AreNotEqual(mavlink.PacketsReceived, 0);
        }
Example #15
0
 public void MavlinkDataReceivedHandlerMain(MavlinkPacket packet)
 {
     if (packet.Message.GetType() == typeof(MavLink.Msg_mav_game_rotation_vector_euler))
     {
         game_rotation_angles.update_from_mavlink((MavLink.Msg_mav_game_rotation_vector_euler)packet.Message);
         UpdateMainScreen();
     }
     else if (packet.Message.GetType() == typeof(MavLink.Msg_mav_batt_state))
     {
         MavLink.Msg_mav_batt_state battery_state = (MavLink.Msg_mav_batt_state)packet.Message;
         battery_voltage = battery_state.voltage;
     }
 }
Example #16
0
        /// <summary>
        /// Set mode
        /// </summary>
        /// <param name="mode">0 - base mode, 1 - target1</param>
        void sent_mavlink_switch_mode(byte mode)
        {
            MavLink.Msg_mav_set_visir_mode mav_msg = new MavLink.Msg_mav_set_visir_mode();
            mav_msg.mode_code = mode;

            var mvp = new MavlinkPacket
            {
                ComponentId = 1,
                SystemId    = 2,//PC
                Message     = mav_msg
            };

            send_mavlink_paket(mvp);
        }
Example #17
0
        //set direction
        void sent_mavlink_target(float direction_deg)
        {
            MavLink.Msg_mav_set_target_pos mav_msg = new MavLink.Msg_mav_set_target_pos();
            mav_msg.yaw = direction_deg;

            var mvp = new MavlinkPacket
            {
                ComponentId = 1,
                SystemId    = 2,//PC
                Message     = mav_msg
            };

            send_mavlink_paket(mvp);
        }
        private static void Mavlink_PacketReceived(object sender, MavlinkPacket e)
        {
            var type = e.Message.GetType();

            switch (type.Name)
            {
            case "Msg_attitude":
                var message = (Msg_attitude)e.Message;
                FlightData.Attitude.Angle_X = message.roll;
                FlightData.Attitude.Angle_Y = message.pitch;
                FlightData.Attitude.Angle_Z = message.yaw;
                break;
            }
        }
Example #19
0
        void sent_mavlink_yaw_correction(byte vect_type, float correction)
        {
            MavLink.Msg_mav_set_yaw_correction mav_msg = new MavLink.Msg_mav_set_yaw_correction();

            mav_msg.vector_type = vect_type;
            mav_msg.value       = correction;

            var mvp = new MavlinkPacket
            {
                ComponentId = 1,
                SystemId    = 2,//PC
                Message     = mav_msg
            };

            send_mavlink_paket(mvp);
        }
Example #20
0
        public MainForm()
        {
            InitializeComponent();

            StateMachineUpdate(StateMachineStep.None);

            mavlink_packet             = new MavlinkPacket();
            mavlink_packet.ComponentId = (int)MAV_COMPONENT.MAV_COMP_ID_SYSTEM_CONTROL;
            mavlink_packet.SystemId    = 0xCE;

            mavlink = new Mavlink();
            mavlink.PacketReceived += mavlink_PacketReceived;


            byte[] ver = BitConverter.GetBytes(FIRMWARE_VERSION);

            Text = string.Format("AnySense {0}.{1}.{2} - Konfiguration Manager", ver[2], ver[1], ver[0]);
        }
Example #21
0
        /// <summary>
        /// Event from bluetooth device
        /// </summary>
        /// <param name="packet"></param>
        private void MavlinkDataReceivedHandlerMap2(MavlinkPacket packet)
        {
            if (packet.Message.GetType() == typeof(MavLink.Msg_mav_game_rotation_vector_euler))
            {
                Msg_mav_game_rotation_vector_euler game_angle = (MavLink.Msg_mav_game_rotation_vector_euler)packet.Message;
                UpdateVisirDirection(game_angle.yaw);
            }

            /*
             * if (packet.Message.GetType() == typeof(MavLink.Msg_mav_rotation_vector_euler))
             * {
             *  Msg_mav_rotation_vector_euler rotation_angle = (MavLink.Msg_mav_rotation_vector_euler)packet.Message;
             * }
             */
            else if (packet.Message.GetType() == typeof(MavLink.Msg_mav_button_event))
            {
                parse_keys_event((MavLink.Msg_mav_button_event)packet.Message);
            }
        }
Example #22
0
        /// <summary>
        /// 通过message操作function的状态
        /// </summary>
        /// <param name="packet"></param>
        private static void SetFunction(MavlinkPacket packet)
        {
            if (packet.Message.GetType().Name == "Msg_setfunctionstatus")
            {
                var message = packet.Message as Msg_setfunctionstatus;
                switch ((int)message.status)
                {
                case (int)FunctionStatus.Online:
                    Timer.Elapsed += Functions[Encoding.UTF8.GetString(message.functionname)].Excute;
                    break;

                case (int)FunctionStatus.Offline:
                    Timer.Elapsed -= Functions[Encoding.UTF8.GetString(message.functionname)].Excute;
                    break;

                case (int)FunctionStatus.Failure:
                    break;
                }
            }
        }
        public void recvMavMsg(object sender, MavlinkPacket e)
        {
            Console.WriteLine("recvMavMsg: " + Thread.CurrentThread.ManagedThreadId.ToString());

            string str = e.Message.ToString();

            if (str == "MavLink.Msg_heartbeat")
            {
                /* convert */
                Msg_heartbeat ht = (Msg_heartbeat)e.Message;

                /* save the incoming msg */
                mode = ht.custom_mode;

                /* publish */
                commDataEvent(mode);
            }
            else if (e.Message.ToString() == "Mavlink.Msg_attitude")
            {
                Msg_attitude at = (Msg_attitude)e.Message;
            }
        }
Example #24
0
        private void Mav_PacketReceived(object sender, MavlinkPacket e)
        {
            //Console.WriteLine("-- incomming packet type {0} --", e.Message.GetType());
            MavlinkMessage m = e.Message;

            if (e.Message.GetType() == typeof(MavLink.Msg_heartbeat))
            {
                Msg_heartbeat hb = (m as Msg_heartbeat);
                Console.WriteLine("heartbeat from [{3};{4}] type={0} mav_version={1} autopilot={2}",
                                  hb.type, hb.mavlink_version, hb.autopilot, e.SystemId, e.ComponentId);
            }
            else if (e.Message.GetType() == typeof(MavLink.Msg_serial_control))
            {
                Msg_serial_control sc = (m as Msg_serial_control);

                if (sc.device == 9)
                {
                    byte[] inbuf = new byte[sc.count];
                    Array.Copy(sc.data, inbuf, sc.count);
                    AppendToBuffer(inbuf);
                }
            }
        }
Example #25
0
        /// <summary>
        ///
        /// </summary>
        /// <exception cref="Exception">Various IO exceptions</exception>
        /// <param name="data"></param>
        /// <param name="length"></param>
        private void Transmit(MavlinkMessage message)
        {
            MavlinkPacket packet = new MavlinkPacket();

            packet.Message        = message;
            packet.SequenceNumber = mavMsg++;
            packet.SystemId       = SYSTEM_ID;
            packet.ComponentId    = COMPONENT_ID;
            packet.TimeStamp      = DateTime.Now;
            // TODO: systemid, componentid (?)
            byte[] serializedMessage = mav.Send(packet); // mav.Serialize(message, 0, 0);

            // TODO: add all send methods
            Parallel.Invoke(() => {
                lock (udpLocker)
                {
                    if (udpSink != null)
                    {
                        udpSink.Send(serializedMessage);
                    }
                }
            }, () => {
                lock (tcpClientLocker)
                {
                    if (tcpClientSink != null)
                    {
                        tcpClientSink.Send(serializedMessage);
                    }
                }
            }, () => {
                lock (serialLocker)
                {
                    if (serialSink != null)
                    {
                        serialSink.Write(serializedMessage, 0, serializedMessage.Length);
                    }
                }
            }, () =>
            {
                lock (tcpServerLocker)
                {
                    if (tcpServerSink != null)
                    {
                        var client = tcpServerClients.First;
                        while (client != null)
                        {
                            var next = client.Next;
                            try
                            {
                                if (!client.Value.Connected)
                                {
                                    tcpServerClients.Remove(client);
                                }
                                else
                                {
                                    client.Value.GetStream().Write(serializedMessage, 0, serializedMessage.Length);
                                }
                            }
                            catch (Exception ex)
                            {
                                log.Error(ex);
                            }

                            client = next;
                        }
                    }
                }
            });
        }
Example #26
0
 void send_mavlink_paket(MavlinkPacket packet)
 {
     byte[] data_to_send = mavlink_obj.Send(packet);
     serial_worker.send_bin_data_to_serial(data_to_send);
 }
Example #27
0
        public void ProcessRxMavlinkPacket(object sender, MavlinkPacket e)
        {
            //System.Diagnostics.Debug.WriteLine("number", e.SequenceNumber.ToString());

            if (e.Message.GetType() == typeof(MavLink.Msg_mav_rotation_vector_euler))
            {
                Invoke((MethodInvoker) delegate()
                {
                    rx_cnt++;
                    rotation_angles.update_from_mavlink((MavLink.Msg_mav_rotation_vector_euler)e.Message);
                    anglesDisplayRotation.update_angles(rotation_angles);
                    if (chkUseGyro.Checked == false)
                    {
                        mapControl1.draw_direction(rotation_angles.yaw);
                    }
                });
            }
            if (e.Message.GetType() == typeof(MavLink.Msg_mav_quaternion))
            {
                Invoke((MethodInvoker) delegate()
                {
                    rx_cnt++;
                    MavLink.Msg_mav_quaternion m_quaternion = (MavLink.Msg_mav_quaternion)e.Message;
                    raw_quaternion        = new Quaternion(m_quaternion.x, m_quaternion.y, m_quaternion.z, m_quaternion.w);
                    lblRawQuaternion.Text = $"Raw Quat: X={raw_quaternion.X:0.0000} Y={raw_quaternion.Y:0.0000} Z={raw_quaternion.Z:0.0000}  W={raw_quaternion.W:0.0000}";

                    rotation_angles_t1.update_from_quaternion(raw_quaternion);
                    //anglesDisplay1.update_angles(rotation_angles_t1);
                });
            }
            if (e.Message.GetType() == typeof(MavLink.Msg_mav_game_rotation_vector_euler))
            {
                Invoke((MethodInvoker) delegate()
                {
                    rx_cnt++;
                    game_rotation_angles.update_from_mavlink((MavLink.Msg_mav_game_rotation_vector_euler)e.Message);
                    anglesDisplay1.update_angles(game_rotation_angles);
                    if (chkUseGyro.Checked == true)
                    {
                        mapControl1.draw_direction(game_rotation_angles.yaw);
                    }
                    NMEAPublisherObj.CurrentAngle = game_rotation_angles.yaw;
                });
            }
            if (e.Message.GetType() == typeof(MavLink.Msg_mav_button_event))
            {
                Invoke((MethodInvoker) delegate()
                {
                    rx_cnt++;
                    parse_keys_event((MavLink.Msg_mav_button_event)e.Message);
                });
            }
            if (e.Message.GetType() == typeof(MavLink.Msg_mav_batt_state))
            {
                Invoke((MethodInvoker) delegate()
                {
                    rx_cnt++;
                    MavLink.Msg_mav_batt_state msg = (MavLink.Msg_mav_batt_state)e.Message;
                    lblBattery.Text = $"Battery: {msg.voltage:0.00} V";
                });
            }

            statistic_analyse(e.Message.GetType().ToString());
        }
Example #28
0
 public void recvMavMsg(object sender, MavlinkPacket e)
 {
     Console.WriteLine("mavMsg: " + e.Message);
 }
Example #29
0
        public void SendMessage(MavlinkMessage message)
        {
            MavlinkPacket packet = new MavlinkPacket(message);

            Mavlink.Send(packet);
        }
Example #30
0
 private void Mavlink_PacketReceived(object sender, MavlinkPacket e)
 {
     RecivePacket?.Invoke(e);
 }