Added configurable refresh rate sampling time

It seems data comes in bursts, so a sampling time of 1 second gave false
numbers
This commit is contained in:
Stedd 2023-10-22 14:55:57 +02:00
parent 65fc49450e
commit 5aa9be7aab
1 changed files with 14 additions and 9 deletions

View File

@ -1,6 +1,7 @@
using System; using System;
using GameDev.UDP; using GameDev.UDP;
using UnityEngine; using UnityEngine;
using UnityEngine.Serialization;
[RequireComponent(typeof(UDPManager))] [RequireComponent(typeof(UDPManager))]
public class ReceiveData : MonoBehaviour public class ReceiveData : MonoBehaviour
@ -8,10 +9,16 @@ public class ReceiveData : MonoBehaviour
[Header("Connections")] [Header("Connections")]
[SerializeField] private UDPManager _udpManager; [SerializeField] private UDPManager _udpManager;
[Header("Config")]
[SerializeField] private float _sampleTimeSetting;
[Header("State")] [Header("State")]
[SerializeField] private float _updateRate; [SerializeField] private float _updateRateHz;
[SerializeField] private ulong _packages; [SerializeField] private ulong _packagesReceived;
[field: SerializeField] public byte[] ReceivedData { get; set; } private byte[] ReceivedData { get; set; }
private int _newPackages;
private float _sampleTime;
[field: Header("ReceivedData")] [field: Header("ReceivedData")]
[field: SerializeField] private byte Watchdog { get; set; } [field: SerializeField] private byte Watchdog { get; set; }
@ -40,12 +47,10 @@ public class ReceiveData : MonoBehaviour
[field: SerializeField] private float RightMotorAngVel { get; set; } [field: SerializeField] private float RightMotorAngVel { get; set; }
[field: SerializeField] private int M1Raw { get; set; } [field: SerializeField] private int M1Raw { get; set; }
[field: SerializeField] private int M2Raw { get; set; } [field: SerializeField] private int M2Raw { get; set; }
private int _newPackages;
private float _sampleTime;
private void OnEnable() private void OnEnable()
{ {
_sampleTime = 1; _sampleTime = _sampleTimeSetting;
_udpManager.ReceivedNewUdpData += ProcessData; _udpManager.ReceivedNewUdpData += ProcessData;
} }
@ -56,7 +61,7 @@ public class ReceiveData : MonoBehaviour
private void ProcessData() private void ProcessData()
{ {
_packages++; _packagesReceived++;
_newPackages++; _newPackages++;
ReceivedData = _udpManager.Data; ReceivedData = _udpManager.Data;
var i = 0; var i = 0;
@ -97,9 +102,9 @@ public class ReceiveData : MonoBehaviour
{ {
if (_sampleTime < 0) if (_sampleTime < 0)
{ {
_updateRate = _newPackages; _updateRateHz = _newPackages;
_newPackages = 0; _newPackages = 0;
_sampleTime = 1; _sampleTime = _sampleTimeSetting;
} }
else else
{ {