Я хочу получить временной интервал в миллисекундах, сравнив две временные метки с DateTime.Now и предыдущим DateTime. Я хочу проверить, происходит ли событие каждые 10 миллисекунд или позже, но общее количество миллисекунд от DeltaT равно 188 или около того. Это слишком высоко, чем я ожидаю, поэтому я думаю, что должно быть что-то не так. Или все выглядит нормально?
DateTime timestamp;
DateTime timestampAlt;
TimeSpan deltaT;
public void OnSensorChanged(SensorEvent e)
{
timestamp = System.DateTime.Now;
deltaT = timestamp - timestampAlt;
if (deltaT.TotalSeconds <= 0.01)
{
return;
}
ОБНОВИТЬ:
Я очень ценю все ваши ответы, но я думаю, что есть недоразумение (моя ошибка, извините). Итак, еще раз: всякий раз, когда слушатель распознает событие, я хочу сохранить отметку времени и сравнить ее с отметкой времени предыдущего события. Если между двумя событиями есть разрыв более 10 миллисекунд, я хочу узнать больше об этом новом событии. Если нет, то я даже не хочу продолжать и уйду по возвращении.
public void OnSensorChanged(SensorEvent e)
{
timestamp = System.DateTime.Now;
deltaT = timestamp - timestampAlt;
//int deltaT2 = timestamp.Millisecond - timestampAlt.Millisecond;
String timestampStr = timestamp.ToString("ff");
String timestampStrA = timestampAlt.ToString("ff");
if (deltaT.TotalMilliseconds <= 10 || deltaT.TotalMilliseconds <= -10) //deltaT.Seconds <= 0.01
{
return;
}
timestampAlt = timestamp;
newValue = e.Values[2];
//if (buffer[99] != 0.00)
// if last element of list is empty, add elements to buffer
if (buffer.Count <=99)
{
buffer.Add(newValue);
zeitbuffer.Add(timestamp);
}
else
{
Ableitung(DeltaBuffer(), DeltaTime()); // if last index of list is filled, do that function
}
if (e.Values[2] >= 11)
{
try
{
lock (_syncLock)
{
String z2 = newValue.ToString("0.0");
//noteInt2 = Convert.ToInt32(newValue);
try
{
_sensorTextView2.Text = string.Format("Note: {0}", z2 );
eventcounter.Add(z2);