using System;
namespace Plane.Copters
{
partial class CopterImplSharedPart
{
internal uint TimebootMs
{
get { return _TimebootMs; }
set
{
_TimebootMs = value;
AnalizeTimeBootMs(_TimebootMs);
}
}
private float _moto1SpeedPercent;
///
/// 1号马达转速百分比(0~1.0)
///
public float Motor1SpeedPercent
{
get { return _moto1SpeedPercent; }
set { Set(nameof(Motor1SpeedPercent), ref _moto1SpeedPercent, value); }
}
private float _moto2SpeedPercent;
///
/// 2号马达转速百分比(0~1.0)
///
public float Motor2SpeedPercent
{
get { return _moto2SpeedPercent; }
set { Set(nameof(Motor2SpeedPercent), ref _moto2SpeedPercent, value); }
}
private float _moto3SpeedPercent;
///
/// 3号马达转速百分比(0~1.0)
///
public float Motor3SpeedPercent
{
get { return _moto3SpeedPercent; }
set { Set(nameof(Motor3SpeedPercent), ref _moto3SpeedPercent, value); }
}
private float _moto4SpeedPercent;
///
/// 4号马达转速百分比(0~1.0)
///
public float Motor4SpeedPercent
{
get { return _moto4SpeedPercent; }
set { Set(nameof(Motor4SpeedPercent), ref _moto4SpeedPercent, value); }
}
private float _moto5SpeedPercent;
///
/// 5号马达转速百分比(0~1.0)
///
public float Motor5SpeedPercent
{
get { return _moto5SpeedPercent; }
set { Set(nameof(Motor5SpeedPercent), ref _moto5SpeedPercent, value); }
}
private float _moto6SpeedPercent;
///
/// 6号马达转速百分比(0~1.0)
///
public float Motor6SpeedPercent
{
get { return _moto6SpeedPercent; }
set { Set(nameof(Motor6SpeedPercent), ref _moto6SpeedPercent, value); }
}
private float _moto7SpeedPercent;
///
/// 7号马达转速百分比(0~1.0)
///
public float Motor7SpeedPercent
{
get { return _moto7SpeedPercent; }
set { Set(nameof(Motor7SpeedPercent), ref _moto7SpeedPercent, value); }
}
private float _moto8SpeedPercent;
///
/// 8号马达转速百分比(0~1.0)
///
public float Motor8SpeedPercent
{
get { return _moto8SpeedPercent; }
set { Set(nameof(Motor8SpeedPercent), ref _moto8SpeedPercent, value); }
}
///
/// 将16进制映射为0~1.0的数值。
/// 其中,0转为0,1~15映射为1~100。
///
///
///
private float Converter1_15to1_100(int value)
{
if (value == 0f)
{
return 0;
}
else if (value == 1f)
{
return 0.01f;
}
else
{
return (value - 1) / 14f + 0.01f;
}
}
private void AnalizeTimeBootMs(uint value)
{
var str = value.ToString("x8");//转成8位的16进制字符,共8个ASCII字符,每个字符对应一个马达转速(16进制)
Motor1SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 1, 1), 16));
Motor2SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 2, 1), 16));
Motor3SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 3, 1), 16));
Motor4SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 4, 1), 16));
Motor5SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 5, 1), 16));
Motor6SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 6, 1), 16));
Motor7SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 7, 1), 16));
Motor8SpeedPercent = Converter1_15to1_100(Convert.ToInt32(str.Substring(str.Length - 8, 1), 16));
}
}
}