From 067b5e94eb7fafa60b035c4634e5d3318cafd4a8 Mon Sep 17 00:00:00 2001 From: Vineyro Date: Mon, 17 Jun 2024 13:53:34 +0700 Subject: [PATCH] Fix graph view --- .idea/deploymentTargetDropDown.xml | 10 + .idea/migrations.xml | 10 + app/build.gradle | 4 +- .../accelerometer/AccelerometerScreen.kt | 4 +- .../accelerometer/view/AcceleromterAccel.kt | 323 +++++++++--------- .../arma/ble/data/GetAccelerometerHistory.kt | 18 +- .../ble/data/GetAccelerometerRealtimeData.kt | 1 + 7 files changed, 197 insertions(+), 173 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 .idea/migrations.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..0c0c338 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e132dfb..626d22b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "llc.arma.ble" minSdk 26 targetSdk 34 - versionCode 22 - versionName "1.3.2" + versionCode 23 + versionName "1.3.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt index deb3da6..592ef9e 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt @@ -25,7 +25,7 @@ import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelScaleEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelSpectreEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelViewEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerSpectre -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerAccel +import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerRealtime import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerHistory import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.DisplayState import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.HistoryEdit @@ -94,7 +94,7 @@ fun AccelerometerScreen( if (currentState is AccelerometerContract.State.Display) { bottomDialog.show { - AccelerometerAccel( + AccelerometerRealtime( ble = currentState.accelerometer.info, accelMode = currentState.accelViewMode, fftAxis = currentState.fftAxis, diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt index 4f7d225..24d0d2c 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt @@ -1,5 +1,6 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view +import android.util.Log import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape @@ -47,7 +48,7 @@ import llc.arma.ble.domain.usecase.FftViewMode import llc.arma.ble.domain.usecase.GetAccelerometerMeasureBySerialFlow @Composable -fun AccelerometerAccel( +fun AccelerometerRealtime( ble: BleInfo, accelScale: AccelScale, accelMode: AccelViewMode, @@ -196,199 +197,195 @@ fun Display( val lastMeasure = state.measureHistory.lastOrNull() - if(lastMeasure is Ble.Accelerometer.RealtimePoint.Common) { + Log.d("mode", lastMeasure.toString()) + + when(lastMeasure){ + is Ble.Accelerometer.RealtimePoint.Angle -> { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { - when(state.mode){ - ROTATIONS -> { Column( - verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.weight(1f), horizontalAlignment = Alignment.CenterHorizontally ) { + Text(text = "Ось X: ${lastMeasure.x}") + + Spacer(modifier = Modifier.height(8.dp)) + + Angle( + angle = lastMeasure.x, + modifier = Modifier.weight(1f), + ) + + } + + Column( + modifier = Modifier.weight(1f), + horizontalAlignment = Alignment.CenterHorizontally + ) { Text(text = "Ось Y: ${lastMeasure.y}") - Column( + Spacer(modifier = Modifier.height(8.dp)) + + Angle( modifier = Modifier.weight(1f), - horizontalAlignment = Alignment.CenterHorizontally - ) { - - Text(text = "Ось X: ${lastMeasure.x}") - - Spacer(modifier = Modifier.height(8.dp)) - - Angle( - angle = lastMeasure.x, - modifier = Modifier.weight(1f), - ) - - } - - Text(text = "Ось Z:") - Chart( - chart = lineChart, - chartModelProducer = zProducer, - startAxis = startAxis(), - bottomAxis = bottomAxis(), - modifier = Modifier - .fillMaxWidth() - .weight(1f), - autoScaleUp = AutoScaleUp.None, - diffAnimationSpec = tween(0), - chartScrollSpec = rememberChartScrollSpec( - initialScroll = InitialScroll.End, - autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, - autoScrollAnimationSpec = tween(0) - ) + angle = lastMeasure.y ) } - } - ANGLE -> { + Column( - verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.weight(1f), horizontalAlignment = Alignment.CenterHorizontally ) { - Column( + Text(text = "Ось Z: ${lastMeasure.z}") + + Spacer(modifier = Modifier.height(8.dp)) + + Angle( modifier = Modifier.weight(1f), - horizontalAlignment = Alignment.CenterHorizontally - ) { - - Text(text = "Ось X: ${lastMeasure.x}") - - Spacer(modifier = Modifier.height(8.dp)) - - Angle( - angle = lastMeasure.x, - modifier = Modifier.weight(1f), - ) - - } - - Column( - modifier = Modifier.weight(1f), - horizontalAlignment = Alignment.CenterHorizontally - ) { - - Text(text = "Ось Y: ${lastMeasure.y}") - - Spacer(modifier = Modifier.height(8.dp)) - - Angle( - modifier = Modifier.weight(1f), - angle = lastMeasure.y - ) - - } - - Column( - modifier = Modifier.weight(1f), - horizontalAlignment = Alignment.CenterHorizontally - ) { - - Text(text = "Ось Z: ${lastMeasure.z}") - - Spacer(modifier = Modifier.height(8.dp)) - - Angle( - modifier = Modifier.weight(1f), - angle = lastMeasure.z - ) - - } - - } - } - else -> { - - Column() { - - Text(text = "Ось X:") - - Chart( - chart = lineChart, - chartModelProducer = xProducer, - startAxis = startAxis(), - bottomAxis = bottomAxis(), - modifier = Modifier - .fillMaxWidth() - .weight(1f), - autoScaleUp = AutoScaleUp.None, - diffAnimationSpec = tween(0), - chartScrollSpec = rememberChartScrollSpec( - initialScroll = InitialScroll.End, - autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, - autoScrollAnimationSpec = tween(0) - ) - ) - - Text(text = "Ось Y:") - Chart( - chart = lineChart, - chartModelProducer = yProducer, - startAxis = startAxis(), - bottomAxis = bottomAxis(), - modifier = Modifier - .fillMaxWidth() - .weight(1f), - autoScaleUp = AutoScaleUp.None, - diffAnimationSpec = tween(0), - chartScrollSpec = rememberChartScrollSpec( - initialScroll = InitialScroll.End, - autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, - autoScrollAnimationSpec = tween(0) - ) - ) - - Text(text = "Ось Z:") - Chart( - chart = lineChart, - chartModelProducer = zProducer, - startAxis = startAxis(), - bottomAxis = bottomAxis(), - modifier = Modifier - .fillMaxWidth() - .weight(1f), - autoScaleUp = AutoScaleUp.None, - diffAnimationSpec = tween(0), - chartScrollSpec = rememberChartScrollSpec( - initialScroll = InitialScroll.End, - autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, - autoScrollAnimationSpec = tween(0) - ) + angle = lastMeasure.z ) } } } + is Ble.Accelerometer.RealtimePoint.Rotation -> { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { - } else { - Column { + Text(text = "Ось Y: ${lastMeasure.tmp}") - Text(text = "Вибрация:") + Column( + modifier = Modifier.weight(1f), + horizontalAlignment = Alignment.CenterHorizontally + ) { - Chart( - chart = lineChart, - chartModelProducer = xProducer, - startAxis = startAxis(), - bottomAxis = bottomAxis(), - modifier = Modifier - .fillMaxWidth() - .weight(1f), - autoScaleUp = AutoScaleUp.None, - diffAnimationSpec = tween(0), - chartScrollSpec = rememberChartScrollSpec( - initialScroll = InitialScroll.End, - autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, - autoScrollAnimationSpec = tween(0) + Text(text = "Ось X: ${lastMeasure.angle}") + + Spacer(modifier = Modifier.height(8.dp)) + + Angle( + angle = lastMeasure.angle, + modifier = Modifier.weight(1f), + ) + + } + + Text(text = "Ось Z:") + Chart( + chart = lineChart, + chartModelProducer = zProducer, + startAxis = startAxis(), + bottomAxis = bottomAxis(), + modifier = Modifier + .fillMaxWidth() + .weight(1f), + autoScaleUp = AutoScaleUp.None, + diffAnimationSpec = tween(0), + chartScrollSpec = rememberChartScrollSpec( + initialScroll = InitialScroll.End, + autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, + autoScrollAnimationSpec = tween(0) + ) ) - ) + } } + is Ble.Accelerometer.RealtimePoint.Vibration -> { + Column { + Text(text = "Вибрация:") + + Chart( + chart = lineChart, + chartModelProducer = xProducer, + startAxis = startAxis(), + bottomAxis = bottomAxis(), + modifier = Modifier + .fillMaxWidth() + .weight(1f), + autoScaleUp = AutoScaleUp.None, + diffAnimationSpec = tween(0), + chartScrollSpec = rememberChartScrollSpec( + initialScroll = InitialScroll.End, + autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, + autoScrollAnimationSpec = tween(0) + ) + ) + + } + } + is Ble.Accelerometer.RealtimePoint.Common -> { + Column() { + + Text(text = "Ось X:") + + Chart( + chart = lineChart, + chartModelProducer = xProducer, + startAxis = startAxis(), + bottomAxis = bottomAxis(), + modifier = Modifier + .fillMaxWidth() + .weight(1f), + autoScaleUp = AutoScaleUp.None, + diffAnimationSpec = tween(0), + chartScrollSpec = rememberChartScrollSpec( + initialScroll = InitialScroll.End, + autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, + autoScrollAnimationSpec = tween(0) + ) + ) + + Text(text = "Ось Y:") + Chart( + chart = lineChart, + chartModelProducer = yProducer, + startAxis = startAxis(), + bottomAxis = bottomAxis(), + modifier = Modifier + .fillMaxWidth() + .weight(1f), + autoScaleUp = AutoScaleUp.None, + diffAnimationSpec = tween(0), + chartScrollSpec = rememberChartScrollSpec( + initialScroll = InitialScroll.End, + autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, + autoScrollAnimationSpec = tween(0) + ) + ) + + Text(text = "Ось Z:") + Chart( + chart = lineChart, + chartModelProducer = zProducer, + startAxis = startAxis(), + bottomAxis = bottomAxis(), + modifier = Modifier + .fillMaxWidth() + .weight(1f), + autoScaleUp = AutoScaleUp.None, + diffAnimationSpec = tween(0), + chartScrollSpec = rememberChartScrollSpec( + initialScroll = InitialScroll.End, + autoScrollCondition = AutoScrollCondition.OnModelSizeIncreased, + autoScrollAnimationSpec = tween(0) + ) + ) + + } + } + null -> {} } } diff --git a/app/src/main/java/llc/arma/ble/data/GetAccelerometerHistory.kt b/app/src/main/java/llc/arma/ble/data/GetAccelerometerHistory.kt index 33f1c25..cb891ad 100644 --- a/app/src/main/java/llc/arma/ble/data/GetAccelerometerHistory.kt +++ b/app/src/main/java/llc/arma/ble/data/GetAccelerometerHistory.kt @@ -1,11 +1,7 @@ package llc.arma.ble.data -import android.Manifest import android.app.Application -import android.content.pm.PackageManager -import android.os.Build import android.util.Log -import androidx.core.app.ActivityCompat import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -95,7 +91,9 @@ fun getAccelerometerHistory( while (nextPackageDataCount.toInt() != 0) { - val temperatureDataArray = if (value[0] == 250.toByte()) { + Log.d("dataTable", "next package fata size $nextPackageDataCount") + + val packageDataArray = if (value[0] == 250.toByte()) { bleMeasureInterval = value.get4byteUIntAt(4).toLong() bleLastMeasureTime = value.get4byteUIntAt(8).toLong() @@ -104,6 +102,14 @@ fun getAccelerometerHistory( lastMeasureSystemTime = System.currentTimeMillis() - ((bleRealTime - bleLastMeasureTime) * 1_000) + Log.d("dataTable", + "bleMeasureInterval $bleMeasureInterval " + + "bleLastMeasureTime $bleLastMeasureTime " + + "bleRealTime $bleRealTime " + + "lastMeasureSystemTime $lastMeasureSystemTime " + + "data size ${value.toUByteArray().asList().subList(16, value.size).size}" + ) + value.toUByteArray().asList().subList(16, value.size) } else { @@ -116,7 +122,7 @@ fun getAccelerometerHistory( nextPackageDataCount = value.get2byteUIntAt(2) resultPackage.addAll( - temperatureDataArray.chunked(2).map { + packageDataArray.chunked(2).map { it.toUByteArray().toByteArray().get2byteShortAt().toFloat() }.toMutableList() ) diff --git a/app/src/main/java/llc/arma/ble/data/GetAccelerometerRealtimeData.kt b/app/src/main/java/llc/arma/ble/data/GetAccelerometerRealtimeData.kt index e8d68b1..8062a65 100644 --- a/app/src/main/java/llc/arma/ble/data/GetAccelerometerRealtimeData.kt +++ b/app/src/main/java/llc/arma/ble/data/GetAccelerometerRealtimeData.kt @@ -1,6 +1,7 @@ package llc.arma.ble.data import android.app.Application +import android.util.Log import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow