public BatteryStatusPacketReceivedEventArgs(BatteryStatus BattStat) { this.BattStat = BattStat; }
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(); } }
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); } }