Commit 42aa7c93 authored by p x's avatar p x
Browse files

增加一部份车辆位姿代码

parent 8562f1bc
package com.sd.cavphmi.bean.mock
/***车辆位姿 自己服务器的*/
class CarVeh {
/**业务状态 park call park_com call_com**/
var status = ""
/***车辆行驶的点位**/
var carPos = 0
/***全局路径**/
var rs: List<List<Double>>? = null
}
\ No newline at end of file
......@@ -39,10 +39,10 @@ class LoginActivity : AppCompatActivity() {
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
if (MMKVUtil.token.isNotEmpty()) {
/* if (MMKVUtil.token.isNotEmpty()) {
MyContants.HTTP_TOKEN = MMKVUtil.token
getBinderCars()
}
}*/
// else {
var lo = binding.btLogin.clicks().throttleFirst(1, TimeUnit.SECONDS).subscribe {
login()
......@@ -65,9 +65,11 @@ class LoginActivity : AppCompatActivity() {
loginVm.login(user, PWD, VERIFYCODE).collect {
// println("-----------登录回调 = ${it}")
//获取可绑定车辆
if (it == 1) {
/* if (it == 1) {
getBinderCars()
}
}*/
startActivity(Intent(this@LoginActivity, MainActivity::class.java))
finish()
}
}
}
......
......@@ -164,29 +164,29 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
}
override fun getToData() {
/* if (!mainVm.isMock) {
/* if (!mainVm.isMock) {
//开启AVP状态(HTTP SSE)
getAvpStatus()
}
}*/
//开启V2X预警
getV2x()
//开启感知物websocket
getTarget()
//开启车辆位姿
getCarVehicle()*/
// getCarVehicle()
//获取车位占用情况
// getSpaceInfo()
//连接自己的服务V2X 和车辆位姿
//连接自己的服务车辆位姿
getSelfCar()
getV2x()
}
/**连接自己的车辆位姿服务**/
private fun getSelfCar() {
mainVm.getSelfCar()
}
//获取车位占用情况
private fun getSpaceInfo() {
mainVm.getSpaceInfo().observe(this) { spaceInfo ->
......
......@@ -26,13 +26,13 @@ object MyContants {
//跟踪车辆的ID 15(模拟) skywell.1ggvlp16.car10 skywell.1ggvlp16.car8
//用来拼接websocket
var BASE_HOST = "172.24.124.130:19443"
var BASE_HOST = "192.168.60.218:8090"
// if (IS_DEBUG) "itg-dev.cu-sc.com:19443" else "itg-yz.cu-sc.com:19443"
// if (IS_DEBUG) "172.24.124.130:19443" else "itg-yz.cu-sc.com:19443"
// if (IS_DEBUG) "itg-yz.cu-sc.com:13443" else "itg-yz.cu-sc.com:19443"
//websocket地址 token=${HTTP_TOKEN}&
private var WSHOST = "wss://${BASE_HOST}/wsplus/socket?reType=freedo&"
private var WSHOST = "ws://${BASE_HOST}/ws/avp?"
// if (IS_DEBUG) "wss://${BASE_HOST}/wsplus/socket?token=121&reType=freedo&" else "wss://${BASE_HOST}/wsplus/socket?token=121&reType=freedo&"
......@@ -40,14 +40,14 @@ object MyContants {
var VEHICLEID = 27
/**网联车辆位姿 用于实车测试喽数据 &vehicleId=${VEHICLEID}***/
var WS_VEH_LOC = "${WSHOST}msgType=2&vehicleId=${VEHICLEID}"
var WS_VEH_LOC = "${WSHOST}type=1"
/***感知目标物 &intersectionCode=yz-15 停车场 不传就是整个园区***/
// var WS_FEEL_TARGET = "${WSHOST}msgType=1&intersectionCode=17 "
var WS_FEEL_TARGET = "${WSHOST}msgType=1&intersectionCode=yz-15"
var WS_FEEL_TARGET = "${WSHOST}type=2"
/***V2X预警 VEHICLEID 传了就是获取某一辆车的预警 &vehicleId=${VEHICLEID}"=***/
var WS_V2X = "${WSHOST}msgType=4&vehicleId=${VEHICLEID}"
var WS_V2X = "${WSHOST}type=3"
/***网联车辆状态 &VEHICLEID=''***/
var WS_VEH_STATU = "${WSHOST}msgType=6"
......
......@@ -91,7 +91,7 @@ class MainVm @Inject constructor(
// private var vehStatuWSClient = VehStatuWSClient(URI(MyContants.WS_VEH_STATU))
//socket 管理
private var sockets = listOf(feelTargetWSClient, v2xWSClient)
private var sockets = listOf(vecLocWSClient,feelTargetWSClient, v2xWSClient)
//交通信号灯
// private var trafficLightWSClient: TrafficLightWSClient? = null
......@@ -102,7 +102,7 @@ class MainVm @Inject constructor(
lateinit var mockVM: MockVM
//是否需要模拟
var isMock = true
var isMock = false
//车辆位姿数据
// var carVehicle = MutableLiveData<CarVehicle>()
......@@ -272,6 +272,44 @@ class MainVm @Inject constructor(
}
/**
* 联网车辆位姿数据
*/
fun getSelfCar() {
try {
vecLocWSClient.onWebSocketCb = object : OnWebSocketCb {
override fun onClose(
code: Int,
reason: String?,
remote: Boolean
) {
}
override fun onMsg(str: String) {
viewModelScope.launch {
if (str.isNotEmpty()) {
try {
mockVM.selfCar(str,carVehicle)
// var carBean = gson.fromJson(str, CarVehicle::class.java)
//更新主车位置
// carVehicle.postValue(carBean)
} catch (e: JsonSyntaxException) {
e.printStackTrace()
}
}
}
}
}
if (!vecLocWSClient.isOpen) {
vecLocWSClient.connect()
}
} catch (e: Exception) {
e.printStackTrace()
}
}
// mockVM.getSelfCar(carVehicle, targetPre, v2xStartBean)
//车辆位姿回调
private var carCb = object : SseCallback {
var url = ""
......@@ -323,7 +361,7 @@ class MainVm @Inject constructor(
mockVM.onSubTargetMock(targetPre)
} else {
try {
feelTargetWSClient!!.onWebSocketCb = object : OnWebSocketCb {
feelTargetWSClient.onWebSocketCb = object : OnWebSocketCb {
override fun onClose(
code: Int,
reason: String?,
......@@ -335,7 +373,7 @@ class MainVm @Inject constructor(
viewModelScope.launch {
//下载到sd卡下面的DownLoad文件夹下面
if (str.isNotEmpty()) {
FileSdCardUtils.writeFileToDownload(str, "PerTarget.txt")
// FileSdCardUtils.writeFileToDownload(str, "PerTarget.txt")
try {
var bean = gson.fromJson(str, PerceptionBean::class.java)
targetPre.postValue(bean)
......@@ -377,14 +415,14 @@ class MainVm @Inject constructor(
override fun onMsg(str: String) {
viewModelScope.launch {
if (str.isNotEmpty()) {
FileSdCardUtils.writeFileToDownload(str, "avp_v2x.txt")
}
// FileSdCardUtils.writeFileToDownload(str, "avp_v2x.txt")
try {
var bean = gson.fromJson(str, V2xStartBean::class.java)
v2xStartBean.postValue(bean)
} catch (e: JsonSyntaxException) {
e.printStackTrace()
}
}
}
}
......
......@@ -26,6 +26,7 @@ import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.PerceptionBean
import com.sd.cavphmi.bean.V2xStartBean
import com.sd.cavphmi.bean.VObject
import com.sd.cavphmi.bean.mock.CarVeh
import com.sd.cavphmi.bean.mock.MRoutes
import com.sd.cavphmi.bean.mock.ParkPath
import com.sd.cavphmi.highmap.AllLine
......@@ -71,6 +72,82 @@ class MockVM @Inject constructor(
}
}
//泊车首次只进来一次
private var isPark = false
//接受从自己服务器来的数据
suspend fun selfCar(str: String, carVehicle: MutableStateFlow<CarVehicle>) {
withContext(Dispatchers.Main) {
val random = Random
var cCar: CarVehicle? = null
val CarVeh = gson.fromJson(str, CarVeh::class.java)
if (CarVeh.status.equals("park")) {
var mRoutes = MRoutes(CarVeh.rs!!)//转换类型
if (!isPark) {
isPark = true
//画局部图小车
drawNavingCar(
Tools.latLngToPoint(
LatLng(
39.81014469509955,
116.50238005214746
)
)
)
//画局部图路径
smallLineMock(mRoutes)
//画终点
addEndMarker(LatLng(39.809039362307594, 116.50254394816011))
//用矩形框柱
drawEndArea(
39.81014469509955,
116.50238005214746,
39.809039362307594,
116.50254394816011,
)
//画出全局路径
var lines = CarVeh.rs!!.map {
AllLine(it[1], it[0])
}
HighMapApi.setCarNavPath(lines, showdistance = 200)
//开启流光效果
HighMapApi.parkRoundLight("B017")
//2旁车辆占用
var spinfos = listOf(Spinfo().apply {
code = "B016"
state = true
}, Spinfo().apply {
code = "B018"
state = true
})
HighMapApi.setParkStatu(ParkStatu(spinfos))
}
//变速
CarPanelBean.instance.speed.set(random.nextInt(10..15))
//模拟车辆移动
var rs=CarVeh.rs!!.get(CarVeh.carPos)
cCar = CarVehicle().apply {
this.vehiclePos = listOf(rs[0], rs[1], rs[2])
}
//更新主车位置
carVehicle.value = cCar
//更新小地图小车
showNavingCarPosition(
Tools.latLngToNdsPoint(
LatLng(
cCar.vehiclePos!!.get(1),
cCar.vehiclePos!!.get(0)
)
),
cCar.vehiclePos!!.get(2).toFloat()
)
//更新小地图路径
upSmallLine(CarVeh.carPos, mRoutes)
}
}
}
/******
* 模拟车辆位姿 泊车
* @param binding 里的航向角
......@@ -344,7 +421,7 @@ class MockVM @Inject constructor(
//开始跟车
HighMapApi.setCameraAngle(30f)
HighMapApi.setCameraDistance(8f)
} else if (index == 70) {
} else if (index == 70) {//盲区预警
var v2x = V2xStartBean().apply {
type = 4
objects =
......
......@@ -27,7 +27,7 @@ class FeelTargetWSClient : BaseWsClient {
var onWebSocketCb: OnWebSocketCb? = null
override fun onOpen(handshakedata: ServerHandshake?) {
println(TAG + "-------openg "+uri.toString())
println(TAG + "------- "+uri.toString())
// System.out.println(TAG + "new connection opened")
}
......
......@@ -37,7 +37,7 @@ class VecLocWSClient : BaseWsClient {
var onWebSocketCb: OnWebSocketCb? = null
override fun onOpen(handshakedata: ServerHandshake?) {
System.out.println(TAG + "网联车辆位姿 opened " + uri.toString())
System.out.println(TAG + " opened " + uri.toString())
}
override fun onMessage(message: String?) {
......
......@@ -32,6 +32,6 @@ dependencyResolutionManagement {
}
}
rootProject.name = "SuZhouAvp"
rootProject.name = "c-avp2.0"
include(":app")
include(":mycomutils")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment