diff --git a/app/src/main/java/com/casic/detector/common/view/MainActivity.kt b/app/src/main/java/com/casic/detector/common/view/MainActivity.kt index 38b6d60..e4d41e8 100644 --- a/app/src/main/java/com/casic/detector/common/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/common/view/MainActivity.kt @@ -82,6 +82,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import io.netty.buffer.Unpooled import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.File @@ -116,6 +117,9 @@ private var searchMarkerTimer: Timer? = null private var soundResourceId = 0 private var isExecuteTask = false + private var remoteHost = "" + private var remotePort = "" + private var outStream: OutputStream? = null private lateinit var aMap: AMap override fun initViewBinding(): ActivityMainBinding { @@ -495,6 +499,7 @@ searchMarkerTimer = Timer() serialPortService?.openSerialPort(object : OnSerialPortDataListener { override fun write(outStream: OutputStream) { + this@MainActivity.outStream = outStream runOnUiThread { searchMarkerTimer?.schedule(object : TimerTask() { override fun run() { @@ -886,28 +891,28 @@ } //取缓存 - val remoteHost = SaveKeyValues.getValue( - LocaleConstant.RTK_SERVER, "203.107.45.154" - ) as String - val remotePort = SaveKeyValues.getValue( - LocaleConstant.RTK_PORT, "8003" - ) as String + remoteHost = SaveKeyValues.getValue(LocaleConstant.RTK_SERVER, "203.107.45.154") as String + remotePort = SaveKeyValues.getValue(LocaleConstant.RTK_PORT, "8003") as String //连接千寻RTK服务器 -// lifecycleScope.launch(Dispatchers.IO) { -// if (socketClient != null) { -// socketClient?.disconnect() -// delay(3000) -// } -// -// socketClient = SocketClient.Builder() -// .setHostname(remoteHost) -// .setPort(remotePort.toInt()) -// .setTimeout(5000) -// .setOnSocketListener(this@MainActivity) -// .build() -// socketClient?.connect() -// } + lifecycleScope.launch(Dispatchers.IO) { + if (socketClient != null) { + socketClient?.disconnect() + delay(3000) + } + + connectQianXunServer() + } + } + + private fun connectQianXunServer() { + socketClient = SocketClient.Builder() + .setHostname(remoteHost) + .setPort(remotePort.toInt()) + .setTimeout(5000) + .setOnSocketListener(this) + .build() + socketClient?.connect() } override fun onMessageResponse(data: ByteArray) { @@ -924,8 +929,8 @@ } } else { "收到千寻数据返回,长度:${data.size}".show(this) -// out.write(data) -// out.flush() + outStream?.write(data) + outStream?.flush() } } @@ -933,7 +938,6 @@ this.connectState = status if (connectState == ConnectState.SUCCESS) { //连接成功就发送千寻请求报文 - val account = SaveKeyValues.getValue(LocaleConstant.ACK, "qxtmcr0087663") as String val pwd = SaveKeyValues.getValue(LocaleConstant.ACS, "1f1f9b9") as String @@ -954,6 +958,22 @@ val byteBuf = Unpooled.wrappedBuffer(msg.toByteArray()) socketClient?.sendData(byteBuf) + } else { + AlertControlDialog.Builder().setContext(context) + .setTitle("温馨提示") + .setMessage("千寻定位服务已断开,谁否重连?") + .setPositiveButton("是") + .setNegativeButton("否") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + lifecycleScope.launch(Dispatchers.IO) { connectQianXunServer() } + } + + override fun onCancelClick() { + + } + }).build().show() } }