Merge remote-tracking branch 'origin/dev_lishuo' into dev
This commit is contained in:
commit
1020632757
@ -1137,7 +1137,7 @@ namespace Mapbox.Unity.Map
|
|||||||
|
|
||||||
public virtual void SetCenterLatitudeLongitude(Vector2d centerLatitudeLongitude)
|
public virtual void SetCenterLatitudeLongitude(Vector2d centerLatitudeLongitude)
|
||||||
{
|
{
|
||||||
_options.locationOptions.latitudeLongitude = string.Format("{0}, {1}", centerLatitudeLongitude.x, centerLatitudeLongitude.y);
|
_options.locationOptions.latitudeLongitude = string.Format("{0}, {1}", centerLatitudeLongitude.x.ToString(CultureInfo.InvariantCulture), centerLatitudeLongitude.y.ToString(CultureInfo.InvariantCulture));
|
||||||
_centerLatitudeLongitude = centerLatitudeLongitude;
|
_centerLatitudeLongitude = centerLatitudeLongitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -600,7 +600,9 @@ public class CyclingController : DeviceServiceMonoBase
|
|||||||
var list = mapData.List.Select(c => (float)c.Elevation).ToArray();
|
var list = mapData.List.Select(c => (float)c.Elevation).ToArray();
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
private void OnApplicationQuit()
|
||||||
|
{
|
||||||
|
App.MainDeviceAdapter.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
using Assets.Scripts.Devices.Ant;
|
using Assets.Scripts.Ble;
|
||||||
|
using Assets.Scripts.Devices;
|
||||||
|
using Assets.Scripts.Devices.Ant;
|
||||||
using Assets.Scripts.Devices.Ant.Interfaces;
|
using Assets.Scripts.Devices.Ant.Interfaces;
|
||||||
|
using Assets.Scripts.Devices.Ble;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -11,7 +14,7 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
public void TrackResistance(double grade)
|
public void TrackResistance(double grade)
|
||||||
{
|
{
|
||||||
var device = (CurrentTrainer as FitDevice);
|
var device = (CurrentTrainer as ITrainerDevice);
|
||||||
if (device != null)
|
if (device != null)
|
||||||
{
|
{
|
||||||
device.SetTrackResistance(grade);
|
device.SetTrackResistance(grade);
|
||||||
@ -19,10 +22,10 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
}
|
}
|
||||||
#region 获取设备数据
|
#region 获取设备数据
|
||||||
|
|
||||||
public AbstractAntDevice CurrentTrainer
|
public AbstractDevice CurrentTrainer
|
||||||
{
|
{
|
||||||
get {
|
get {
|
||||||
var devices = AntConnector.Instance().discoveredDevices.Where(d => d.State == DeviceState.Connected && (d.Sensor == SensorType.Trainer));
|
var devices = App.MainDeviceAdapter.GetDevices().Where(d => d.State == DeviceState.Connected && (d.Sensor == SensorType.Trainer));
|
||||||
_device = null;//重置设备状态
|
_device = null;//重置设备状态
|
||||||
if (devices.Count() > 0)
|
if (devices.Count() > 0)
|
||||||
{
|
{
|
||||||
@ -32,9 +35,18 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
(_device as IRequiresRiderWeight).RiderWeight = App.CurrentUser.Weight;
|
(_device as IRequiresRiderWeight).RiderWeight = App.CurrentUser.Weight;
|
||||||
}
|
}
|
||||||
ManufacturerId = _device.ManufacturerId;
|
if (_device.Network == NetworkType.ANT)
|
||||||
DeviceNumber = $"{ _device.DeviceNumber },{ _device.DeviceType }";
|
{
|
||||||
AntModelId = _device.AntModelId;
|
var antDevice = _device as AbstractAntDevice;
|
||||||
|
ManufacturerId = antDevice.ManufacturerId;
|
||||||
|
AntModelId = antDevice.AntModelId;
|
||||||
|
DeviceNumber = $"{ antDevice.DeviceNumber },{ antDevice.DeviceType}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var bleDevice = _device as BleDevice;
|
||||||
|
DeviceNumber = $"{ Helper.FormateMacAddress(bleDevice.Address) },{ ServiceUuids.GetBySensor(bleDevice.Sensor) }";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return _device;
|
return _device;
|
||||||
@ -69,7 +81,8 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double UpdatePower()
|
public double UpdatePower()
|
||||||
{
|
{
|
||||||
return PowerDevice == null ? 0 : PowerDevice.Power;
|
var t = PowerDevice == null ? 0 : PowerDevice.Power;
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新踏频
|
/// 更新踏频
|
||||||
@ -94,10 +107,10 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
|
|
||||||
#region field
|
#region field
|
||||||
|
|
||||||
protected AbstractAntDevice _device;
|
protected AbstractDevice _device;
|
||||||
protected AntConnector _antConnector;
|
protected AntConnector _antConnector;
|
||||||
|
|
||||||
public int ManufacturerId { get; private set; }
|
public int? ManufacturerId { get; private set; }
|
||||||
public string DeviceNumber { get; private set; }
|
public string DeviceNumber { get; private set; }
|
||||||
public int? AntModelId { get; private set; }
|
public int? AntModelId { get; private set; }
|
||||||
|
|
||||||
@ -111,8 +124,8 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
#endregion
|
#endregion
|
||||||
public bool CheckAnt()
|
public bool CheckAnt()
|
||||||
{
|
{
|
||||||
_antConnector = AntConnector.Instance();
|
//_antConnector = AntConnector.Instance();
|
||||||
var devices = _antConnector.discoveredDevices.Where(d => d.State == DeviceState.Connected && (d.Sensor == SensorType.Trainer || d.Sensor == SensorType.Power));
|
var devices = App.MainDeviceAdapter.GetDevices().Where(d => d.State == DeviceState.Connected && (d.Sensor == SensorType.Trainer || d.Sensor == SensorType.Power));
|
||||||
if (devices.Count() > 0)
|
if (devices.Count() > 0)
|
||||||
{
|
{
|
||||||
_device = devices.OrderByDescending(d => d.Sensor == SensorType.Trainer).First();
|
_device = devices.OrderByDescending(d => d.Sensor == SensorType.Trainer).First();
|
||||||
@ -120,9 +133,19 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
(_device as IRequiresRiderWeight).RiderWeight = App.CurrentUser.Weight;
|
(_device as IRequiresRiderWeight).RiderWeight = App.CurrentUser.Weight;
|
||||||
}
|
}
|
||||||
ManufacturerId = _device.ManufacturerId;
|
if (_device.Network == NetworkType.ANT)
|
||||||
DeviceNumber = $"{ _device.DeviceNumber },{ _device.DeviceType }";
|
{
|
||||||
AntModelId = _device.AntModelId;
|
var antDevice = _device as AbstractAntDevice;
|
||||||
|
ManufacturerId = antDevice.ManufacturerId;
|
||||||
|
AntModelId = antDevice.AntModelId;
|
||||||
|
DeviceNumber = $"{ antDevice.DeviceNumber },{ antDevice.DeviceType}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var bleDevice =_device as BleDevice;
|
||||||
|
DeviceNumber = $"{ bleDevice.Address },{ bleDevice.Sensor }";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -146,11 +169,11 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
//速度和踏频一体的传感器,里面的速度是不可以读的,只允许读 踏频,切记
|
//速度和踏频一体的传感器,里面的速度是不可以读的,只允许读 踏频,切记
|
||||||
if (_antConnector == null)
|
//if (_antConnector == null)
|
||||||
{
|
//{
|
||||||
return null;
|
// return null;
|
||||||
}
|
//}
|
||||||
var device = _antConnector.discoveredDevices.Where(d => d.State == DeviceState.Connected && d is ISpeedDevice).FirstOrDefault();
|
var device = App.MainDeviceAdapter.GetDevices().Where(d => d.State == DeviceState.Connected && d is ISpeedDevice).FirstOrDefault();
|
||||||
if (device != null)
|
if (device != null)
|
||||||
{
|
{
|
||||||
return (ISpeedDevice)device;
|
return (ISpeedDevice)device;
|
||||||
@ -165,11 +188,11 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_antConnector == null)
|
//if (_antConnector == null)
|
||||||
{
|
//{
|
||||||
return null;
|
// return null;
|
||||||
}
|
//}
|
||||||
var device = _antConnector.discoveredDevices.Where(d => d.State == DeviceState.Connected && d is IHeartRateDevice).FirstOrDefault();
|
var device = App.MainDeviceAdapter.GetDevices().Where(d => d.State == DeviceState.Connected && d is IHeartRateDevice).FirstOrDefault();
|
||||||
if (device != null)
|
if (device != null)
|
||||||
{
|
{
|
||||||
return (IHeartRateDevice)device;
|
return (IHeartRateDevice)device;
|
||||||
@ -184,11 +207,11 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_antConnector == null)
|
//if (_antConnector == null)
|
||||||
{
|
//{
|
||||||
return null;
|
// return null;
|
||||||
}
|
//}
|
||||||
var powerDevices = _antConnector.discoveredDevices.Where(d => d.State == DeviceState.Connected && d is IPowerDevice).ToList();
|
var powerDevices = App.MainDeviceAdapter.GetDevices().Where(d => d.State == DeviceState.Connected && d is IPowerDevice).ToList();
|
||||||
var power = powerDevices.FirstOrDefault(d => d.Sensor == SensorType.Power);
|
var power = powerDevices.FirstOrDefault(d => d.Sensor == SensorType.Power);
|
||||||
if (power != null)
|
if (power != null)
|
||||||
{
|
{
|
||||||
@ -210,11 +233,11 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_antConnector == null)
|
//if (_antConnector == null)
|
||||||
{
|
//{
|
||||||
return null;
|
// return null;
|
||||||
}
|
//}
|
||||||
var cadences = _antConnector.discoveredDevices.Where(d => d.State == DeviceState.Connected && d is ICadenceDevice).ToList();
|
var cadences = App.MainDeviceAdapter.GetDevices().Where(d => d.State == DeviceState.Connected && d is ICadenceDevice).ToList();
|
||||||
var cadence = cadences.FirstOrDefault(d => d.Sensor == SensorType.Cadence);
|
var cadence = cadences.FirstOrDefault(d => d.Sensor == SensorType.Cadence);
|
||||||
if (cadence != null)
|
if (cadence != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -108,6 +108,28 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
S = s.ToString();
|
S = s.ToString();
|
||||||
return $"{H}:{M}:{S}";
|
return $"{H}:{M}:{S}";
|
||||||
}
|
}
|
||||||
|
public static string FormateMacAddress(string v)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var s = Convert.ToInt64(v).ToString("x8").ToUpperInvariant();
|
||||||
|
var array = s.ToCharArray();
|
||||||
|
StringBuilder newLsit = new StringBuilder();
|
||||||
|
for (int i = array.Length - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
newLsit.Append(array[i]);
|
||||||
|
if (i % 2 == 0 && i > 0)
|
||||||
|
{
|
||||||
|
newLsit.Append(":");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newLsit.ToString();
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 计算速度
|
/// 计算速度
|
||||||
/// 参考 http://bikecalculator.com/index.html
|
/// 参考 http://bikecalculator.com/index.html
|
||||||
|
|||||||
@ -62,7 +62,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 厂商Id
|
/// 厂商Id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int ManufacturerId { get; set; }
|
public int? ManufacturerId { get; set; }
|
||||||
|
|
||||||
public int? AntModelId { get; set; }
|
public int? AntModelId { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -53,19 +53,19 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
|||||||
{
|
{
|
||||||
string[] split = data.Split(',');
|
string[] split = data.Split(',');
|
||||||
var target = new TargetData();
|
var target = new TargetData();
|
||||||
target.Ticks = int.Parse(split[0]);
|
target.Ticks = Convert.ToInt32(split[0], CultureInfo.InvariantCulture); //int.Parse(split[0]);
|
||||||
target._Power = double.Parse(split[1]);
|
target._Power = Convert.ToDouble(split[1], CultureInfo.InvariantCulture);
|
||||||
target._Speed = double.Parse(split[2]);
|
target._Speed = Convert.ToDouble(split[2], CultureInfo.InvariantCulture);// double.Parse(split[2]);
|
||||||
target._Distance = double.Parse(split[3]);
|
target._Distance = Convert.ToDouble(split[3], CultureInfo.InvariantCulture); //double.Parse(split[3]);
|
||||||
target._Cadence = double.Parse(split[4]);
|
target._Cadence = Convert.ToDouble(split[4], CultureInfo.InvariantCulture); //double.Parse(split[4]);
|
||||||
if (!string.IsNullOrWhiteSpace(split[5]) && split[5] != "null")
|
if (!string.IsNullOrWhiteSpace(split[5]) && split[5] != "null")
|
||||||
{
|
{
|
||||||
target._HeartRate = int.Parse(split[5]);
|
target._HeartRate = Convert.ToInt32(split[5], CultureInfo.InvariantCulture); //int.Parse(split[5]);
|
||||||
}
|
}
|
||||||
if (split.Length > 6)
|
if (split.Length > 6)
|
||||||
{
|
{
|
||||||
target._Lat = double.Parse(split[6]);
|
target._Lat = Convert.ToDouble(split[6], CultureInfo.InvariantCulture); //double.Parse(split[6]);
|
||||||
target._Lon = double.Parse(split[7]);
|
target._Lon = Convert.ToDouble(split[7], CultureInfo.InvariantCulture); //double.Parse(split[7]);
|
||||||
//target._Bearing = double.Parse(split[8]);
|
//target._Bearing = double.Parse(split[8]);
|
||||||
}
|
}
|
||||||
return target;
|
return target;
|
||||||
|
|||||||
@ -60,8 +60,9 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
//#endif
|
//#endif
|
||||||
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
|
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Debug.Log(ex.Message);
|
||||||
heartRate = 0;
|
heartRate = 0;
|
||||||
power = 0;
|
power = 0;
|
||||||
cadance = 0;
|
cadance = 0;
|
||||||
|
|||||||
@ -3,6 +3,7 @@ using Assets.Scenes.Ride.Scripts.Model;
|
|||||||
using Assets.Scripts.Apis.Models;
|
using Assets.Scripts.Apis.Models;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -91,7 +92,7 @@ namespace Assets.Scripts.Apis
|
|||||||
|
|
||||||
public async Task<JsonResult<List<NearRouteModel>>> GetNearRouteAsync(float lat, float lng, float zoom, string bounds)
|
public async Task<JsonResult<List<NearRouteModel>>> GetNearRouteAsync(float lat, float lng, float zoom, string bounds)
|
||||||
{
|
{
|
||||||
var res = await GetAsync<JsonResult<List<NearRouteModel>>>($"/Map/GetNearRoute?lat={ lat }&lng={ lng }&zoom={zoom}&bounds={ bounds }");
|
var res = await GetAsync<JsonResult<List<NearRouteModel>>>($"/Map/GetNearRoute?lat={ lat.ToString(CultureInfo.InvariantCulture) }&lng={ lng.ToString(CultureInfo.InvariantCulture) }&zoom={zoom.ToString(CultureInfo.InvariantCulture)}&bounds={ bounds }");
|
||||||
|
|
||||||
//var result = System.Text.Encoding.UTF8.GetString(res);
|
//var result = System.Text.Encoding.UTF8.GetString(res);
|
||||||
return res;
|
return res;
|
||||||
@ -142,7 +143,7 @@ namespace Assets.Scripts.Apis
|
|||||||
public async Task<JsonResult<object>> GetEarthData(double lat, double lon)
|
public async Task<JsonResult<object>> GetEarthData(double lat, double lon)
|
||||||
{
|
{
|
||||||
//CultureInfo.InvariantCulture
|
//CultureInfo.InvariantCulture
|
||||||
var result = await GetAsync<JsonResult<object>>($"Map/GetEarthData?lat={ lat }&lon={ lon }");
|
var result = await GetAsync<JsonResult<object>>($"Map/GetEarthData?lat={ lat.ToString(CultureInfo.InvariantCulture) }&lon={ lon.ToString(CultureInfo.InvariantCulture) }");
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -18,7 +19,7 @@ namespace Assets.Scripts.Apis
|
|||||||
}
|
}
|
||||||
public async Task<Stream> GetMapImage(IpToGeoModel locationInfo)
|
public async Task<Stream> GetMapImage(IpToGeoModel locationInfo)
|
||||||
{
|
{
|
||||||
return await GetThirdPartStreamAsync($"https://api.mapbox.com/styles/v1/juzetest/ckmkdjwsa1nvt17nr1ps4fqgs/static/{locationInfo.longitude},{locationInfo.latitude},12,0/1280x1280?access_token=pk.eyJ1IjoianV6ZXRlc3QiLCJhIjoiY2ttazhsbnpiMGVrdjJucGhyNnh6eXcxYSJ9.6zj2U9eFCNJRMljNlMxjVg");
|
return await GetThirdPartStreamAsync($"https://api.mapbox.com/styles/v1/juzetest/ckmkdjwsa1nvt17nr1ps4fqgs/static/{locationInfo.longitude.ToString(CultureInfo.InvariantCulture)},{locationInfo.latitude.ToString(CultureInfo.InvariantCulture)},12,0/1280x1280?access_token=pk.eyJ1IjoianV6ZXRlc3QiLCJhIjoiY2ttazhsbnpiMGVrdjJucGhyNnh6eXcxYSJ9.6zj2U9eFCNJRMljNlMxjVg");
|
||||||
//pk.eyJ1IjoiYW5keXNqdCIsImEiOiJja2ZhajE5OGwwamRiMnltcW96bHk0ZWFuIn0.GvKanc6UveWSvIjS9HfBPA
|
//pk.eyJ1IjoiYW5keXNqdCIsImEiOiJja2ZhajE5OGwwamRiMnltcW96bHk0ZWFuIn0.GvKanc6UveWSvIjS9HfBPA
|
||||||
//pk.eyJ1IjoiYW5keXNqdCIsImEiOiJja2ZhajE5OGwwamRiMnltcW96bHk0ZWFuIn0.GvKanc6UveWSvIjS9HfBPA
|
//pk.eyJ1IjoiYW5keXNqdCIsImEiOiJja2ZhajE5OGwwamRiMnltcW96bHk0ZWFuIn0.GvKanc6UveWSvIjS9HfBPA
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,10 +65,10 @@ public static class App
|
|||||||
|
|
||||||
static App()
|
static App()
|
||||||
{
|
{
|
||||||
CultureInfo currentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
|
//CultureInfo currentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
|
||||||
currentCulture.NumberFormat.NumberDecimalSeparator = ".";
|
//currentCulture.NumberFormat.NumberDecimalSeparator = ".";
|
||||||
Thread.CurrentThread.CurrentCulture = currentCulture;
|
//Thread.CurrentThread.CurrentCulture = currentCulture;
|
||||||
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
|
//System.Globalization.CultureInfo.DefaultThreadCurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
|
||||||
#if !UNITY_EDITOR
|
#if !UNITY_EDITOR
|
||||||
// Host = "http://pf.juze.pro/";
|
// Host = "http://pf.juze.pro/";
|
||||||
// UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
|
// UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
|
||||||
|
|||||||
@ -11,11 +11,12 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace Assets.Scripts.Devices.Ble.Devices
|
namespace Assets.Scripts.Devices.Ble.Devices
|
||||||
{
|
{
|
||||||
public class Tacx : BleDevice, IPowerDevice, ICadenceDevice, ISpeedDevice, ITrainerDevice
|
public class Tacx : BleDevice, IPowerDevice, ICadenceDevice, ISpeedDevice, ITrainerDevice, IRequiresRiderWeight
|
||||||
{
|
{
|
||||||
public int Power { get => tacxFecNotify.Power; set => throw new NotImplementedException(); }
|
public int Power { get => tacxFecNotify.Power; set => throw new NotImplementedException(); }
|
||||||
public int Cadence { get => tacxFecNotify.Cadence; set => throw new NotImplementedException(); }
|
public int Cadence { get => tacxFecNotify.Cadence; set => throw new NotImplementedException(); }
|
||||||
public double Speed { get => tacxFecNotify.Speed; set => throw new NotImplementedException(); }
|
public double Speed { get => tacxFecNotify.Speed; set => throw new NotImplementedException(); }
|
||||||
|
public double RiderWeight { get; set; }
|
||||||
|
|
||||||
private List<BleServiceInfo> Services;
|
private List<BleServiceInfo> Services;
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using Assets.Scripts.Devices.Ant;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -171,6 +172,24 @@ namespace Assets.Scripts.Ble
|
|||||||
return ServiceUuids.Services.Single(s => s.IdByteArray == type);
|
return ServiceUuids.Services.Single(s => s.IdByteArray == type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Guid GetBySensor(SensorType sensor)
|
||||||
|
{
|
||||||
|
switch (sensor)
|
||||||
|
{
|
||||||
|
case SensorType.Cadence:
|
||||||
|
case SensorType.SpeedCadence:
|
||||||
|
return Get(ServiceUuids.CyclingSpeedCadence).IdGuid;
|
||||||
|
case SensorType.HeartRate:
|
||||||
|
return Get(ServiceUuids.HeartRate).IdGuid;
|
||||||
|
case SensorType.Power:
|
||||||
|
return Get(ServiceUuids.PowerBeam).IdGuid;
|
||||||
|
case SensorType.Trainer:
|
||||||
|
return Get(ServiceUuids.TacxBle).IdGuid;
|
||||||
|
default:
|
||||||
|
return Guid.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static class Characteristics
|
public static class Characteristics
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,6 +16,7 @@ using UnityEngine.EventSystems;
|
|||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
using Mapbox.Examples;
|
using Mapbox.Examples;
|
||||||
using DG.Tweening;
|
using DG.Tweening;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
public class BigMapController : PFUIPanel
|
public class BigMapController : PFUIPanel
|
||||||
{
|
{
|
||||||
@ -241,7 +242,7 @@ public class BigMapController : PFUIPanel
|
|||||||
//Screen.width
|
//Screen.width
|
||||||
//map.WorldToGeoPosition(start)
|
//map.WorldToGeoPosition(start)
|
||||||
|
|
||||||
var bounds = $"{ start.y },{ start.x };{ end.y },{ end.x }";
|
var bounds = $"{ start.y.ToString(CultureInfo.InvariantCulture) },{ start.x.ToString(CultureInfo.InvariantCulture) };{ end.y.ToString(CultureInfo.InvariantCulture) },{ end.x.ToString(CultureInfo.InvariantCulture) }";
|
||||||
var res = await mapApi.GetNearRouteAsync((float)mapManager.CenterLatitudeLongitude.x, (float)mapManager.CenterLatitudeLongitude.y,
|
var res = await mapApi.GetNearRouteAsync((float)mapManager.CenterLatitudeLongitude.x, (float)mapManager.CenterLatitudeLongitude.y,
|
||||||
mapManager.Zoom, bounds);
|
mapManager.Zoom, bounds);
|
||||||
if(res.result == false)
|
if(res.result == false)
|
||||||
|
|||||||
@ -243,8 +243,8 @@ public class EarthController : PFUIPanel
|
|||||||
{
|
{
|
||||||
//Debug.Log("click");
|
//Debug.Log("click");
|
||||||
|
|
||||||
Vector2 latLon = Conversion.GetLatLonFromSpherePoint(sphereLocation);
|
//Vector2 latLon = Conversion.GetLatLonFromSpherePoint(sphereLocation);
|
||||||
Debug.Log("Clicked on Latitude: " + latLon.x + ", Longitude: " + latLon.y);
|
//Debug.Log("Clicked on Latitude: " + latLon.x + ", Longitude: " + latLon.y);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ using Newtonsoft.Json.Linq;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -308,12 +309,12 @@ public class EditUserController : PFUIPanel
|
|||||||
Utils.showToast(gameObject, "Please fill in the information");//请填写相关信息
|
Utils.showToast(gameObject, "Please fill in the information");//请填写相关信息
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
user.FTP = int.Parse(mFTP.Text);
|
user.FTP = Convert.ToInt32(mFTP.Text, CultureInfo.InstalledUICulture); //int.Parse(mFTP.Text);
|
||||||
user.Height = int.Parse(mHeight.Text);
|
user.Height = Convert.ToInt32(mHeight.Text, CultureInfo.InstalledUICulture); //int.Parse(mHeight.Text);
|
||||||
user.Weight = double.Parse(mWeight.Text);
|
user.Weight = Convert.ToDouble(mWeight.Text, CultureInfo.InstalledUICulture); //double.Parse(mWeight.Text);
|
||||||
user.MaxHeartRate = int.Parse(mMHR.Text);
|
user.MaxHeartRate = Convert.ToInt32(mMHR.Text, CultureInfo.InstalledUICulture); //int.Parse(mMHR.Text);
|
||||||
user.BicycleWeight = double.Parse(mBW.Text);
|
user.BicycleWeight = Convert.ToDouble(mBW.Text, CultureInfo.InstalledUICulture); //double.Parse(mBW.Text);
|
||||||
user.WheelDiameter = int.Parse(mWD.Text);
|
user.WheelDiameter = Convert.ToInt32(mWD.Text, CultureInfo.InstalledUICulture); //int.Parse(mWD.Text);
|
||||||
user.Unit = mUnitDropdown.SelectedIndex;
|
user.Unit = mUnitDropdown.SelectedIndex;
|
||||||
user.Contact = mName.Text;
|
user.Contact = mName.Text;
|
||||||
user.ContactPhone = mPhone.Text;
|
user.ContactPhone = mPhone.Text;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user