From 1762a35971cc2831b39dbf34d5554655bc239413 Mon Sep 17 00:00:00 2001 From: fl <3098731433@qq.com> Date: Fri, 28 Mar 2025 17:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0=E6=96=B9=E6=B3=95=E7=BC=96?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bonus/wrjtest/MainActivity.kt | 555 ++---------------- .../com/bonus/wrjtest/entity/Coordinate.java | 11 + .../bonus/wrjtest/entity/RadarPointBean.java | 11 + .../bonus/wrjtest/entity/SensorDataBean.java | 12 + .../com/bonus/wrjtest/utils/FileLogger.java | 90 +++ .../com/bonus/wrjtest/utils/KotlinLogger.kt | 59 ++ .../bonus/wrjtest/utils/RadarMathUtil.java | 81 +-- app/src/main/res/layout/test.xml | 22 - 8 files changed, 268 insertions(+), 573 deletions(-) create mode 100644 app/src/main/java/com/bonus/wrjtest/utils/FileLogger.java create mode 100644 app/src/main/java/com/bonus/wrjtest/utils/KotlinLogger.kt diff --git a/app/src/main/java/com/bonus/wrjtest/MainActivity.kt b/app/src/main/java/com/bonus/wrjtest/MainActivity.kt index ff09618..388b9cf 100644 --- a/app/src/main/java/com/bonus/wrjtest/MainActivity.kt +++ b/app/src/main/java/com/bonus/wrjtest/MainActivity.kt @@ -24,6 +24,7 @@ import kotlinx.coroutines.Job import kotlin.math.cos import kotlin.math.sin import androidx.lifecycle.lifecycleScope +import com.bonus.wrjtest.utils.KotlinLogger import com.skydroid.rcsdk.PipelineManager import com.skydroid.rcsdk.comm.CommListener import com.skydroid.rcsdk.common.error.SkyException @@ -32,6 +33,11 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import org.w3c.dom.Text +import java.io.File +import java.io.FileOutputStream +import java.io.IOException +import java.time.LocalTime +import java.time.format.DateTimeFormatter class MainActivity : AppCompatActivity() { @@ -44,7 +50,6 @@ class MainActivity : AppCompatActivity() { lateinit var radar3: EditText lateinit var radar4: EditText lateinit var gps: EditText - lateinit var gpsSkew: EditText lateinit var gpsMode: EditText lateinit var pitchAngle: EditText lateinit var rollAngle: EditText @@ -57,6 +62,9 @@ class MainActivity : AppCompatActivity() { val resultDataSb = StringBuilder() + // 声明 kotlinLogger 作为 Activity 的一个属性 + private lateinit var logger: KotlinLogger + var coordinatesList: ArrayList> = ArrayList() var sensorDataList: ArrayList = ArrayList() var coordinates: MutableList = ArrayList() @@ -79,14 +87,14 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.test) // 初始化 DAO val myApplication = application as MyApplication + // 在 Activity 或其他有 Context 的地方 + logger = KotlinLogger.getInstance(this) measureDataDao = MeasureDataDao(myApplication.getDbHelper()) - radar1 = findViewById(R.id.radar1) radar2 = findViewById(R.id.radar2) radar3 = findViewById(R.id.radar3) radar4 = findViewById(R.id.radar4) gps = findViewById(R.id.gps) - gpsSkew = findViewById(R.id.gpsSkew) gpsMode = findViewById(R.id.gpsMode) pitchAngle = findViewById(R.id.pitchAngle) pitchAngle = findViewById(R.id.pitchAngle) @@ -127,6 +135,13 @@ class MainActivity : AppCompatActivity() { } sensorDataList.add(sensorDataBean) coordinatesList.add(coordinates) + + logger.log(sensorDataBean.toString()) + for (coordinate in coordinates) { + logger.log(coordinate.toString()) + } + + Toast.makeText(this, "保存数据", Toast.LENGTH_LONG).show() } @@ -252,7 +267,6 @@ class MainActivity : AppCompatActivity() { val pitchAngle1 = data.substring(36, 40) val rollAngle1 = data.substring(40, 44) val azimuthAngle1 = data.substring(44, 48) - val lon = data.substring(48, 58) val lat = data.substring(58, 68) val h = data.substring(68, 74) @@ -267,20 +281,17 @@ class MainActivity : AppCompatActivity() { var radarDistance1: Double = ByteUtil.hexToDecimalInt(distance1).toDouble() / 1000.0 - var radarAngle1: Double = 90 - - ByteUtil.hexToDecimalInt(angle1).toDouble() / 100.0 + + var radarAngle1: Double = ByteUtil.hexToDecimalInt(angle1).toDouble() / 100.0 var radarDistance2: Double = ByteUtil.hexToDecimalInt(distance2).toDouble() / 1000.0 - var radarAngle2: Double = 90 - - ByteUtil.hexToDecimalInt(angle2).toDouble() / 100.0 + var radarAngle2: Double = ByteUtil.hexToDecimalInt(angle2).toDouble() / 100.0 var radarDistance3: Double = ByteUtil.hexToDecimalInt(distance3).toDouble() / 1000.0 - var radarAngle3: Double = 90 - - ByteUtil.hexToDecimalInt(angle3).toDouble() / 100.0 + var radarAngle3: Double = ByteUtil.hexToDecimalInt(angle3).toDouble() / 100.0 var radarDistance4: Double = ByteUtil.hexToDecimalInt(distance4).toDouble() / 1000.0 - var radarAngle4: Double = 90 - - ByteUtil.hexToDecimalInt(angle4).toDouble() / 100.0 + var radarAngle4: Double = ByteUtil.hexToDecimalInt(angle4).toDouble() / 100.0 //水平角 val hAngle = ByteUtil.hexToDecimalInt(hAngleNum).toDouble() / 100.0 //最大角度为22.5,减掉22.5,看到的是与最佳角度差距多少 @@ -356,11 +367,11 @@ class MainActivity : AppCompatActivity() { // "返回数据解析完成", // Toast.LENGTH_SHORT // ).show() - - radar1.setText("${radarDistance1}m, ${radarAngle1}°") - radar2.setText("${radarDistance2}m, ${radarAngle2}°") - radar3.setText("${radarDistance3}m, ${radarAngle3}°") - radar4.setText("${radarDistance4}m, ${radarAngle4}°") + //展示是水平方向的夹角 + radar1.setText("${radarDistance1}m, ${90-radarAngle1}°") + radar2.setText("${radarDistance2}m, ${90-radarAngle2}°") + radar3.setText("${radarDistance3}m, ${90-radarAngle3}°") + radar4.setText("${radarDistance4}m, ${90-radarAngle4}°") hAngleText.setText("${hAngle}°") vAngleText.setText("${vAngle}°") @@ -369,7 +380,6 @@ class MainActivity : AppCompatActivity() { rollAngle.setText("${rollAngle2}°") azimuthAngle.setText("${azimuthAngle2}°") gps.setText("经度:${lon2}°,纬度:${lat2}°,高度:${h2}m") -// gpsSkew.setText("经度:${lonB}°,纬度:${latB}°,高度:${hB}m") if (qual == "01") { gpsMode.setText("单点定位") } else if (qual == "02") { @@ -443,505 +453,8 @@ class MainActivity : AppCompatActivity() { } } - private fun dealWithData() { - - var sensor1 = SensorDataBean() - sensor1.pitchAngle = 0.0 - sensor1.rollAngle = 0.01 - sensor1.azimuthAngle = 192.93 - sensor1.lon = 117.16277202 - sensor1.lat = 31.78571342 - sensor1.h = 43.4096 - var radarPoint1: MutableList = ArrayList() - radarPoint1.add(RadarPointBean(14.35, 5.098)) - radarPoint1.add(RadarPointBean(176.45, 6.63)) - radarPoint1.add(RadarPointBean(172.4, 6.66)) - radarPoint1.add(RadarPointBean(171.8, 6.22)) - - var coordinate1: MutableList = ArrayList() - for (radarPointBean in radarPoint1) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1) - coordinate.radarPoint = radarPointBean - coordinate1.add(coordinate) - } - -// var sensor2 = SensorDataBean() -// sensor2.pitchAngle = 1.01 -// sensor2.rollAngle = 1.01 -// sensor2.azimuthAngle = 192.92 -// sensor2.lon = 117.16280621 -// sensor2.lat = 31.78571778 -// sensor2.h = 41.2207 -// var radarPoint2: MutableList = ArrayList() -// radarPoint2.add(RadarPointBean(12.2, 3.97)) -// radarPoint2.add(RadarPointBean(173.0, 7.14)) -// radarPoint2.add(RadarPointBean(169.15, 7.19)) -// radarPoint2.add(RadarPointBean(168.6, 6.78)) -// var coordinate2 :MutableList = ArrayList() -// for (radarPointBean in radarPoint2) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2) -// coordinate.radarPoint = radarPointBean -// coordinate2.add(coordinate) -// } - - var sensor3 = SensorDataBean() - sensor3.pitchAngle = 0.0 - sensor3.rollAngle = 0.0 - sensor3.azimuthAngle = 192.92 - sensor3.lon = 117.1629271 - sensor3.lat = 31.78569487 - sensor3.h = 44.8215 - var radarPoint3: MutableList = ArrayList() - radarPoint3.add(RadarPointBean(15.2, 4.824)) - radarPoint3.add(RadarPointBean(173.45, 7.43)) - radarPoint3.add(RadarPointBean(169.9, 7.51)) - radarPoint3.add(RadarPointBean(169.25, 7.07)) - var coordinate3: MutableList = ArrayList() - for (radarPointBean in radarPoint3) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3) - coordinate.radarPoint = radarPointBean - coordinate3.add(coordinate) - } - -// var sensor4 = SensorDataBean() -// sensor4.pitchAngle = 1.0 -// sensor4.rollAngle = 0.0 -// sensor4.azimuthAngle = 193.94 -// sensor4.lon = 117.1629736 -// sensor4.lat = 31.78568653 -// sensor4.h = 43.128 -// var radarPoint4: MutableList = ArrayList() -// radarPoint4.add(RadarPointBean(20.65, 4.824)) -// radarPoint4.add(RadarPointBean(173.45, 7.43)) -// radarPoint4.add(RadarPointBean(169.9, 7.51)) -// radarPoint4.add(RadarPointBean(169.25, 7.07)) -// var coordinate4 :MutableList = ArrayList() -// for (radarPointBean in radarPoint4) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor4) -// coordinate.radarPoint = radarPointBean -// coordinate4.add(coordinate) -// } - - var sensor5 = SensorDataBean() - sensor5.pitchAngle = 0.0 - sensor5.rollAngle = 4.04 - sensor5.azimuthAngle = 186.86 - sensor5.lon = 117.16315845 - sensor5.lat = 31.78568825 - sensor5.h = 40.5377 - var radarPoint5: MutableList = ArrayList() - radarPoint5.add(RadarPointBean(31.85, 6.527)) - radarPoint5.add(RadarPointBean(173.45, 7.43)) - radarPoint5.add(RadarPointBean(169.9, 7.51)) - radarPoint5.add(RadarPointBean(169.25, 7.07)) - var coordinate5: MutableList = ArrayList() - for (radarPointBean in radarPoint5) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor5) - coordinate.radarPoint = radarPointBean - coordinate5.add(coordinate) - } - -// var sensor6 = SensorDataBean() -// sensor6.pitchAngle = 1.02 -// sensor6.rollAngle = 0.00 -// sensor6.azimuthAngle = 188.89 -// sensor6.lon = 117.16309956 -// sensor6.lat = 31.78569918 -// sensor6.h = 41.8566 -// var radarPoint6: MutableList = ArrayList() -// radarPoint6.add(RadarPointBean(49.4, 6.096)) -// radarPoint6.add(RadarPointBean(173.45, 7.43)) -// radarPoint6.add(RadarPointBean(169.9, 7.51)) -// radarPoint6.add(RadarPointBean(169.25, 7.07)) -// var coordinate6 :MutableList = ArrayList() -// for (radarPointBean in radarPoint6) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor6) -// coordinate.radarPoint = radarPointBean -// coordinate6.add(coordinate) -// } - - sensorDataList.add(sensor1) -// sensorDataList.add(sensor2) - sensorDataList.add(sensor3) - coordinatesList.add(coordinate1) -// coordinatesList.add(coordinate2) - coordinatesList.add(coordinate3) -// sensorDataList.add(sensor4) - sensorDataList.add(sensor5) -// sensorDataList.add(sensor6) -// coordinatesList.add(coordinate4) - coordinatesList.add(coordinate5) -// coordinatesList.add(coordinate6) - - -// var sensor1 = SensorDataBean() -// sensor1.pitchAngle = 3.03 -// sensor1.rollAngle = 0.00 -// sensor1.azimuthAngle = 180.81 -// sensor1.lon = 117.163095 -// sensor1.lat = 31.786049 -// sensor1.h = 44.55 -// var radarPoint1: MutableList = ArrayList() -// radarPoint1.add(RadarPointBean(173.5, 4.55)) -// radarPoint1.add(RadarPointBean(174.2, 4.96)) -// -// var coordinate1 :MutableList = ArrayList() -// for (radarPointBean in radarPoint1) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1) -// coordinate.radarPoint = radarPointBean -// coordinate1.add(coordinate) -// } -// -// var sensor2 = SensorDataBean() -// sensor2.pitchAngle = 2.02 -// sensor2.rollAngle = 0.0 -// sensor2.azimuthAngle = 185.86 -// sensor2.lon = 117.162919 -// sensor2.lat = 31.786029 -// sensor2.h = 44.81 -// var radarPoint2: MutableList = ArrayList() -// radarPoint2.add(RadarPointBean(170.5, 3.04)) -// radarPoint2.add(RadarPointBean(173.55, 3.4)) -// var coordinate2 :MutableList = ArrayList() -// for (radarPointBean in radarPoint2) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2) -// coordinate.radarPoint = radarPointBean -// coordinate2.add(coordinate) -// } -// -// var sensor3 = SensorDataBean() -// sensor3.pitchAngle =1.02 -// sensor3.rollAngle = 0.0 -// sensor3.azimuthAngle = 187.88 -// sensor3.lon = 117.16275 -// sensor3.lat = 31.786031 -// sensor3.h = 42.96 -// var radarPoint3: MutableList = ArrayList() -// radarPoint3.add(RadarPointBean(172.65, 3.9)) -// radarPoint3.add(RadarPointBean(175.55, 4.23)) -// var coordinate3 :MutableList = ArrayList() -// for (radarPointBean in radarPoint3) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3) -// coordinate.radarPoint = radarPointBean -// coordinate3.add(coordinate) -// } -// -// sensorDataList.add(sensor1) -// sensorDataList.add(sensor2) -// sensorDataList.add(sensor3) -// coordinatesList.add(coordinate1) -// coordinatesList.add(coordinate2) -// coordinatesList.add(coordinate3) - - } - - //hay 四分裂--3点/6点 - private fun dealWithDatas() { - -// var sensor1 = SensorDataBean() -// sensor1.pitchAngle = 0.0 -// sensor1.rollAngle = 7.08 -// sensor1.azimuthAngle = 113.13 -// sensor1.lon = 117.16295435 -// sensor1.lat = 31.78569556 -// sensor1.h = 40.25136 -// var radarPoint1: MutableList = ArrayList() -// radarPoint1.add(RadarPointBean(163.8, 5.634)) -// radarPoint1.add(RadarPointBean(164.75, 6.074)) -// radarPoint1.add(RadarPointBean(160.35, 6.164)) -// radarPoint1.add(RadarPointBean(159.25, 5.743)) -// -// var coordinate1: MutableList = ArrayList() -// for (radarPointBean in radarPoint1) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1) -// coordinate.radarPoint = radarPointBean -// coordinate1.add(coordinate) -// } -// -//// var sensor2 = SensorDataBean() -//// sensor2.pitchAngle = 0.01 -//// sensor2.rollAngle = 1.01 -//// sensor2.azimuthAngle = 110.11 -//// sensor2.lon = 117.16295435 -//// sensor2.lat = 31.78569556 -//// sensor2.h = 40.25136 -//// var radarPoint2: MutableList = ArrayList() -//// radarPoint2.add(RadarPointBean(170.35, 5.867)) -//// radarPoint2.add(RadarPointBean(171.0, 6.323)) -//// radarPoint2.add(RadarPointBean(166.65, 6.373)) -//// radarPoint2.add(RadarPointBean(166.05, 5.935)) -//// var coordinate2 :MutableList = ArrayList() -//// for (radarPointBean in radarPoint2) { -//// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2) -//// coordinate.radarPoint = radarPointBean -//// coordinate2.add(coordinate) -//// } -// -// var sensor3 = SensorDataBean() -// sensor3.pitchAngle = 1.02 -// sensor3.rollAngle = 1.02 -// sensor3.azimuthAngle = 123.24 -// sensor3.lon = 117.16297812 -// sensor3.lat = 31.78568004 -// sensor3.h = 45.60196 -// var radarPoint3: MutableList = ArrayList() -// radarPoint3.add(RadarPointBean(156.15, 6.591)) -// radarPoint3.add(RadarPointBean(157.6, 7.002)) -// radarPoint3.add(RadarPointBean(154.05, 7.18)) -// radarPoint3.add(RadarPointBean(152.55, 6.793)) -// var coordinate3: MutableList = ArrayList() -// for (radarPointBean in radarPoint3) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3) -// coordinate.radarPoint = radarPointBean -// coordinate3.add(coordinate) -// } -// -//// var sensor4 = SensorDataBean() -//// sensor4.pitchAngle = 1.01 -//// sensor4.rollAngle = 0.01 -//// sensor4.azimuthAngle = 120.21 -//// sensor4.lon = 117.16296837 -//// sensor4.lat = 31.78568228 -//// sensor4.h = 41.37936 -//// var radarPoint4: MutableList = ArrayList() -//// radarPoint4.add(RadarPointBean(157.9, 6.581)) -//// radarPoint4.add(RadarPointBean(159.15, 7.005)) -//// radarPoint4.add(RadarPointBean(155.55, 7.155)) -//// radarPoint4.add(RadarPointBean(154.35, 7.766)) -//// var coordinate4 :MutableList = ArrayList() -//// for (radarPointBean in radarPoint4) { -//// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor4) -//// coordinate.radarPoint = radarPointBean -//// coordinate4.add(coordinate) -//// } -// -// var sensor5 = SensorDataBean() -// sensor5.pitchAngle = 1.01 -// sensor5.rollAngle = 1.02 -// sensor5.azimuthAngle = 120.21 -// sensor5.lon = 117.16281242 -// sensor5.lat = 31.78569027 -// sensor5.h = 41.61336 -// var radarPoint5: MutableList = ArrayList() -// radarPoint5.add(RadarPointBean(160.69, 5.645)) -// radarPoint5.add(RadarPointBean(162.25, 6.088)) -// radarPoint5.add(RadarPointBean(158.35, 6.233)) -// radarPoint5.add(RadarPointBean(156.6, 5.845)) -// var coordinate5: MutableList = ArrayList() -// for (radarPointBean in radarPoint5) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor5) -// coordinate.radarPoint = radarPointBean -// coordinate5.add(coordinate) -// } -// -//// var sensor6 = SensorDataBean() -//// sensor6.pitchAngle = 0.0 -//// sensor6.rollAngle = 3.04 -//// sensor6.azimuthAngle = 119.2 -//// sensor6.lon = 117.16281242 -//// sensor6.lat = 31.78569027 -//// sensor6.h = 41.61336 -//// var radarPoint6: MutableList = ArrayList() -//// radarPoint6.add(RadarPointBean(160.05, 5.774)) -//// radarPoint6.add(RadarPointBean(161.55, 6.197)) -//// radarPoint6.add(RadarPointBean(157.8, 6.359)) -//// radarPoint6.add(RadarPointBean(156.1, 5.973)) -//// var coordinate6 :MutableList = ArrayList() -//// for (radarPointBean in radarPoint6) { -//// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor6) -//// coordinate.radarPoint = radarPointBean -//// coordinate6.add(coordinate) -//// } -// -// sensorDataList.add(sensor1) -//// sensorDataList.add(sensor2) -// sensorDataList.add(sensor3) -// coordinatesList.add(coordinate1) -//// coordinatesList.add(coordinate2) -// coordinatesList.add(coordinate3) -//// sensorDataList.add(sensor4) -// sensorDataList.add(sensor5) -//// sensorDataList.add(sensor6) -//// coordinatesList.add(coordinate4) -// coordinatesList.add(coordinate5) -//// coordinatesList.add(coordinate6) - - -// var sensor1 = SensorDataBean() -// sensor1.pitchAngle = 3.03 -// sensor1.rollAngle = 0.00 -// sensor1.azimuthAngle = 180.81 -// sensor1.lon = 117.163095 -// sensor1.lat = 31.786049 -// sensor1.h = 44.55 -// var radarPoint1: MutableList = ArrayList() -// radarPoint1.add(RadarPointBean(173.5, 4.55)) -// radarPoint1.add(RadarPointBean(174.2, 4.96)) -// -// var coordinate1 :MutableList = ArrayList() -// for (radarPointBean in radarPoint1) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1) -// coordinate.radarPoint = radarPointBean -// coordinate1.add(coordinate) -// } -// -// var sensor2 = SensorDataBean() -// sensor2.pitchAngle = 2.02 -// sensor2.rollAngle = 0.0 -// sensor2.azimuthAngle = 185.86 -// sensor2.lon = 117.162919 -// sensor2.lat = 31.786029 -// sensor2.h = 44.81 -// var radarPoint2: MutableList = ArrayList() -// radarPoint2.add(RadarPointBean(170.5, 3.04)) -// radarPoint2.add(RadarPointBean(173.55, 3.4)) -// var coordinate2 :MutableList = ArrayList() -// for (radarPointBean in radarPoint2) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2) -// coordinate.radarPoint = radarPointBean -// coordinate2.add(coordinate) -// } -// -// var sensor3 = SensorDataBean() -// sensor3.pitchAngle =1.02 -// sensor3.rollAngle = 0.0 -// sensor3.azimuthAngle = 187.88 -// sensor3.lon = 117.16275 -// sensor3.lat = 31.786031 -// sensor3.h = 42.96 -// var radarPoint3: MutableList = ArrayList() -// radarPoint3.add(RadarPointBean(172.65, 3.9)) -// radarPoint3.add(RadarPointBean(175.55, 4.23)) -// var coordinate3 :MutableList = ArrayList() -// for (radarPointBean in radarPoint3) { -// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3) -// coordinate.radarPoint = radarPointBean -// coordinate3.add(coordinate) -// } -// -// sensorDataList.add(sensor1) -// sensorDataList.add(sensor2) -// sensorDataList.add(sensor3) -// coordinatesList.add(coordinate1) -// coordinatesList.add(coordinate2) -// coordinatesList.add(coordinate3) - - - var sensor1 = SensorDataBean() - sensor1.pitchAngle = 0.0 - sensor1.rollAngle = 0.0 - sensor1.azimuthAngle = 192.93 - sensor1.lon = 117.16394922 - sensor1.lat = 31.78600260 - sensor1.h = 32.66266 - var radarPoint1: MutableList = ArrayList() - radarPoint1.add(RadarPointBean(137.6, 6.588)) - - var coordinate1: MutableList = ArrayList() - for (radarPointBean in radarPoint1) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1) - coordinate.radarPoint = radarPointBean - coordinate1.add(coordinate) - } - - var sensor2 = SensorDataBean() - sensor2.pitchAngle = 1.01 - sensor2.rollAngle = 4.05 - sensor2.azimuthAngle = 195.95 - sensor2.lon = 117.16394922 - sensor2.lat = 31.78600260 - sensor2.h = 32.66266 - var radarPoint2: MutableList = ArrayList() - radarPoint2.add(RadarPointBean(136.69, 6.669)) - var coordinate2: MutableList = ArrayList() - for (radarPointBean in radarPoint2) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2) - coordinate.radarPoint = radarPointBean - coordinate2.add(coordinate) - } - - var sensor3 = SensorDataBean() - sensor3.pitchAngle = 0.01 - sensor3.rollAngle = 0.01 - sensor3.azimuthAngle = 195.96 - sensor3.lon = 117.16394581 - sensor3.lat = 31.78550375 - sensor3.h = 30.31926 - var radarPoint3: MutableList = ArrayList() - radarPoint3.add(RadarPointBean(140.8, 6.334)) - var coordinate3: MutableList = ArrayList() - for (radarPointBean in radarPoint3) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3) - coordinate.radarPoint = radarPointBean - coordinate3.add(coordinate) - } - - var sensor4 = SensorDataBean() - sensor4.pitchAngle = 0.0 - sensor4.rollAngle = 0.01 - sensor4.azimuthAngle = 194.94 - sensor4.lon = 117.16394581 - sensor4.lat = 31.78550375 - sensor4.h = 30.31926 - var radarPoint4: MutableList = ArrayList() - radarPoint4.add(RadarPointBean(139.94, 6.277)) - var coordinate4: MutableList = ArrayList() - for (radarPointBean in radarPoint4) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor4) - coordinate.radarPoint = radarPointBean - coordinate4.add(coordinate) - } - - var sensor5 = SensorDataBean() - sensor5.pitchAngle = 0.01 - sensor5.rollAngle = 1.01 - sensor5.azimuthAngle = 194.94 - sensor5.lon = 117.16395386 - sensor5.lat = 31.78494992 - sensor5.h = 34.99086 - var radarPoint5: MutableList = ArrayList() - radarPoint5.add(RadarPointBean(130.9, 6.495)) - var coordinate5: MutableList = ArrayList() - for (radarPointBean in radarPoint5) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor5) - coordinate.radarPoint = radarPointBean - coordinate5.add(coordinate) - } - - var sensor6 = SensorDataBean() - sensor6.pitchAngle = 0.0 - sensor6.rollAngle = 5.05 - sensor6.azimuthAngle = 198.98 - sensor6.lon = 117.16395386 - sensor6.lat = 31.78494992 - sensor6.h = 34.99086 - var radarPoint6: MutableList = ArrayList() - radarPoint6.add(RadarPointBean(129.94, 6.485)) - var coordinate6: MutableList = ArrayList() - for (radarPointBean in radarPoint6) { - val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor6) - coordinate.radarPoint = radarPointBean - coordinate6.add(coordinate) - } - - sensorDataList.add(sensor1) - sensorDataList.add(sensor2) - sensorDataList.add(sensor3) - coordinatesList.add(coordinate1) - coordinatesList.add(coordinate2) - coordinatesList.add(coordinate3) - sensorDataList.add(sensor4) - sensorDataList.add(sensor5) - sensorDataList.add(sensor6) - coordinatesList.add(coordinate4) - coordinatesList.add(coordinate5) - coordinatesList.add(coordinate6) - - } - private fun getSag() { - dealWithDatas() if (methodNum == 3) { if (coordinatesList.size >= 3) { var point1: MutableList = ArrayList() @@ -973,6 +486,7 @@ class MainActivity : AppCompatActivity() { sb.append(calculate(span, lineAllPoint, 3)).append(",") } sagEditText.setText(sb.toString()) + logger.log("三点计算弧垂:"+sb.toString()) } } else if (methodNum == 6) { var pointNum = methodNum @@ -1014,6 +528,7 @@ class MainActivity : AppCompatActivity() { sb.append(calculate(span, lineAllPoint, pointNum)).append(",") } sagEditText.setText(sb.toString()) + logger.log("六点计算弧垂:"+sb.toString()) } } @@ -1086,7 +601,6 @@ class MainActivity : AppCompatActivity() { radar3.setText("") radar4.setText("") gps.setText("") - gpsSkew.setText("") gpsMode.setText("") pitchAngle.setText("") rollAngle.setText("") @@ -1096,6 +610,15 @@ class MainActivity : AppCompatActivity() { vAngleText.setText("") } + fun getCurrentTimeAsString(): String { + // 获取当前时间 + val currentTime = LocalTime.now() + // 定义格式化模式 + val formatter = DateTimeFormatter.ofPattern("HH:mm:ss") + // 格式化当前时间 + return currentTime.format(formatter) + } + override fun onDestroy() { super.onDestroy() job?.cancel() diff --git a/app/src/main/java/com/bonus/wrjtest/entity/Coordinate.java b/app/src/main/java/com/bonus/wrjtest/entity/Coordinate.java index ce529c3..5e75c6c 100644 --- a/app/src/main/java/com/bonus/wrjtest/entity/Coordinate.java +++ b/app/src/main/java/com/bonus/wrjtest/entity/Coordinate.java @@ -72,4 +72,15 @@ public class Coordinate { public void setWireNum(int wireNum) { this.wireNum = wireNum; } + + + @Override + public String toString() { + return "测点{" + + "导线编号=" + wireNum + + ", lat=" + lat + + ", lon=" + lon + + ", h=" + h + + '}'; + } } diff --git a/app/src/main/java/com/bonus/wrjtest/entity/RadarPointBean.java b/app/src/main/java/com/bonus/wrjtest/entity/RadarPointBean.java index fb1ab9a..bdf1f67 100644 --- a/app/src/main/java/com/bonus/wrjtest/entity/RadarPointBean.java +++ b/app/src/main/java/com/bonus/wrjtest/entity/RadarPointBean.java @@ -1,5 +1,8 @@ package com.bonus.wrjtest.entity; +import androidx.annotation.NonNull; +import org.jetbrains.annotations.NotNull; + public class RadarPointBean { /** @@ -53,4 +56,12 @@ public class RadarPointBean { public void setReflectivity(double reflectivity) { this.reflectivity = reflectivity; } + + @Override + public String toString() { + return "雷达{" + + "角度=" + angle + + ", 距离=" + distance + + '}'; + } } diff --git a/app/src/main/java/com/bonus/wrjtest/entity/SensorDataBean.java b/app/src/main/java/com/bonus/wrjtest/entity/SensorDataBean.java index d781d47..3591489 100644 --- a/app/src/main/java/com/bonus/wrjtest/entity/SensorDataBean.java +++ b/app/src/main/java/com/bonus/wrjtest/entity/SensorDataBean.java @@ -126,4 +126,16 @@ public class SensorDataBean { public void setPositioningMode(String positioningMode) { this.positioningMode = positioningMode; } + + @Override + public String toString() { + return "雷达{" + + "lon=" + lon + + ", lat=" + lat + + ", h=" + h + + ", 方位角=" + azimuthAngle + + ", 定位模式=" + positioningMode + + '}'; + } + } diff --git a/app/src/main/java/com/bonus/wrjtest/utils/FileLogger.java b/app/src/main/java/com/bonus/wrjtest/utils/FileLogger.java new file mode 100644 index 0000000..613aa03 --- /dev/null +++ b/app/src/main/java/com/bonus/wrjtest/utils/FileLogger.java @@ -0,0 +1,90 @@ +package com.bonus.wrjtest.utils; + +import android.content.Context; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class FileLogger { + private static final String LOG_DIR = "app_logs"; + private static final String LOG_FILE = "app_log.txt"; + private static final int MAX_LOG_SIZE = 1024 * 1024; + private static final int MAX_LOG_FILES = 5; + + private Context context; + private SimpleDateFormat dateFormat; + + public FileLogger(Context context) { + this.context = context.getApplicationContext(); + this.dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); + } + + public void log(String tag, String message) { + String logMessage = String.format("%s [%s] %s\n", + dateFormat.format(new Date()), + tag, + message); + + writeToFile(logMessage); + } + + private void writeToFile(String message) { + File logDir = new File(context.getExternalFilesDir(null), LOG_DIR); + if (!logDir.exists()) { + logDir.mkdirs(); + } + + File logFile = new File(logDir, LOG_FILE); + + try { + // 检查文件大小,如果超过限制则轮转 + if (logFile.exists() && logFile.length() > MAX_LOG_SIZE) { + rotateLogs(logDir); + } + + FileOutputStream fos = new FileOutputStream(logFile, true); + OutputStreamWriter osw = new OutputStreamWriter(fos); + osw.append(message); + osw.close(); + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void rotateLogs(File logDir) { + // 删除最旧的日志文件 + File oldestFile = new File(logDir, LOG_FILE + "." + MAX_LOG_FILES); + if (oldestFile.exists()) { + oldestFile.delete(); + } + + // 重命名现有日志文件 + for (int i = MAX_LOG_FILES - 1; i >= 0; i--) { + File oldFile = i == 0 ? + new File(logDir, LOG_FILE) : + new File(logDir, LOG_FILE + "." + i); + + if (oldFile.exists()) { + File newFile = new File(logDir, LOG_FILE + "." + (i + 1)); + oldFile.renameTo(newFile); + } + } + } + + public void clearLogs() { + File logDir = new File(context.getExternalFilesDir(null), LOG_DIR); + if (logDir.exists()) { + File[] files = logDir.listFiles(); + if (files != null) { + for (File file : files) { + file.delete(); + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/bonus/wrjtest/utils/KotlinLogger.kt b/app/src/main/java/com/bonus/wrjtest/utils/KotlinLogger.kt new file mode 100644 index 0000000..00946f1 --- /dev/null +++ b/app/src/main/java/com/bonus/wrjtest/utils/KotlinLogger.kt @@ -0,0 +1,59 @@ +package com.bonus.wrjtest.utils; + +import android.content.Context +import kotlin.jvm.Volatile; + +import java.io.File +import java.io.FileOutputStream +import java.io.IOException +import java.text.SimpleDateFormat +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.* + +class KotlinLogger private constructor(context: Context) { + + private val appContext: Context = context.applicationContext + + companion object { + @Volatile + private var instance: KotlinLogger? = null + + fun getInstance(context: Context): KotlinLogger { + return instance ?: synchronized(this) { + instance ?: KotlinLogger(context.applicationContext).also { instance = it } + } + } + } + + fun log(message: String) { + val fileName = "app_log${getCurrentTimeAsString()}.txt" + val storageDir = File(appContext.getExternalFilesDir(null), "Logs") + if (!storageDir.exists()) { + storageDir.mkdirs() + } + + val logFile = File(storageDir, fileName) + try { + FileOutputStream(logFile, true).use { output -> + output.write("${getCurrentDateTimeString()} - $message\n".toByteArray()) + } + println("日志文件已保存至:${logFile.absolutePath}") + } catch (e: IOException) { + e.printStackTrace() + println("写入日志文件时出错: ${e.message}") + } + } + + private fun getCurrentTimeAsString(): String { + val currentTime = LocalTime.now() + val formatter = DateTimeFormatter.ofPattern("HHmmss") + return currentTime.format(formatter) + } + + private fun getCurrentDateTimeString(): String { + val currentDateTime = Date() + val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) + return dateFormat.format(currentDateTime) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java b/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java index d1e7033..cf8d945 100644 --- a/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java +++ b/app/src/main/java/com/bonus/wrjtest/utils/RadarMathUtil.java @@ -28,7 +28,7 @@ public class RadarMathUtil { /** * 激光雷达与测点连线与正北方向偏角 顺时针为正 */ - private static final double radarAngle1 = -90 ; + private static final double radarAngle1 = 90 ; /** * 3)、测点经纬度计算(pdf) @@ -89,32 +89,39 @@ public class RadarMathUtil { public static Coordinate transferPoint2(RadarPointBean radarPointBean, SensorDataBean sensorDataBean) { double radarAngle = radarPointBean.getAngle(); double dis = radarPointBean.getDistance(); - + dis = dis * Math.sin(Math.toRadians(radarAngle)); double lonGps = sensorDataBean.getLon(); double latGps = sensorDataBean.getLat(); double hGps = sensorDataBean.getH(); - double azimuthAngle = sensorDataBean.getAzimuthAngle() - 15.0; - //1.RTK天线到激光雷达点转换 - //激光雷达经度 - double lonRadar = lonGps + RTKDistance * Math.sin((azimuthAngle+RTKAngle)/180*Math.PI)/Rq/Math.cos(latGps/180*Math.PI)*180/Math.PI; - //激光雷达纬度 - double latRadar = latGps + (RTKDistance * Math.cos((azimuthAngle+RTKAngle)/180*Math.PI)/Rq)*180/Math.PI; - //激光雷达高程 +// double azimuthAngle = sensorDataBean.getAzimuthAngle() - 15.0; + double azimuthAngle = sensorDataBean.getAzimuthAngle(); +// //1.RTK天线到激光雷达点转换 +// //激光雷达经度 +// double lonRadar = lonGps + RTKDistance * Math.sin((azimuthAngle+RTKAngle)/180*Math.PI)/Rq/Math.cos(latGps/180*Math.PI)*180/Math.PI; +// //激光雷达纬度 +// double latRadar = latGps + (RTKDistance * Math.cos((azimuthAngle+RTKAngle)/180*Math.PI)/Rq)*180/Math.PI; +// //激光雷达高程 +// double hRadar = hGps; +// System.out.printf("雷达点:lat:%.8f; lon:%.8f; 高度:%.2f; 方位角:%.2f\n", latRadar, lonRadar, hRadar,azimuthAngle); + double lonRadar=lonGps; + double latRadar=latGps; double hRadar = hGps; - System.out.printf("雷达点:lat:%.8f; lon:%.8f; 高度:%.2f; 方位角:%.2f\n", latRadar, lonRadar, hRadar,azimuthAngle); + //1.激光雷达点到扫描点转换 //测点经度 double lon2 = lonRadar + dis * Math.sin((azimuthAngle+radarAngle1)/180*Math.PI)/Rq/Math.cos(latRadar/180*Math.PI)*180/Math.PI; //测点纬度 double lat2 = latRadar + (dis*Math.cos((azimuthAngle+radarAngle1)/180*Math.PI)/Rq)*180/Math.PI; //测点高程 可能为减 - //2025-01-16,激光雷达扫描角度偏差90度,修改角度 - if(radarAngle>90){ - radarAngle = radarAngle - 90; - }else if(radarAngle<90){ - radarAngle = 90 - radarAngle; - } - double h2 = hRadar + dis * MathUtils.sin(radarAngle - sensorDataBean.getRollAngle()); + //2025-01-16,激光雷达扫描角度偏差90度,修改角度,2025-03-27换成cos了不需要换算补角了 +// if(radarAngle>90){ +// radarAngle = radarAngle - 90; +// }else if(radarAngle<90){ +// radarAngle = 90 - radarAngle; +// } + double h2 = hRadar + dis * MathUtils.cos(radarAngle - sensorDataBean.getRollAngle()); + System.out.printf("ABC中心雷达点:lat:%.8f; lon:%.8f; 高度:%.2f; 方位角:%.2f\n", latRadar, lonRadar, hRadar,azimuthAngle); + System.out.printf("ABC测量点:lat:%.8f; lon:%.8f; 高度:%.2f\n", lat2, lon2, h2); return new Coordinate(lon2,lat2,h2); } @@ -176,25 +183,29 @@ public class RadarMathUtil { public static void main(String[] args) { - double aa = MathUtils.cos(Math.toDegrees(117.163278)); - - Coordinate a = new Coordinate(117.1619993,31.78698773,26.84059216); - Coordinate b = new Coordinate(117.1620358,31.78709891,26.19002772); - Coordinate c = new Coordinate(117.1636201,31.78573614,26.97952017); - //弧垂系数k - double k = calculateK(a, b, c); - System.out.println(k); - //弧垂 - double sag = getSag(a, b, c ,45.23); - System.out.println(sag); - List point1 = new ArrayList(); - List point2 = new ArrayList(); - List point3 = new ArrayList(); - for (int i = 0; i < point1.size(); i++) { - // 遍历每个 MutableList 中的 Coordinate - double sag2 = getSag(point1.get(i), point2.get(i), point3.get(i), 48.209); - } +// Coordinate a = new Coordinate(117.1619993,31.78698773,26.84059216); +// Coordinate b = new Coordinate(117.1620358,31.78709891,26.19002772); +// Coordinate c = new Coordinate(117.1636201,31.78573614,26.97952017); +// //弧垂系数k +// double k = calculateK(a, b, c); +// System.out.println(k); +// //弧垂 +// double sag = getSag(a, b, c ,45.23); +// System.out.println(sag); +// List point1 = new ArrayList(); +// List point2 = new ArrayList(); +// List point3 = new ArrayList(); +// for (int i = 0; i < point1.size(); i++) { +// // 遍历每个 MutableList 中的 Coordinate +// double sag2 = getSag(point1.get(i), point2.get(i), point3.get(i), 48.209); +// } + RadarPointBean radarPointBean = new RadarPointBean(); + radarPointBean.setAngle(90); + radarPointBean.setDistance(48.209); + SensorDataBean sensorDataBean = new SensorDataBean(); + sensorDataBean.setAzimuthAngle(90); + transferPoint2(radarPointBean, sensorDataBean); } diff --git a/app/src/main/res/layout/test.xml b/app/src/main/res/layout/test.xml index b27617c..dd8cb4b 100644 --- a/app/src/main/res/layout/test.xml +++ b/app/src/main/res/layout/test.xml @@ -230,28 +230,6 @@ android:inputType="text"/> - - - - - - -