get more accurate timings using the internal clock
Some checks failed
xiao_pet_tracker / semantic-pull-request (push) Failing after 1s
xiao_pet_tracker / build (push) Failing after 1s
xiao_pet_tracker / spell-check (push) Failing after 1s

This commit is contained in:
baldeau 2024-11-14 09:54:43 +01:00
parent 3775d3b9ac
commit 9690161207
2 changed files with 13 additions and 11 deletions

View File

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:xiao_pet_tracker/app_router/app_router.dart';
import 'package:xiao_pet_tracker/xiao_connector/cubit/xiao_connector_cubit.dart';
class CaptureView extends StatefulWidget {
@ -81,7 +80,7 @@ class _CaptureViewState extends State<CaptureView> {
const SizedBox(
height: 12,
),
ElevatedButton(
ElevatedButton.icon(
onPressed: () {
// context.read<XiaoConnectorCubit>().startCapturing(
// captureType: 'test',
@ -89,7 +88,8 @@ class _CaptureViewState extends State<CaptureView> {
final timeToSend = DateTime.now().millisecondsSinceEpoch;
context.read<XiaoConnectorCubit>().setTime(timeToSend);
},
child: const Text('Send new Timestamp'),
icon: const Icon(Icons.watch_later_outlined),
label: const Text('Sync Clocks'),
),
const SizedBox(
height: 12,

View File

@ -24,7 +24,8 @@ var (
//temperatureSense = [16]byte{0x74, 0x65, 0x6D, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6E, 0x73, 0x65}
)
var unixTimeStamp time.Time = time.Now()
var currentTimeStamp time.Time = time.Now()
var lastTimeStamp time.Time = time.Now()
const sleepDuration time.Duration = time.Millisecond * 100
@ -85,7 +86,7 @@ func main() {
return
}
millisFromEpoch := binary.BigEndian.Uint64(value)
unixTimeStamp = time.Unix(0, int64(millisFromEpoch)*int64(time.Millisecond))
currentTimeStamp = time.Unix(0, int64(millisFromEpoch)*int64(time.Millisecond))
},
},
{
@ -128,19 +129,20 @@ func main() {
x, y, z, _ := accel.ReadAcceleration()
arrRot := valuesToByteArray(X, Y, Z, int8(1))
senseCharacteristic.Write(arrRot)
arrAcc := valuesToByteArray(x, y, z, int8(2))
senseCharacteristic.Write(arrAcc)
arrTime := timeStampToByteArray(unixTimeStamp.UnixMilli(), int8(3))
currentTimeStamp = currentTimeStamp.Add(time.Now().Sub(lastTimeStamp))
arrTime := timeStampToByteArray(currentTimeStamp.UnixMilli(), int8(3))
senseCharacteristic.Write(arrRot)
senseCharacteristic.Write(arrAcc)
senseCharacteristic.Write(arrTime)
}
time.Sleep(sleepDuration)
if isCapturing {
unixTimeStamp = unixTimeStamp.Add(sleepDuration)
lastTimeStamp = time.Now()
}
time.Sleep(sleepDuration)
}
}