public BatteryStatusPacketReceivedEventArgs(BatteryStatus BattStat)
 {
     this.BattStat = BattStat;
 }
Exemple #2
0
        void ComProt_BatteryStatusPacketReceived(object sender, CommProtocol.BatteryStatusPacketReceivedEventArgs e)
        {
            CommPacketRXLight.On = true;
            PacketReceived = true;
            BattStat = e.BattStat;

            BatteryVoltageGauge.Value = BattStat.Voltage;
            BatteryTemperatureGauge.Value = BattStat.Temperature;
            BatteryCurrentGauge.Value = BattStat.CurrentDraw;
        }
        private void ParseBatteryStatusPacket()
        {
            /*
               Battery Status

               1 0xA5
             0x5A    Packet Header

               3 0x08   bytes

               4 0x74	Report type “Telemetry”
             0x42	Report “Battery status”

               6 0xVVVV	Hex Value representing battery voltage

               8 0xIIII	Hex Value representing helicopter current draw

              10 0xTTTT	Hex Value representing battery temperature

              12 0xXX //checksum high
             0xXX //checksum low

              14 0xCC
              15 0x33 //footer
               */
            if (IncomingDataBuffer.Length == 15 && (int)IncomingDataBuffer[13] == 0xCC && (int)IncomingDataBuffer[14] == 0x33)
            {
                //calculate checksum
                UInt16 sum = 0;
                for (int i = 2; i < 11; i++)
                {
                    sum += (ushort)IncomingDataBuffer[i];
                }
                byte chk1 = (byte)((sum & 0xFF00) >> 8);
                byte chk2 = (byte)(sum & 0x00FF);
                if (chk1 != (int)IncomingDataBuffer[11] || chk2 != (int)IncomingDataBuffer[12])
                {
                    Invoke(BadPacketReceived, new object[] {this,
                        new BadPacketReceivedEventArgs(IncomingDataBuffer,
                        string.Format("Invalid battery status packet: invalid checksum: received {0:x4}, expected {1:x4}",
                       (Convert.ToUInt16((int)IncomingDataBuffer[11]) << 8) + (int)IncomingDataBuffer[12], sum))}
                       );

                    ClearBuffer();
                }
                else
                {
                    //checksum ok
                    BatteryStatus b = new BatteryStatus();
                    b.Voltage = (short)(((int)IncomingDataBuffer[5] << 8) + (int)IncomingDataBuffer[6]);
                    b.CurrentDraw = (short)(((int)IncomingDataBuffer[7] << 8) + (int)IncomingDataBuffer[8]);
                    b.Temperature = (short)(((int)IncomingDataBuffer[9] << 8) + (int)IncomingDataBuffer[10]);
                    //invoke the event
                    ClearBuffer();
                    Invoke(BatteryStatusPacketReceived, new object[] { this, new BatteryStatusPacketReceivedEventArgs(b) });

                }
            }
            else if (IncomingDataBuffer.Length >= 15)
            {
                Invoke(BadPacketReceived, new object[] { this, new BadPacketReceivedEventArgs(IncomingDataBuffer, "Bad battery status packet received") });
                ClearBuffer();
            }
        }
Exemple #4
0
        void cp_BatteryStatusPacketReceived(object sender, CommProtocol.BatteryStatusPacketReceivedEventArgs e)
        {
            ConsecutiveBadPackets = 0;

            Battery_Status = e.BattStat;

            textBox1.AppendText("Battery status packet received: Current: " + Battery_Status.CurrentDraw + " Temperature: " + Battery_Status.Temperature + " Voltage: " + Battery_Status.Voltage + "\r\n");

            if (!ManualMode)
            {
                InsertRowToReceived_packetsTable("BatteryStatus", "Current: " + Battery_Status.CurrentDraw + " Temperature: " + Battery_Status.Temperature + " Voltage: " + Battery_Status.Voltage);
            }
        }