83 lines
2.6 KiB
C#
83 lines
2.6 KiB
C#
using Assets.Scripts.Ble;
|
|
using Assets.Scripts.Devices.Ble.Interfaces;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
namespace Assets.Scripts.Devices.Ble.Characteristic
|
|
{
|
|
public class C2RowerData : ICharacteristic, IRowerCommonData
|
|
{
|
|
public Guid Uuid => ServiceUuids.Characteristics.C2RowerData;
|
|
|
|
public Guid ServiceUuid => ServiceUuids.Characteristics.C2Service;
|
|
|
|
public bool IsOptional => false;
|
|
|
|
public static event EventHandler EnableChanged;
|
|
private static bool? _isEnabled;
|
|
public static bool? IsEnabled
|
|
{
|
|
get => _isEnabled;
|
|
set
|
|
{
|
|
_isEnabled = value;
|
|
if (EnableChanged != null)
|
|
{
|
|
EnableChanged(_isEnabled, new EventArgs());
|
|
}
|
|
}
|
|
}
|
|
|
|
//0.1 lbs of force, max=6553.5m 单位0.1磅
|
|
public double PeakDriveForce { get; set; }
|
|
public double AverageDriveForce { get; set; }
|
|
|
|
public event EventHandler PullChanged;
|
|
private ushort _pullValue;
|
|
public ushort PullValue
|
|
{
|
|
get { return _pullValue; }
|
|
set
|
|
{
|
|
_pullValue = value;
|
|
if (this.PullChanged != null)
|
|
{
|
|
this.PullChanged(this, new EventArgs());
|
|
}
|
|
}
|
|
}
|
|
public void HandleAttributeReceived(byte[] data)
|
|
{
|
|
Debug.Log("数据" + string.Join(",", data));
|
|
if (data[0] == 53)
|
|
{
|
|
PeakDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 13)) / 10);
|
|
AverageDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 15)) / 10);
|
|
Debug.Log($"峰力值:{PeakDriveForce} 均力值{AverageDriveForce}");
|
|
}
|
|
else if (data[0] == 61)
|
|
{
|
|
List<ushort> r = new List<ushort>();
|
|
for (int i = 3; i < data.Length; i += 2)
|
|
{
|
|
ushort pull = data[i] < 10 ? (ushort)0 : Convert.ToUInt16(Math.Round(LbsToNewton(data[i])));
|
|
r.Add(pull);
|
|
PullValue = pull;
|
|
}
|
|
|
|
Debug.Log("拉力曲线:"+ string.Join(",",r));
|
|
}
|
|
}
|
|
private double LbsToNewton(double lbs) => 4.4482216 * lbs;
|
|
public void SetUnavailable()
|
|
{
|
|
//throw new NotImplementedException();
|
|
}
|
|
}
|
|
|
|
}
|