You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
59 lines
1.5 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace RobotLib
|
|
{
|
|
public class DevBattery : DevBase
|
|
{
|
|
private float voltage;
|
|
|
|
public event EventHandler<BatteryEventArgs> BatteryChanged;
|
|
|
|
public float Voltage
|
|
{
|
|
get { return voltage; }
|
|
private set
|
|
{
|
|
// value changed?
|
|
if(voltage != value)
|
|
{
|
|
// set new voltage and raise event
|
|
voltage = value;
|
|
BatteryChanged?.Invoke(this, new BatteryEventArgs(voltage));
|
|
}
|
|
}
|
|
}
|
|
|
|
public DevBattery(Com com) : base(com, "battery") { }
|
|
|
|
public override void Refresh()
|
|
{
|
|
SendMessage("get battery status!");
|
|
}
|
|
|
|
protected override void ParseMessage(string message)
|
|
{
|
|
// example message = "Battery: 1.25 V"
|
|
var keyValue = message.Trim().Split(':');
|
|
string key = keyValue[0].Trim();
|
|
string value = keyValue[1].Trim();
|
|
|
|
switch (key)
|
|
{
|
|
case "battery":
|
|
value = value.Trim(' ', 'V');
|
|
this.Voltage = float.Parse(value);
|
|
break;
|
|
|
|
default:
|
|
log.Warn($"Unkown element {key}: {value} in message {message}");
|
|
break;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|