c2课程同步
This commit is contained in:
parent
46f7c2d4b1
commit
4d4f8feb8b
Binary file not shown.
@ -130,7 +130,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 362.5, y: -12}
|
||||
m_AnchoredPosition: {x: 370.5, y: -12}
|
||||
m_SizeDelta: {x: 63, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5907608872145303852
|
||||
@ -300,7 +300,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 170.5, y: -12}
|
||||
m_AnchoredPosition: {x: 178.5, y: -12}
|
||||
m_SizeDelta: {x: 63, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7186105676469645931
|
||||
@ -772,8 +772,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 57.5, y: -12}
|
||||
m_SizeDelta: {x: 53, y: 24}
|
||||
m_AnchoredPosition: {x: 61.5, y: -12}
|
||||
m_SizeDelta: {x: 61, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3836652121421275166
|
||||
CanvasRenderer:
|
||||
@ -812,10 +812,10 @@ MonoBehaviour:
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 12:00
|
||||
m_Text: 00:00:00:00
|
||||
--- !u!1 &2361253683883903539
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1342,7 +1342,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 234.5, y: -10}
|
||||
m_AnchoredPosition: {x: 239.5, y: -10}
|
||||
m_SizeDelta: {x: 63, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &269708835447031313
|
||||
@ -1811,8 +1811,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 57.5, y: -10}
|
||||
m_SizeDelta: {x: 53, y: 20}
|
||||
m_AnchoredPosition: {x: 60, y: -10}
|
||||
m_SizeDelta: {x: 57, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &9087205330612000289
|
||||
CanvasRenderer:
|
||||
@ -1851,10 +1851,10 @@ MonoBehaviour:
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 12:00
|
||||
m_Text: 00:00:00
|
||||
--- !u!1 &4008537939924920360
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2244,7 +2244,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 288.7, y: 81.4}
|
||||
m_AnchoredPosition: {x: 285.7, y: 105.39996}
|
||||
m_SizeDelta: {x: 458, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 1}
|
||||
--- !u!222 &7444512366960477214
|
||||
@ -2421,7 +2421,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 362.5, y: -10}
|
||||
m_AnchoredPosition: {x: 367.5, y: -10}
|
||||
m_SizeDelta: {x: 63, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7402218478811892123
|
||||
@ -2662,7 +2662,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 426.5, y: -10}
|
||||
m_AnchoredPosition: {x: 431.5, y: -10}
|
||||
m_SizeDelta: {x: 63, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7588943949929111357
|
||||
@ -2740,7 +2740,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 426.5, y: -12}
|
||||
m_AnchoredPosition: {x: 434.5, y: -12}
|
||||
m_SizeDelta: {x: 63, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8229538892286258918
|
||||
@ -2818,7 +2818,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 298.5, y: -12}
|
||||
m_AnchoredPosition: {x: 306.5, y: -12}
|
||||
m_SizeDelta: {x: 63, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8887962303842604337
|
||||
@ -2972,7 +2972,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 234.5, y: -12}
|
||||
m_AnchoredPosition: {x: 242.5, y: -12}
|
||||
m_SizeDelta: {x: 63, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1292433779917309027
|
||||
@ -3412,7 +3412,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 111.5, y: -12}
|
||||
m_AnchoredPosition: {x: 119.5, y: -12}
|
||||
m_SizeDelta: {x: 53, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3812684676960283277
|
||||
@ -4196,7 +4196,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 298.5, y: -10}
|
||||
m_AnchoredPosition: {x: 303.5, y: -10}
|
||||
m_SizeDelta: {x: 63, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1079738450500434844
|
||||
@ -4412,7 +4412,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 111.5, y: -10}
|
||||
m_AnchoredPosition: {x: 116.5, y: -10}
|
||||
m_SizeDelta: {x: 53, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1973580062630642371
|
||||
@ -4490,7 +4490,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 170.5, y: -10}
|
||||
m_AnchoredPosition: {x: 175.5, y: -10}
|
||||
m_SizeDelta: {x: 63, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8126899616570297098
|
||||
@ -4847,12 +4847,12 @@ PrefabInstance:
|
||||
- target: {fileID: 5329299856310536127, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5329299856310536127, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5329299856310536127, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
||||
type: 3}
|
||||
@ -5022,12 +5022,12 @@ PrefabInstance:
|
||||
- target: {fileID: 5329299856310536127, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5329299856310536127, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5329299856310536127, guid: 6b94e789d6585a04dbdc04c8a7cf97b2,
|
||||
type: 3}
|
||||
|
||||
@ -19,16 +19,17 @@ namespace Assets.Scripts.Apis.Models
|
||||
public DateTime StartTime { get; set; }
|
||||
public DateTime CreateTime { get; set; }
|
||||
public int MaxPower { get; set; }
|
||||
public ushort MaxPace { get; set; }
|
||||
public int MaxPace { get; set; }
|
||||
public uint MaxRate { get; set; }
|
||||
public double AvgPace { get; set; }
|
||||
public double AvgPower { get; set; }
|
||||
public double AvgRate { get; set; }
|
||||
public int MaxHeartRate { get; set; }
|
||||
public int AvgHeartRate { get; set; }
|
||||
public ushort StrokeCount { get; set; }
|
||||
public uint TotalDistance { get; set; }
|
||||
public int StrokeCount { get; set; }
|
||||
public int TotalDistance { get; set; }
|
||||
public int TotalTime { get; set; }
|
||||
public double TrainingTime { get; set; }
|
||||
public int? Type { get; set; }
|
||||
public double? TypeValue { get; set; }
|
||||
public string ShadowIds { get; set; }
|
||||
@ -73,7 +74,7 @@ namespace Assets.Scripts.Apis.Models
|
||||
|
||||
public class SegmentList
|
||||
{
|
||||
public int Ticks { get; set; }
|
||||
public double Ticks { get; set; }
|
||||
public int Distance { get; set; }
|
||||
public int Speed { get; set; }
|
||||
public int Power { get; set; }
|
||||
|
||||
@ -21,7 +21,7 @@ public delegate void ChangeLanguageDelegate();
|
||||
|
||||
public static class App
|
||||
{
|
||||
public static string Host = "http://192.168.0.101:5083/";
|
||||
public static string Host = "http://192.168.0.102:5082/";
|
||||
|
||||
public static string AppVersion = Application.version;
|
||||
|
||||
@ -222,6 +222,9 @@ public static class App
|
||||
static App()
|
||||
{
|
||||
InitLanguage();
|
||||
Host = "http://pf.juze.pro/";
|
||||
//UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
|
||||
//TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
|
||||
#if !UNITY_EDITOR
|
||||
//测试服务器 Host = "http://192.168.0.101:5083/";
|
||||
Host = "http://pf.juze.pro/";
|
||||
|
||||
@ -11,11 +11,6 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
{
|
||||
public class C2RowerData : ICharacteristic, IRowerCommonData
|
||||
{
|
||||
public static string JUSTROW_HEX = "F1 76 07 01 01 01 13 02 01 01 61 F2";
|
||||
public static string TERMINATEWORKOUT_HEX = "F1 76 04 13 02 01 02 62 F2";
|
||||
public static string FIXEDDISTANCE_HEX = "F1 76 18 01 01 03 03 05 80 00 00 07 D0 05 05 80 00 00 01 90 14 01 01 13 02 01 01 28 F2";
|
||||
public static string FIXEDTIME_HEX = "F1 76 07 01 01 01 13 02 01 01 61 F2";
|
||||
|
||||
public Guid Uuid => ServiceUuids.Characteristics.C2RowerData35;
|
||||
|
||||
public Guid ServiceUuid => ServiceUuids.Characteristics.C2Service;
|
||||
@ -23,6 +18,7 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
public bool IsOptional => false;
|
||||
|
||||
public static event EventHandler EnableChanged;
|
||||
public static event EventHandler RowerTypeChanged;
|
||||
private static bool _isEnabled;
|
||||
public static bool IsEnabled
|
||||
{
|
||||
@ -56,59 +52,62 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsUserDefined { get; set; }
|
||||
|
||||
public static bool isReadyStatus { get; private set; }
|
||||
public static RowerTaskPanel.RowerType rowerType { get; private set; }
|
||||
public static RowerTaskPanel.RowerType rowerType = new RowerTaskPanel.RowerType() { type = 0 ,value = 0};
|
||||
public void HandleAttributeReceived(byte[] data)
|
||||
{
|
||||
|
||||
|
||||
if (data[0] == 0x35)
|
||||
{
|
||||
PeakDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 13)) / 10, true);
|
||||
AverageDriveForce = LbsToNewton(Convert.ToDouble(BitConvertHelper.ToUInt16(data, 15)) / 10, true);
|
||||
ElapsedTime = (int)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 1)) / 100);
|
||||
TotalDistance = (uint)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 4)) / 10);
|
||||
StrokeCount = BitConvertHelper.ToUInt16(data, 19);
|
||||
}
|
||||
else if (data[0] == 0x3d)
|
||||
{
|
||||
if (data[2] == 0)
|
||||
{
|
||||
PullValue = 0;
|
||||
}
|
||||
//老款表头不支持
|
||||
//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], true)));
|
||||
ushort pull = Convert.ToUInt16(Math.Round(LbsToNewton(data[i], true)));
|
||||
//r.Add(pull);
|
||||
PullValue = pull;
|
||||
}
|
||||
|
||||
// Debug.Log("拉力曲线:" + string.Join(",", r));
|
||||
// Debug.Log("拉力曲线:" + string.Join(",", r));
|
||||
}
|
||||
else if (data[0] == 0x31)
|
||||
{
|
||||
byte status = data[18];
|
||||
ElapsedTime = (int)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 1)) / 100);
|
||||
TotalDistance = (uint)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 4)) / 10);
|
||||
|
||||
int status = (int)data[7];
|
||||
int value = (data[17] << 16) + (data[16] << 8) + data[15];
|
||||
if (status == 128 && value != 0)
|
||||
|
||||
int type = 0;
|
||||
//3 里程 5 时间 1直接划船
|
||||
if (status == 3)
|
||||
{
|
||||
rowerType = new RowerTaskPanel.RowerType();
|
||||
rowerType.type = 1;
|
||||
type = 1;
|
||||
}
|
||||
if (status == 5)
|
||||
{
|
||||
type = 2;
|
||||
value /= 100;
|
||||
}
|
||||
//如果课程发生变化
|
||||
if (status != 0 && type > 0 && ( rowerType.type != type || rowerType.value != value))
|
||||
{
|
||||
Debug.Log($"status{status}-type{type}-value{value}");
|
||||
rowerType.type = type;
|
||||
rowerType.value = value;
|
||||
IsUserDefined = true;
|
||||
RowerTypeChanged?.Invoke(this,null);
|
||||
}
|
||||
else if (status == 0)
|
||||
{
|
||||
rowerType = new RowerTaskPanel.RowerType();
|
||||
rowerType.type = 2;
|
||||
rowerType.value = value / 100;
|
||||
IsUserDefined = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
rowerType = null;
|
||||
IsUserDefined = false;
|
||||
}
|
||||
Debug.Log($"里程:{TotalDistance}峰力值:{PeakDriveForce} 均力值{AverageDriveForce} ReadyStatus:{isReadyStatus} TIME{DateTime.Now}");
|
||||
//isReadyStatus = data[9] == 0;
|
||||
|
||||
var time = ((data[3] << 16) + (data[2] << 8) + data[1]) / 100;
|
||||
Debug.Log("划船时间" + time);
|
||||
isReadyStatus = data[9] == 0;
|
||||
@ -139,7 +138,8 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
}
|
||||
else if (data[0] == 0x39)
|
||||
{
|
||||
ElapsedTime = (int)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 5)) / 100);
|
||||
TrainingTime = (Convert.ToDouble(BitConvertHelper.ToUInt24(data, 5)) / 100);
|
||||
ElapsedTime = (int)TrainingTime;
|
||||
TotalDistance = (uint)(Convert.ToDouble(BitConvertHelper.ToUInt24(data, 8)) / 10);
|
||||
CompleteEvent?.Invoke(this, null);
|
||||
}
|
||||
@ -196,6 +196,7 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
|
||||
public int AveragePower { get; set; } = 0;
|
||||
public int ElapsedTime { get; set; } = 0;
|
||||
public double TrainingTime { get; set; } = 0;
|
||||
public int TotalEnergy { get; set; } = 0;
|
||||
public int EnergyPerHour { get; set; } = 0;
|
||||
public int EnergyPerMinute { get; set; } = 0;
|
||||
@ -216,6 +217,7 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
this.EnergyPerHour = 0;
|
||||
this.EnergyPerMinute = 0;
|
||||
this.ElapsedTime = 0;
|
||||
this.TrainingTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -77,6 +77,7 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
/// 运行时间
|
||||
/// </summary>
|
||||
public int ElapsedTime { get; set; } = 0;
|
||||
public double TrainingTime { get; set; } = 0;
|
||||
public int TotalEnergy { get; set; } = 0;
|
||||
public int EnergyPerHour { get; set; } = 0;
|
||||
public int EnergyPerMinute { get; set; } = 0;
|
||||
@ -295,6 +296,7 @@ namespace Assets.Scripts.Devices.Ble.Characteristic
|
||||
this.EnergyPerHour = 0;
|
||||
this.EnergyPerMinute = 0;
|
||||
this.ElapsedTime = 0;
|
||||
this.TrainingTime = 0;
|
||||
}
|
||||
|
||||
public int SizeOfDataForFlag(RowerDataFlag flag)
|
||||
|
||||
@ -37,6 +37,7 @@ namespace Assets.Scripts.Devices.Ble.Interfaces
|
||||
int InstantaneousPower { get; set; }
|
||||
int AveragePower { get; set; }
|
||||
int ElapsedTime { get; set; }
|
||||
double TrainingTime { get; set; }
|
||||
int TotalEnergy { get; set; }
|
||||
|
||||
int EnergyPerHour { get; set; }
|
||||
|
||||
@ -25,7 +25,7 @@ public class MainController : BaseScene
|
||||
Debug.Log("执行25");
|
||||
Version = this.transform.Find("GameObject").Find("Version").GetComponent<Text>();
|
||||
Version.text = "V"+App.AppVersion;
|
||||
transform.Find("Text").GetComponent<Text>().text = "2022-6-21-V1";
|
||||
transform.Find("Text").GetComponent<Text>().text = "2022-6-29-V1";
|
||||
DeviceCache.Init(PFConstants.DeviceCacheFolder);
|
||||
Loom.Initialize();
|
||||
msg = transform.Find("GameObject/Message").GetComponent<CanvasGroup>();
|
||||
|
||||
@ -104,7 +104,7 @@ public class RowerHomeScript : PFUIPanel
|
||||
double Kj = 0;
|
||||
int seconds = 0;
|
||||
bool isPause = false;
|
||||
public RowerType rowerType = null;
|
||||
public RowerType rowerType = new RowerType() { type = 1, value = 500 };
|
||||
/// <summary>
|
||||
/// 计算停止的秒数,如果超过5秒,除了累加值都变成--,这些值记录为0,提示用户如果超过90秒,将直接保存数据
|
||||
/// 如果5-90秒有拉力,则继续滑行
|
||||
@ -129,7 +129,6 @@ public class RowerHomeScript : PFUIPanel
|
||||
protected override void Awake()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString();
|
||||
rowerType = new RowerType() { type = 1, value = 500 };
|
||||
|
||||
spriteDict = new Dictionary<object, Sprite>()
|
||||
{
|
||||
@ -299,7 +298,7 @@ public class RowerHomeScript : PFUIPanel
|
||||
RowerData.CompleteEvent -= CompelteFunc;
|
||||
RowerData.CompleteEvent += CompelteFunc;
|
||||
}
|
||||
rowerType = new RowerType { type = 1, value = 500 };
|
||||
|
||||
HandleSelectType();
|
||||
Init();
|
||||
isFirstReset = false;
|
||||
@ -391,7 +390,7 @@ public class RowerHomeScript : PFUIPanel
|
||||
historyTime = 0;
|
||||
if (C2RowerData.IsEnabled == true)
|
||||
{
|
||||
Utils.showToast(null, "Press \"Menu\" to save.", int.MaxValue, stopFunc: () => C2RowerData.isReadyStatus, endCallback: Init);
|
||||
Utils.showToast(null, "Press \"Menu\" to save.", int.MaxValue, stopFunc: () => C2RowerData.isReadyStatus, endCallback: ()=> Init());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -419,7 +418,7 @@ public class RowerHomeScript : PFUIPanel
|
||||
dw = $"\nM";
|
||||
}
|
||||
bottom.Find("Expected/Title").GetComponent<Text>().text = $"{App.GetLocalString("EST")}{dw}";
|
||||
Init();
|
||||
Init(true);
|
||||
//Utils.showToast(null, "请滑动划船机并开始", isLowest: true, type: 1);
|
||||
}
|
||||
|
||||
@ -560,24 +559,27 @@ public class RowerHomeScript : PFUIPanel
|
||||
var strokeCount = RowerData.StrokeCount;
|
||||
var power = RowerData.InstantaneousPower;
|
||||
var rate = RowerData.StrokeRate;
|
||||
|
||||
|
||||
if (rowerType.type == 1)
|
||||
{
|
||||
TimeText.text = $"{RowerData.ElapsedTime}";
|
||||
KMText.text = "0";
|
||||
trainingTime = RowerData.TrainingTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
TimeText.text = TimeSpan.FromSeconds(0).ToPFString();
|
||||
KMText.text = $"{RowerData.TotalDistance}";
|
||||
trainingTime = rowerType.value;
|
||||
}
|
||||
|
||||
records.Add($"{strokeCount},{RowerData.ElapsedTime},{RowerData.TotalDistance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{RowerData.ElapsedTime}");
|
||||
truelyTime++;
|
||||
records.Add($"{strokeCount},{RowerData.ElapsedTime},{RowerData.TotalDistance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
||||
var tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = RowerData.InstantaneousPace, power = power, rate = rate, heartRate = heartRate, distance = (int)RowerData.TotalDistance, energy = energy };
|
||||
values.Add(tmpdata);
|
||||
SendDataToRace(tmpdata);
|
||||
HandleSaveDirect();
|
||||
}
|
||||
private double trainingTime = 0;
|
||||
private bool SaveFunc(RowerRecordModel model, List<string> files)
|
||||
{
|
||||
if (Application.internetReachability == NetworkReachability.NotReachable)
|
||||
@ -588,13 +590,14 @@ public class RowerHomeScript : PFUIPanel
|
||||
return false;
|
||||
}
|
||||
|
||||
model.TrainingTime = trainingTime;
|
||||
model.ManufacturerName = deviceName + " " + deviceNetwork + " " + deviceSensor;
|
||||
model.DeviceNumber = $"{ deviceAddress },{ deviceSensor }";
|
||||
|
||||
var res = ConfigHelper.rowerApi.Add(model, files);
|
||||
if (res.result)
|
||||
{
|
||||
UIManager.ShowRowerWelldone(model.Id, Init);
|
||||
UIManager.ShowRowerWelldone(model.Id, ()=> Init());
|
||||
try
|
||||
{
|
||||
if (File.Exists(files[0]))
|
||||
@ -671,8 +674,8 @@ public class RowerHomeScript : PFUIPanel
|
||||
model.AvgPower = values.Average(x => x.power);
|
||||
model.AvgRate = values.Average(x => x.rate);
|
||||
model.AvgHeartRate = (int)values.Average(x => x.heartRate);
|
||||
model.StrokeCount = (ushort)values.Max(x=>x.strokeCount);
|
||||
model.TotalDistance = (ushort)values.Max(x => x.distance);
|
||||
model.StrokeCount = values.Max(x=>x.strokeCount);
|
||||
model.TotalDistance = values.Max(x => x.distance);
|
||||
model.Kj = values.Max(x => x.energy);
|
||||
}
|
||||
model.TotalTime = records.Count;
|
||||
@ -710,14 +713,16 @@ public class RowerHomeScript : PFUIPanel
|
||||
//Disconnect();
|
||||
}
|
||||
|
||||
private void Init()
|
||||
private void Init(bool init = false)
|
||||
{
|
||||
initRower = init;
|
||||
ResetChart();
|
||||
deviceName = "";
|
||||
deviceNetwork = "";
|
||||
deviceAddress = "";
|
||||
deviceSensor = "";
|
||||
pointCount = 0;
|
||||
trainingTime = 0;
|
||||
print("初始化");
|
||||
if (Rower != null)
|
||||
{
|
||||
@ -745,21 +750,20 @@ public class RowerHomeScript : PFUIPanel
|
||||
openTimer = false;
|
||||
if (rowerType.type == 0)
|
||||
{
|
||||
Debug.Log("rowerType.type == 0");
|
||||
TimeText.text = "---";
|
||||
KMText.text = "---";
|
||||
}
|
||||
else
|
||||
if (rowerType.type == 1)
|
||||
{
|
||||
if (rowerType.type == 1)
|
||||
{
|
||||
TimeText.text = "---";
|
||||
KMText.text = $"{rowerType.value}";
|
||||
}
|
||||
else
|
||||
{
|
||||
TimeText.text = TimeSpan.FromSeconds(rowerType.value).ToPFString();
|
||||
KMText.text = "---";
|
||||
}
|
||||
Debug.Log("rowerType.type == 1");
|
||||
TimeText.text = "---";
|
||||
KMText.text = $"{rowerType.value}";
|
||||
}
|
||||
if (rowerType.type == 2)
|
||||
{
|
||||
TimeText.text = TimeSpan.FromSeconds(rowerType.value).ToPFString();
|
||||
KMText.text = "---";
|
||||
}
|
||||
|
||||
WText.text = "---";
|
||||
@ -788,6 +792,8 @@ public class RowerHomeScript : PFUIPanel
|
||||
#endif
|
||||
C2RowerData.EnableChanged -= ModeChanged;
|
||||
C2RowerData.EnableChanged += ModeChanged;
|
||||
C2RowerData.RowerTypeChanged -= RowerTypeChanged;
|
||||
C2RowerData.RowerTypeChanged += RowerTypeChanged;
|
||||
if (RowerData != null)
|
||||
{
|
||||
RowerData.RowerResChanged -= ResChanged;
|
||||
@ -810,7 +816,11 @@ public class RowerHomeScript : PFUIPanel
|
||||
Resources.UnloadUnusedAssets();
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
private void RowerTypeChanged(object sender, EventArgs e)
|
||||
{
|
||||
rowerType = C2RowerData.rowerType;
|
||||
HandleSelectType();
|
||||
}
|
||||
private void ModeChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (RowerData != null)
|
||||
@ -929,10 +939,8 @@ public class RowerHomeScript : PFUIPanel
|
||||
Debug.Log($"ElapsedTime :{RowerData.ElapsedTime} : {truelyTime}-{RowerData.TotalDistance}");
|
||||
TempRowerCalc tmpdata = null;
|
||||
|
||||
//解决C2里程训练无法结束的问题
|
||||
var c2notStop = C2RowerData.IsEnabled && rowerType!=null && rowerType.type !=0 && (rowerType.value-totalDistance) <= 5;
|
||||
//里程停止逻辑
|
||||
if (totalDistance == RowerData.TotalDistance && !c2notStop)
|
||||
if (totalDistance == RowerData.TotalDistance)
|
||||
{
|
||||
//判定一次停止
|
||||
stopSeconds++;
|
||||
@ -1351,8 +1359,10 @@ public class RowerHomeScript : PFUIPanel
|
||||
}
|
||||
float staticTimer = 1f,shortTimer = 0.25f;
|
||||
int ticks { get; set; } = 0;
|
||||
bool initRower = false;
|
||||
void Update()
|
||||
{
|
||||
InitC2Rower();
|
||||
shortTimer -= Time.deltaTime;
|
||||
if (shortTimer <= 0)
|
||||
{
|
||||
@ -1372,14 +1382,21 @@ public class RowerHomeScript : PFUIPanel
|
||||
TimerTicks();
|
||||
ticks++;
|
||||
}
|
||||
|
||||
HandleStatic();
|
||||
var heartRate = HeartRate ?? 0;
|
||||
BPMText.text = heartRate == 0 ? "---" : heartRate.ToString();
|
||||
HandleStatic();
|
||||
|
||||
timer += 1f ;
|
||||
}
|
||||
}
|
||||
private void InitC2Rower()
|
||||
{
|
||||
if (!initRower && Rower != null && RowerData != null && rowerType != null && C2RowerData.IsEnabled && C2RowerData.isReadyStatus)
|
||||
{
|
||||
initRower = true;
|
||||
HandleC2RowerTaskPanel(rowerType);
|
||||
}
|
||||
}
|
||||
|
||||
void ShortUpdateData()
|
||||
{
|
||||
if (!openTimer) return;
|
||||
@ -1433,17 +1450,5 @@ public class RowerHomeScript : PFUIPanel
|
||||
transform.Find("Stopped/DeviceStatus").gameObject.SetActive(!flag);
|
||||
transform.Find("Stopped/DeviceStatusConnect").gameObject.SetActive(flag);
|
||||
}
|
||||
if (Rower != null)
|
||||
{
|
||||
if (C2RowerData.IsEnabled == true && !openTimer && !isPause && C2RowerData.rowerType!=null && rowerType!= null && !rowerType.EqualTo(C2RowerData.rowerType))
|
||||
{
|
||||
rowerType = C2RowerData.rowerType;
|
||||
HandleSelectType();
|
||||
}
|
||||
//if (C2RowerData.IsEnabled)
|
||||
//{
|
||||
// Rower.C2GetStatus(new byte[] { 0xc1 });
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -246,6 +246,8 @@ public class RowerMultiModeScript : MonoBehaviour
|
||||
StartCoroutine(Get(url, (res) =>
|
||||
{
|
||||
shadowList = res.data;
|
||||
if (shadowList == null)
|
||||
return;
|
||||
var _tmpList = shadowList.Select(x => new TraceData
|
||||
{
|
||||
list = x.list,
|
||||
|
||||
@ -27,7 +27,7 @@ public class RowerTaskPanel : PFUIPanel
|
||||
}
|
||||
}
|
||||
Transform selector, distance, time;
|
||||
public RowerType rowerType;
|
||||
public RowerType rowerType { get; set; }
|
||||
|
||||
public Action<RowerType> callBack { get; set; }
|
||||
|
||||
|
||||
@ -155,7 +155,7 @@ public class RowerWelldone : PFUIPanel
|
||||
var game = i == 0 ? Instantiate<GameObject>(AllRecord) : Instantiate<GameObject>(Record);
|
||||
var content = i != 0 ? game.transform.Find("Content") : game.transform;
|
||||
content.Find("Index").GetComponent<Text>().text = i == 0 ? "ALL" : i.ToString("00");
|
||||
content.Find("Time").GetComponent<Text>().text = TimeSpan.FromSeconds(item.Ticks).ToString();
|
||||
content.Find("Time").GetComponent<Text>().text = i == 0 ? TimeSpan.FromSeconds(item.Ticks).ToString(@"hh\:mm\:ss\.ff"): TimeSpan.FromSeconds(item.Ticks).ToString(@"hh\:mm\:ss");
|
||||
content.Find("Distance").GetComponent<Text>().text = item.Distance.ToString("#0");
|
||||
content.Find("500").GetComponent<Text>().text = TimeSpan.FromSeconds(item.Speed).ToString().Substring(3, 5);
|
||||
content.Find("Power").GetComponent<Text>().text = item.Power.ToString("#0");
|
||||
|
||||
@ -365,7 +365,7 @@ public class UIManager : MonoBehaviour
|
||||
}
|
||||
public static void ShowRowerTaskPanel(Action<RowerTaskPanel.RowerType> callBack, RowerTaskPanel.RowerType type)
|
||||
{
|
||||
UIManager.Instance.RowerTaskPanel.rowerType = type;
|
||||
UIManager.Instance.RowerTaskPanel.rowerType = new RowerTaskPanel.RowerType() { value = type.value,type= type.type };
|
||||
UIManager.Instance.RowerTaskPanel.callBack = callBack;
|
||||
UIManager.Show(UIManager.Instance.RowerTaskPanel, null, true);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user