Plane.Sdk3/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.MotorSpeed.cs
2017-02-27 02:02:19 +08:00

142 lines
4.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
namespace Plane.Copters
{
partial class CopterImplSharedPart
{
internal uint TimebootMs
{
get { return _TimebootMs; }
set
{
_TimebootMs = value;
AnalizeTimeBootMs(_TimebootMs);
}
}
private float _moto1SpeedPercent;
/// <summary>
/// 1号马达转速百分比0~1.0
/// </summary>
public float Motor1SpeedPercent
{
get { return _moto1SpeedPercent; }
set { Set(nameof(Motor1SpeedPercent), ref _moto1SpeedPercent, value); }
}
private float _moto2SpeedPercent;
/// <summary>
/// 2号马达转速百分比0~1.0
/// </summary>
public float Motor2SpeedPercent
{
get { return _moto2SpeedPercent; }
set { Set(nameof(Motor2SpeedPercent), ref _moto2SpeedPercent, value); }
}
private float _moto3SpeedPercent;
/// <summary>
/// 3号马达转速百分比0~1.0
/// </summary>
public float Motor3SpeedPercent
{
get { return _moto3SpeedPercent; }
set { Set(nameof(Motor3SpeedPercent), ref _moto3SpeedPercent, value); }
}
private float _moto4SpeedPercent;
/// <summary>
/// 4号马达转速百分比0~1.0
/// </summary>
public float Motor4SpeedPercent
{
get { return _moto4SpeedPercent; }
set { Set(nameof(Motor4SpeedPercent), ref _moto4SpeedPercent, value); }
}
private float _moto5SpeedPercent;
/// <summary>
/// 5号马达转速百分比0~1.0
/// </summary>
public float Motor5SpeedPercent
{
get { return _moto5SpeedPercent; }
set { Set(nameof(Motor5SpeedPercent), ref _moto5SpeedPercent, value); }
}
private float _moto6SpeedPercent;
/// <summary>
/// 6号马达转速百分比0~1.0
/// </summary>
public float Motor6SpeedPercent
{
get { return _moto6SpeedPercent; }
set { Set(nameof(Motor6SpeedPercent), ref _moto6SpeedPercent, value); }
}
private float _moto7SpeedPercent;
/// <summary>
/// 7号马达转速百分比0~1.0
/// </summary>
public float Motor7SpeedPercent
{
get { return _moto7SpeedPercent; }
set { Set(nameof(Motor7SpeedPercent), ref _moto7SpeedPercent, value); }
}
private float _moto8SpeedPercent;
/// <summary>
/// 8号马达转速百分比0~1.0
/// </summary>
public float Motor8SpeedPercent
{
get { return _moto8SpeedPercent; }
set { Set(nameof(Motor8SpeedPercent), ref _moto8SpeedPercent, value); }
}
/// <summary>
/// 将16进制映射为0~1.0的数值。
/// 其中0转为01~15映射为1~100。
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
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));
}
}
}