c2课程同步

This commit is contained in:
lishuo 2022-06-30 14:39:13 +08:00
parent 46f7c2d4b1
commit 4d4f8feb8b
13 changed files with 125 additions and 109 deletions

View File

@ -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}

View File

@ -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; }

View File

@ -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/";

View File

@ -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;
}
}

View File

@ -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)

View File

@ -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; }

View File

@ -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>();

View File

@ -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 });
//}
}
}
}

View File

@ -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,

View File

@ -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; }

View File

@ -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");

View File

@ -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);
}