计算优化

日志打印方法编写
This commit is contained in:
fl 2025-03-28 17:47:34 +08:00
parent 5d88c394c9
commit 1762a35971
8 changed files with 268 additions and 573 deletions

View File

@ -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<MutableList<Coordinate>> = ArrayList()
var sensorDataList: ArrayList<SensorDataBean> = ArrayList()
var coordinates: MutableList<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = ArrayList()
// radarPoint1.add(RadarPointBean(173.5, 4.55))
// radarPoint1.add(RadarPointBean(174.2, 4.96))
//
// var coordinate1 :MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
// radarPoint2.add(RadarPointBean(170.5, 3.04))
// radarPoint2.add(RadarPointBean(173.55, 3.4))
// var coordinate2 :MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
// radarPoint3.add(RadarPointBean(172.65, 3.9))
// radarPoint3.add(RadarPointBean(175.55, 4.23))
// var coordinate3 :MutableList<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = 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<Coordinate> = 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<RadarPointBean> = ArrayList()
// radarPoint1.add(RadarPointBean(173.5, 4.55))
// radarPoint1.add(RadarPointBean(174.2, 4.96))
//
// var coordinate1 :MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
// radarPoint2.add(RadarPointBean(170.5, 3.04))
// radarPoint2.add(RadarPointBean(173.55, 3.4))
// var coordinate2 :MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
// radarPoint3.add(RadarPointBean(172.65, 3.9))
// radarPoint3.add(RadarPointBean(175.55, 4.23))
// var coordinate3 :MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
radarPoint1.add(RadarPointBean(137.6, 6.588))
var coordinate1: MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
radarPoint2.add(RadarPointBean(136.69, 6.669))
var coordinate2: MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
radarPoint3.add(RadarPointBean(140.8, 6.334))
var coordinate3: MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
radarPoint4.add(RadarPointBean(139.94, 6.277))
var coordinate4: MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
radarPoint5.add(RadarPointBean(130.9, 6.495))
var coordinate5: MutableList<Coordinate> = 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<RadarPointBean> = ArrayList()
radarPoint6.add(RadarPointBean(129.94, 6.485))
var coordinate6: MutableList<Coordinate> = 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<Coordinate> = 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()

View File

@ -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 +
'}';
}
}

View File

@ -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 +
'}';
}
}

View File

@ -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 +
'}';
}
}

View File

@ -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();
}
}
}
}
}

View File

@ -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)
}
}

View File

@ -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<Coordinate> point1 = new ArrayList<Coordinate>();
List<Coordinate> point2 = new ArrayList<Coordinate>();
List<Coordinate> point3 = new ArrayList<Coordinate>();
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<Coordinate> point1 = new ArrayList<Coordinate>();
// List<Coordinate> point2 = new ArrayList<Coordinate>();
// List<Coordinate> point3 = new ArrayList<Coordinate>();
// 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);
}

View File

@ -230,28 +230,6 @@
android:inputType="text"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="偏移定位:"
android:textSize="12sp"
android:layout_gravity="center_vertical"/>
<EditText
android:id="@+id/gpsSkew"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="11sp"
android:inputType="text"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"