Commit d0e4e0f9 authored by p x's avatar p x
Browse files

增加文档

parent a3f2ec3b
...@@ -39,4 +39,15 @@ var dic = mapOf( ...@@ -39,4 +39,15 @@ var dic = mapOf(
## 获取订单信息 getOrderData 后只有当avpStatus=3或5的时候需要路径规划 ## 获取订单信息 getOrderData 后只有当avpStatus=3或5的时候需要路径规划
## 地锁
有四个状态 down(0, "已落下"),
up(1, "已升起"),
downing(2, "落下中"),
upping(3, "升起中"),
地锁状态变化时,会通过 /topic/parkingLockStatusChange 把状态发
## 问题
全局没有是因为路径没有发生切换
局部没有是因为路上没有障碍物,没有推送避障路线
syntax = "proto3";
package com.cusc.data.clean.module;
option java_multiple_files = true;
option java_outer_classname = "Point";
message PointCloud {
repeated Result results = 1;
}
message Result {
double x = 1;
double y = 2;
double z = 3;
double angle = 4;
}
This diff is collapsed.
import protoRoot from "@/utils/ws/base";
/**
* 解码通用的protobuf数据
* 推送格式映射在response.proto里的,使用此方法 !
* SocketResponse对应解码文件base.js里面的SocketResponse
*/
export async function decodeResponseProtoBuf(msg) {
const SocketResponse = protoRoot.lookup("SocketResponse");
let blob = msg.data;
let arrybuff = await blob.arrayBuffer();
let uinit8 = new Uint8Array(arrybuff);
const result = SocketResponse.decode(uinit8);
return result;
}
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
{"callOrBackPoint":"125.1424934543.83896992","centrePoint":"125.14337396,43.83873198","extendPoint":"125.14333880,43.83866747","parkingSpace":"1D-001"}
This diff is collapsed.
This diff is collapsed.
syntax = "proto3";
option java_package = "com.cusc.imserver.protocol";
message SocketResponse {
int32 code = 1;
string msg = 2;
int32 msgType = 3; //
string data = 4;
}
export default {
webSocket: {
// url: "ws://127.0.0.1:1884",
// url: "wss://10.166.5.5:10443/socket/ws?clientSource=100",
url: "wss://faw.cuscavp.cn:8443/socket/ws?clientSource=100",
// url: "wss://itg-test.cu-sc.com:13443/WS/socket?clientSource=100",
/* dic: {
// "/topic/vehicle": "/topic/vehicle/1556919708184276993",
"/topic/vehicle": "/topic/vehicle",
"/topic/dataMerge": "/topic/dataMerge",
"/topic/signal": "/topic/signal",
"/topic/v2xStart": "/topic/v2xStart",
"/topic/v2xEnd": "/topic/v2xEnd",
"/topic/vehicleStatus": "/topic/vehicleStatus",
"/topic/timeDelay": "/topic/timeDelay",
}, */
dic: {
/* "/topic/vehicle": "/topic/vehicle/1556919708184276993", */
"/topic/vehicle": "/avp/api/VL961/vehicle/1694264612474306561",
"/topic/dataMerge": "/avp/api/VL961/dataMerge",
// "/topic/dataMerge": "/zhixing/v2/PM270/topic/dataMerge",
"/topic/signal": "/avp/api/VL961/signal",
"/topic/v2xStart": "/avp/api/VL961/v2xStart",
"/topic/v2xEnd": "/avp/api/VL961/v2xEnd",
"/topic/vehicleStatus": "/avp/api/VL961/vehicleStatus",
"/topic/timeDelay": "/avp/api/VL961/timeDelay",
"/topic/points": "/avp/api/VL961/points",
"/topic/linePlaning": "/avp/api/VL961/linePlaning",
"/topic/partLine": "/avp/api/VL961/partLine",
"/topic/rsiEvent": "/avp/api/VL961/rsiEvent",
},
},
cesiumSetting: {
defaultAccessToken:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiMTgwZWJjMy1iNGVlLTRjYjctOWRlMy0xYmI3NzJmZDA3YzciLCJpZCI6MTAxNTkxLCJpYXQiOjE2NTgxNDAzMzB9.feULjgKOMAUASE9RnhPNkWhg2dvS9NCGupOeJF55I5M",
},
};
package com.sd.cavphmi.bean package com.sd.cavphmi.bean
/**开始泊车,获取路径规划 /**开始泊车,获取路径规划
* {"vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242","taskId":"1935514619273338882","linkingLine":"118_0.00_-1","line":[[125.14350411033233,43.83873919249159],[125.14340202112747,43.83869489740147]],"spaceCode":null} * {"vehiclePlate":"吉AC242"}
* {"data":{"line":[[125.14359435375829,43.83877834786253],[125.14342925781992,43.83870671502458]],"linkingLine":"118_0.00_-1","spaceCode":"1D-004","taskId":"1937759817639038977","vehicleId":"1700381241280815105","vehicleInfoId":"1694264612474306561","vehiclePlate":"吉AC242"}}
* **/ * **/
data class ParkLinePlan( data class ParkLinePlan(
val line: List<List<Double>>, val line: List<List<Double>>,
......
...@@ -15,6 +15,7 @@ object WebSetBean { ...@@ -15,6 +15,7 @@ object WebSetBean {
"/topic/linePlaning" to "/avp/api/VL961/linePlaning",//全局路径发生切换 "/topic/linePlaning" to "/avp/api/VL961/linePlaning",//全局路径发生切换
"/topic/partLine" to "/avp/api/VL961/partLine",// // 局部路径 "/topic/partLine" to "/avp/api/VL961/partLine",// // 局部路径
"/topic/rsiEvent" to "/avp/api/VL961/rsiEvent",// rsi事件 "/topic/rsiEvent" to "/avp/api/VL961/rsiEvent",// rsi事件
"/topic/parkingLockStatusChange" to "/topic/parkingLockStatusChange",// 地锁
) )
var dic = mapOf( var dic = mapOf(
......
...@@ -72,7 +72,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainVm>() { ...@@ -72,7 +72,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainVm>() {
private fun mockBt() { private fun mockBt() {
binding.btVehicle.setOnClickListener { binding.btVehicle.setOnClickListener {
viewModel.subVehicle(true).observe(this) { viewModel.subVehicle().observe(this) {
topicVehicle(it) topicVehicle(it)
} }
} }
......
...@@ -42,7 +42,7 @@ object FileIoUtils { ...@@ -42,7 +42,7 @@ object FileIoUtils {
e.printStackTrace() e.printStackTrace()
} finally { } finally {
bf?.close() bf?.close()
assetManager.close() // assetManager.close()
} }
return@withContext "" return@withContext ""
} }
......
...@@ -56,6 +56,9 @@ class MainVm @Inject constructor( ...@@ -56,6 +56,9 @@ class MainVm @Inject constructor(
//模拟操作 //模拟操作
lateinit var mockVM: MockVM lateinit var mockVM: MockVM
//是否需要模拟
var isMock = false
//车辆位姿数据 //车辆位姿数据
var carVehicle = MutableLiveData<CarVehicle>() var carVehicle = MutableLiveData<CarVehicle>()
...@@ -156,13 +159,15 @@ class MainVm @Inject constructor( ...@@ -156,13 +159,15 @@ class MainVm @Inject constructor(
when (result) { when (result) {
is MyResult.Success<OrderBean> -> { is MyResult.Success<OrderBean> -> {
println("-------订单信息---- = ${result.data}") println("-------订单信息---- = ${result.data}")
FileIoUtils.writeToFile(gson.toJson(result.data), "order.txt")
orderBean.value = result.data orderBean.value = result.data
var avpStatus = result.data.avpStatus var avpStatus = result.data.avpStatus
// var plateNo = result.data.plateNo // var plateNo = result.data.plateNo
// var plateNo = "吉AC242"
if (avpStatus == 3) {//泊车 if (avpStatus == 3) {//泊车
startParkingVehicle("吉AC242") startParkingVehicle(vehiclePlate)
} else if (avpStatus == 5) {//招车 } else if (avpStatus == 5) {//招车
startRecruitmentVehicle("吉AC242") startRecruitmentVehicle(vehiclePlate)
} else { } else {
endParkingVehicle() // 结束泊车 endParkingVehicle() // 结束泊车
endRecruitmentVehicle()//// 由招车转为其他状态 endRecruitmentVehicle()//// 由招车转为其他状态
...@@ -229,24 +234,8 @@ class MainVm @Inject constructor( ...@@ -229,24 +234,8 @@ class MainVm @Inject constructor(
private fun startRecruitmentVehicle(vehiclePlate: String) { private fun startRecruitmentVehicle(vehiclePlate: String) {
// worker不处理路径规划显示的路径 // worker不处理路径规划显示的路径
this.needDealPath = true this.needDealPath = true
// 获取规划好的路径 // 获取规划好的路径
findPathPlanning(vehiclePlate, false) findPathPlanning(vehiclePlate, false)
// 开始招车的时候就开始记录了
// window.needRecord = true;
// window.recordData = {
// vehicle: [],
// vehicleStatus: [],
// dataMerge: [],
// v2xStart: [],
// v2xEnd: [],
// points: [],
// linePlaning: [],
// linePlaningHttp: [],
// partLine: [],
// rsiEvent: [],
// }
} }
/** 由招车转为其他状态,移除路径规划路线*/ /** 由招车转为其他状态,移除路径规划路线*/
...@@ -272,6 +261,7 @@ class MainVm @Inject constructor( ...@@ -272,6 +261,7 @@ class MainVm @Inject constructor(
fun findPathPlanning(vehiclePlate: String, ifParking: Boolean = true) { fun findPathPlanning(vehiclePlate: String, ifParking: Boolean = true) {
viewModelScope.launch { viewModelScope.launch {
var result = parseSocketRepo.getLinePlaning(vehiclePlate) var result = parseSocketRepo.getLinePlaning(vehiclePlate)
FileIoUtils.writeToFile(gson.toJson(result), "http_path.txt")
when (result) { when (result) {
is MyResult.Success -> { is MyResult.Success -> {
var lins = result.data.line var lins = result.data.line
...@@ -390,6 +380,7 @@ class MainVm @Inject constructor( ...@@ -390,6 +380,7 @@ class MainVm @Inject constructor(
private var onDataCb = object : MyWebSocketClient.OnDataCb { private var onDataCb = object : MyWebSocketClient.OnDataCb {
override fun onVehicle(res: Response.SocketResponse) { override fun onVehicle(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
FileIoUtils.writeToFile(res.data, "CarVehicle.txt")
val bean = val bean =
parseSocketRepo.parseDataBean(res.data, CarVehicle::class.java) parseSocketRepo.parseDataBean(res.data, CarVehicle::class.java)
println("------车辆位姿数据 = ${res.data}") println("------车辆位姿数据 = ${res.data}")
...@@ -397,12 +388,12 @@ class MainVm @Inject constructor( ...@@ -397,12 +388,12 @@ class MainVm @Inject constructor(
heading.set(bean.vehicleData.get(0).heading.toInt()) heading.set(bean.vehicleData.get(0).heading.toInt())
speed.set(bean.vehicleData.get(0).speed) speed.set(bean.vehicleData.get(0).speed)
} }
// FileIoUtils.writeToFile(res.data, "carvehicle.txt")
} }
} }
override fun onVehicleStats(res: Response.SocketResponse) { override fun onVehicleStats(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
FileIoUtils.writeToFile(res.data, "vehicleS.txt")
val bean = val bean =
parseSocketRepo.parseDataBean(res.data, VehicleStats::class.java) parseSocketRepo.parseDataBean(res.data, VehicleStats::class.java)
println("------联网车辆状态数据 = ${res.data}") println("------联网车辆状态数据 = ${res.data}")
...@@ -416,16 +407,15 @@ class MainVm @Inject constructor( ...@@ -416,16 +407,15 @@ class MainVm @Inject constructor(
driveMode.set(str) driveMode.set(str)
} }
vehicleStat.value = bean vehicleStat.value = bean
FileIoUtils.writeToFile(res.data, "vehicleS.txt")
} }
} }
override fun onTarget(res: Response.SocketResponse) { override fun onTarget(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
FileIoUtils.writeToFile(res.data, "PerTarget.txt")
var bean = parseSocketRepo.parseDataBean(res.data, PerTarget::class.java) var bean = parseSocketRepo.parseDataBean(res.data, PerTarget::class.java)
println("-----感知目标物数据 = ${bean}") println("-----感知目标物数据 = ${bean}")
targetPre.value = bean targetPre.value = bean
// FileIoUtils.writeToFile(res.data, "target.txt")
} }
} }
...@@ -439,25 +429,26 @@ class MainVm @Inject constructor( ...@@ -439,25 +429,26 @@ class MainVm @Inject constructor(
override fun onEndV2x(res: Response.SocketResponse) { override fun onEndV2x(res: Response.SocketResponse) {
println("--------V2X预警结束--${res.data}") println("--------V2X预警结束--${res.data}")
viewModelScope.launch { viewModelScope.launch {
FileIoUtils.writeToFile(res.data, "onEndV2x.txt")
} }
} }
override fun onPoint(res: Response.SocketResponse) { override fun onPoint(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
println("-----停车位变更 = ${res.data}") println("-----停车位变更 = ${res.data}")
FileIoUtils.writeToFile(res.data, "change_park.txt")
var bean = parseSocketRepo.parseDataBean(res.data, ParkBean::class.java) var bean = parseSocketRepo.parseDataBean(res.data, ParkBean::class.java)
parkBean.value = bean parkBean.value = bean
FileIoUtils.writeToFile(res.data, "park.txt")
} }
} }
override fun onLinePlaning(res: Response.SocketResponse) { override fun onLinePlaning(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
println("-----全局路径发生切换 = ${res.data}") println("-----全局路径发生切换 = ${res.data}")
FileIoUtils.writeToFile(res.data, "all_line.txt")
var bean = parseSocketRepo.parseDataBean(res.data, LinePlaningBean::class.java) var bean = parseSocketRepo.parseDataBean(res.data, LinePlaningBean::class.java)
// parkBean.value = bean // parkBean.value = bean
FileIoUtils.writeToFile(res.data, "line_plan.txt")
// FileIoUtils.writeToFile(gson.toJson(bean), "line_plan.txt") // FileIoUtils.writeToFile(gson.toJson(bean), "line_plan.txt")
} }
} }
...@@ -465,9 +456,9 @@ class MainVm @Inject constructor( ...@@ -465,9 +456,9 @@ class MainVm @Inject constructor(
override fun onPartLine(res: Response.SocketResponse) { override fun onPartLine(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
println("-----局部路径 = ${res.data}") println("-----局部路径 = ${res.data}")
FileIoUtils.writeToFile(res.data, "part_line.txt")
var bean = parseSocketRepo.parseDataBean(res.data, PartLineBean::class.java) var bean = parseSocketRepo.parseDataBean(res.data, PartLineBean::class.java)
// parkBean.value = bean // parkBean.value = bean
FileIoUtils.writeToFile(res.data, "part_line.txt")
// FileIoUtils.writeToFile(gson.toJson(bean), "part_line.txt") // FileIoUtils.writeToFile(gson.toJson(bean), "part_line.txt")
} }
} }
...@@ -486,8 +477,8 @@ class MainVm @Inject constructor( ...@@ -486,8 +477,8 @@ class MainVm @Inject constructor(
/*** 联网车辆位姿数据**/ /*** 联网车辆位姿数据**/
fun subVehicle(mock: Boolean = false): LiveData<CarVehicle> { fun subVehicle(): LiveData<CarVehicle> {
if (mock) { if (isMock) {
mockVM.onVehicleMock(carVehicle, heading, speed) mockVM.onVehicleMock(carVehicle, heading, speed)
} else { } else {
client?.send(getSendData("/topic/vehicle")) client?.send(getSendData("/topic/vehicle"))
...@@ -552,8 +543,8 @@ class MainVm @Inject constructor( ...@@ -552,8 +543,8 @@ class MainVm @Inject constructor(
client?.send(reqStr) client?.send(reqStr)
} }
/**构建发送体**/
fun getSendData(key: String): String { private fun getSendData(key: String): String {
var data = WebSetBean.subDic.get(key) var data = WebSetBean.subDic.get(key)
var req = ReqBean() var req = ReqBean()
req.data = data!! req.data = data!!
......
...@@ -33,7 +33,7 @@ class MockVM @Inject constructor( ...@@ -33,7 +33,7 @@ class MockVM @Inject constructor(
var dst = mutableListOf<String>() var dst = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/carvehicle.txt", dst) FileIoUtils.getAssetMock(context, "mock/carvehicle.txt", dst)
dst.forEach { str -> dst.forEach { str ->
delay(3000) delay(1000)
val bean = val bean =
parseSocketRepo.parseDataBean(str, CarVehicle::class.java) parseSocketRepo.parseDataBean(str, CarVehicle::class.java)
println("------模拟车辆位姿数据 = ${bean}") println("------模拟车辆位姿数据 = ${bean}")
......
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