diff --git a/app/src/main/java/com/bonus/wrjtest/MainActivity.kt b/app/src/main/java/com/bonus/wrjtest/MainActivity.kt index abf5798..fc633ef 100644 --- a/app/src/main/java/com/bonus/wrjtest/MainActivity.kt +++ b/app/src/main/java/com/bonus/wrjtest/MainActivity.kt @@ -7,25 +7,23 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.Log +import android.view.View import android.view.ViewGroup -import android.widget.Button -import android.widget.EditText -import android.widget.Toast +import android.widget.* import androidx.appcompat.app.AppCompatActivity import com.bonus.wrjtest.db.MeasureDataDao import com.bonus.wrjtest.entity.Coordinate import com.bonus.wrjtest.entity.RadarPointBean import com.bonus.wrjtest.entity.SensorDataBean -import com.bonus.wrjtest.utils.ArithUtil -import com.bonus.wrjtest.utils.ByteUtil import com.bonus.wrjtest.utils.MultipointSagMeasure.calculate -import com.bonus.wrjtest.utils.RadarMathUtil import kotlinx.coroutines.Job import kotlin.math.cos import kotlin.math.sin import androidx.lifecycle.lifecycleScope -import com.bonus.wrjtest.utils.KotlinLogger +import com.bonus.wrjtest.db.MeasurementDataDao +import com.bonus.wrjtest.entity.MeasurementDataBean +import com.bonus.wrjtest.utils.* import com.skydroid.rcsdk.PipelineManager import com.skydroid.rcsdk.comm.CommListener import com.skydroid.rcsdk.common.error.SkyException @@ -46,26 +44,57 @@ class MainActivity : AppCompatActivity() { private var job: Job? = null lateinit var pipeline: Pipeline - lateinit var radar1: EditText - lateinit var radar2: EditText - lateinit var radar3: EditText - lateinit var radar4: EditText - lateinit var gps: EditText - lateinit var gpsMode: EditText - lateinit var pitchAngle: EditText - lateinit var rollAngle: EditText - lateinit var azimuthAngle: EditText + lateinit var radar1: TextView + lateinit var radar2: TextView + lateinit var radar3: TextView + lateinit var radar4: TextView + lateinit var gps: TextView + lateinit var gpsMode: TextView + lateinit var pitchAngle: TextView + lateinit var rollAngle: TextView + lateinit var azimuthAngle: TextView lateinit var returnData: EditText - lateinit var sagEditText: EditText + lateinit var sagEditText: TextView lateinit var hAngleText: EditText lateinit var vAngleText: EditText - lateinit var positionText: EditText + lateinit var positionText: TextView lateinit var spanText: EditText + lateinit var distance:TextView + lateinit var height:TextView + lateinit var circuitTypeGroup: RadioGroup + lateinit var singleCircuitOptions:LinearLayout + lateinit var doubleCircuitOptions:LinearLayout + + /** 分裂类型 */ + lateinit var radioGroupSplitType: RadioGroup + + //单选框 + lateinit var singlePhaseGroup:RadioGroup + lateinit var doublePhaseGroup: RadioGroup + lateinit var doubleBottomPhaseGroup: RadioGroup + + /** 按钮控件 */ + /** 按钮--保存数据 */ + lateinit var poll: Button + /** 按钮--清除数据 */ + lateinit var clear: Button + /** 按钮--计算弧垂 */ + lateinit var measure: Button + /** 按钮--发送数据 */ + lateinit var send1: Button + /** 按钮--开始测量 */ + lateinit var send2: Button + /** 按钮--视频 */ + lateinit var video: Button + /** 按钮--测量距离 */ + lateinit var measureDistance: Button + /** 按钮--数据记录 */ + lateinit var record: Button + var handler: Handler = Handler(Looper.getMainLooper()) val resultDataSb = StringBuilder() - // 声明 kotlinLogger 作为 Activity 的一个属性 private lateinit var logger: KotlinLogger var coordinatesList: ArrayList> = ArrayList() @@ -73,23 +102,50 @@ class MainActivity : AppCompatActivity() { var coordinates: MutableList = ArrayList() var sensorDataBean: SensorDataBean = SensorDataBean() private lateinit var measureDataDao: MeasureDataDao -// val measureDataDao = MeasureDataDao((application as MyApplication).getDbHelper()) + private lateinit var measurementDataDao: MeasurementDataDao - private var splitType = "02" + /** 分裂类型 */ + private var splitType = "01" + /** 档距 */ private var span = 48.209 - private var h = 4.136 + /** 高差 */ + private var h = 0.139 private var methodNum = 6 + /** + * 是否保存日志 + * 0-不保存,1-保存 + */ private var isPrint=0; + /** + * 测量位置 + * 大号在左,大号在右 + */ private var position="大号在右" - // 定义一个全局的 ProgressDialog 变量 + + /** 定义一个全局的 ProgressDialog 变量 */ private var progressDialog: ProgressDialog? = null - //GPS与雷达位置偏移常量切换 -// var gpsDistance = 0.28 -// var gpsAngle = 0.0 + /** 定义一个标志位,用于防止循环调用 */ + var isClearing = false + + /** + * 测量位置 + * 单回路: 1-左地线/光缆, 2-右地线/光缆, 3-左相, 4-中相, 5-右相 + * 双回路: 6-左地线/光缆, 7-地线/光缆, 8-左上相, 9-左中相,10-左下相,11-右上相, 12-右中相,13-右下相 + */ + private var positionType=1 + + /** 是否保存配置 */ + private var isConfig = 0; + + /** + * 是否记录悬停数据 + * 0-不记录,1-记录 + */ + private var isRecord = 0; override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -99,6 +155,156 @@ class MainActivity : AppCompatActivity() { // 在 Activity 或其他有 Context 的地方 logger = KotlinLogger.getInstance(this) measureDataDao = MeasureDataDao(myApplication.getDbHelper()) + measurementDataDao = MeasurementDataDao(myApplication.getDbHelper()) + //初始化视图 + initView() + //创建通道 + createChannel() + + // 统一设置点击事件 + setButtonClickListeners(send1, send2, poll, clear, measure, video,measureDistance, record) + + //点击事件 + initClick() + + } + + /** + * 初始化点击事件 + */ + private fun initClick() { + // 设置回路类型选择监听 + circuitTypeGroup.setOnCheckedChangeListener { group, checkedId -> + when (checkedId) { + R.id.singleCircuit -> { + singleCircuitOptions.visibility = View.VISIBLE + doubleCircuitOptions.visibility = View.GONE + positionType=1; + } + R.id.doubleCircuit -> { + singleCircuitOptions.visibility = View.GONE + doubleCircuitOptions.visibility = View.VISIBLE + positionType=6; + } + } + } + + //单回路 + singlePhaseGroup.setOnCheckedChangeListener { group, checkedId -> + when (checkedId) { + R.id.leftGroundWire -> { + positionType=1; + } + R.id.rightGroundWire -> { + positionType=2; + } + R.id.leftPhase -> { + positionType=3; + } + R.id.middlePhase -> { + positionType=4; + } + R.id.rightPhase -> { + positionType=5; + } + } + } + + doublePhaseGroup.setOnCheckedChangeListener { group, checkedId -> + // 如果当前正在清除操作,则直接返回 + if (isClearing) return@setOnCheckedChangeListener + + // 当 doublePhaseGroup 中有选项被选中时,清空 doubleBottomPhaseGroup 的选中状态 + if (checkedId != -1) { + isClearing = true // 设置标志位 + doubleBottomPhaseGroup.clearCheck() + isClearing = false // 清除标志位 + } + when (checkedId) { + R.id.dLeftGroundWire -> { + positionType=6; + } + R.id.dRightGroundWire -> { + positionType=7; + } + R.id.leftTopPhase -> { + positionType=8; + } + R.id.leftMiddlePhase -> { + positionType=9; + } + R.id.leftBottomPhase -> { + positionType=10; + } + + } + } + + doubleBottomPhaseGroup.setOnCheckedChangeListener { group, checkedId -> + // 如果当前正在清除操作,则直接返回 + if (isClearing) return@setOnCheckedChangeListener + + // 当 doubleBottomPhaseGroup 中有选项被选中时,清空 doublePhaseGroup 的选中状态 + if (checkedId != -1) { + isClearing = true // 设置标志位 + doublePhaseGroup.clearCheck() + isClearing = false // 清除标志位 + } + + when (checkedId) { + R.id.rightTopPhase -> { + positionType=11; + } + R.id.rightMiddlePhase -> { + positionType=12; + } + R.id.rightBottomPhase -> { + positionType=13; + } + } + } + + //分裂类型 + radioGroupSplitType.setOnCheckedChangeListener { group, checkedId -> + when (checkedId) { + R.id.radioButtonSingleSplit -> { + splitType = "01" + h = 0.139 + Toast.makeText(this, "单分裂", Toast.LENGTH_SHORT).show() + } + R.id.radioButtonDoubleSplit -> { + splitType = "02" + h = 4.136 + Toast.makeText(this, "双分裂", Toast.LENGTH_SHORT).show() + } + R.id.radioButtonQuadSplit -> { + splitType = "04" + h = 4.125 + Toast.makeText(this, "四分裂", Toast.LENGTH_SHORT).show() + } + } + coordinatesList.clear() + sensorDataList.clear() + } + + positionText.setOnClickListener { + if (position.equals("大号在右")) { + position = "大号在左" + positionText.setText("大号在左") + } else { + position = "大号在右" + positionText.setText("大号在右") + } + Toast.makeText(this, "切换测量位置为:" + position, Toast.LENGTH_LONG).show() + sendMsg(4) + } + + } + + /** + * 初始化视图 + */ + private fun initView() { radar1 = findViewById(R.id.radar1) radar2 = findViewById(R.id.radar2) radar3 = findViewById(R.id.radar3) @@ -115,138 +321,155 @@ class MainActivity : AppCompatActivity() { vAngleText = findViewById(R.id.vAngle) positionText = findViewById(R.id.position) spanText = findViewById(R.id.span) - //创建通道 - createChannel() + distance = findViewById(R.id.distance) + height = findViewById(R.id.height) + circuitTypeGroup = findViewById(R.id.circuitTypeGroup) + singleCircuitOptions = findViewById(R.id.singleCircuitOptions) + doubleCircuitOptions = findViewById(R.id.doubleCircuitOptions) + //按钮 + send1 = findViewById(R.id.send1) + send2 = findViewById(R.id.send2) + poll = findViewById(R.id.poll) + measure = findViewById(R.id.measure) + clear = findViewById(R.id.clear) + video = findViewById(R.id.video) + measureDistance = findViewById(R.id.measureDistance) + record = findViewById(R.id.record) + //单选框 + singlePhaseGroup = findViewById(R.id.singlePhaseGroup) + doublePhaseGroup = findViewById(R.id.doublePhaseGroup) + doubleBottomPhaseGroup = findViewById(R.id.doubleBottomPhaseGroup) - findViewById