Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
p x
SuZhouAvp
Commits
c8d1a739
Commit
c8d1a739
authored
Jun 26, 2025
by
p x
Browse files
添加模拟数据
parent
d0e4e0f9
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
app/src/main/assets/car_veh.txt
0 → 100644
View file @
c8d1a739
This diff is collapsed.
Click to expand it.
app/src/main/assets/find_line.txt
0 → 100644
View file @
c8d1a739
{"line":
[
[
125.14257946500526,
43.838850972613784
],
[
125.14257872221566,
43.838851880044864
],
[
125.14238925146908,
43.8390789628863
],
[
125.1422942052776,
43.83919422709003
],
[
125.14204438598463,
43.8394953926954
],
[
125.14204012353633,
43.8395037587309
],
[
125.1420358501836,
43.839515255594826
],
[
125.14203430199653,
43.8395271054114
],
[
125.14203552406234,
43.83953897162878
],
[
125.1420394806985,
43.83955051661564
],
[
125.14204605956249,
43.839561412377044
],
[
125.14205507445587,
43.83957134949696
],
[
125.14206626806443,
43.83958004428222
],
[
125.14208898306244,
43.839591740154475
],
[
125.14235228857866,
43.83970591790077
],
[
125.14263815163811,
43.83983049659493
],
[
125.14293580432056,
43.83996105058049
],
[
125.1429505493302,
43.839967448386304
],
[
125.14296601937112,
43.83997304064295
],
[
125.14298251087494,
43.83997680995209
],
[
125.14299961679251,
43.83997866100733
],
[
125.14301691822614,
43.839978549133136
],
[
125.14303398557422,
43.83997647756237
],
[
125.14305040214371,
43.839972497861645
],
[
125.14306576029794,
43.83996670640929
],
[
125.14307968389234,
43.83995924664393
],
[
125.14309182801652,
43.83995030187058
],
[
125.1431018950957,
43.83994009403707
],
[
125.14310676713771,
43.83993439900782
],
[
125.14348256549769,
43.83948208350916
],
[
125.14355540500749,
43.83939390759524
],
[
125.14366695852446,
43.839259322911346
],
[
125.14369885466584,
43.839220379823104
],
[
125.14374790800576,
43.83916099866528
],
[
125.14377619073592,
43.83912679395584
],
[
125.14380992016922,
43.83908584770111
],
[
125.14396334829817,
43.8388990917878
],
[
125.14398373598257,
43.83887404884853
],
[
125.14398537412318,
43.838871933614946
],
[
125.14398684606766,
43.83886975513546
],
[
125.14398814835043,
43.83886752067868
],
[
125.1439892749917,
43.83886523666397
],
[
125.14399022376688,
43.838862910334974
],
[
125.14399099124259,
43.838860549859525
],
[
125.14399157519419,
43.83885816248126
],
[
125.14399197339719,
43.83885575544384
],
[
125.14399218486795,
43.83885333596591
],
[
125.14399220862293,
43.838850911266164
],
[
125.14399204498397,
43.83884849033671
],
[
125.14399169544949,
43.83884608034627
],
[
125.14399115903593,
43.83884368851351
],
[
125.14399043848277,
43.83884132198219
],
[
125.14398953535283,
43.83883898971945
],
[
125.14398845356223,
43.83883669704562
],
[
125.14398719712364,
43.838834451978734
],
[
125.14398576756767,
43.83883226258668
],
[
125.14398417129249,
43.83883013413989
],
[
125.14398241231078,
43.83882807465632
],
[
125.14398049702066,
43.83882608940641
],
[
125.14397843188468,
43.83882418545896
],
[
125.14397622085113,
43.83882236903355
],
[
125.1439738740412,
43.83882064532569
],
[
125.143971396612,
43.838819019630726
],
[
125.14396879744382,
43.838817497169146
],
[
125.14396608417576,
43.83881608318641
],
[
125.14396326438265,
43.838814781129486
],
[
125.14394522002516,
43.83880702652331
],
[
125.14390819644473,
43.838790450860984
],
[
125.1439094857008,
43.838788893363365
],
[
125.14390021756205,
43.838784667801406
],
[
125.14389491479716,
43.83878311243691
],
[
125.14388932745982,
43.83878221159517
],
[
125.14388361170772,
43.83878199093022
],
[
125.14387792047647,
43.83878245546416
],
[
125.14387241229552,
43.838783593009396
],
[
125.14386723509038,
43.838785372694616
],
[
125.14386253362888,
43.83878774481509
],
[
125.14385843230747,
43.83879064567819
],
[
125.14385504749745,
43.838793995555214
],
[
125.14384228398526,
43.83880911708494
],
[
125.14383557824696,
43.83881722023156
],
[
125.1438279071096,
43.838824374547215
],
[
125.14381769259843,
43.83883087183167
],
[
125.14380618753825,
43.83883611457202
],
[
125.14379368275466,
43.838839970037114
],
[
125.14378049763141,
43.83884234001618
],
[
125.1437669629292,
43.83884316656373
],
[
125.14375342307474,
43.83884242655438
],
[
125.14374022152589,
43.83884013917613
],
[
125.14372769071466,
43.83883636253315
],
[
125.14371614829183,
43.838831192821466
],
[
125.14342925781992,
43.83870671502457
]
]
}
\ No newline at end of file
app/src/main/assets/大屏车辆泊车完整数据.txt
0 → 100644
View file @
c8d1a739
This diff is collapsed.
Click to expand it.
app/src/main/java/com/sd/cavphmi/bean/LinePlaningBean.kt
→
app/src/main/java/com/sd/cavphmi/bean/
All
LinePlaningBean.kt
View file @
c8d1a739
package
com.sd.cavphmi.bean
/**全局路径发生切换***/
data class
LinePlaningBean
(
data class
All
LinePlaningBean
(
val
objectData
:
List
<
LinePlaning
>,
val
wsTime
:
Long
)
...
...
app/src/main/java/com/sd/cavphmi/bean/VehicleStats.kt
View file @
c8d1a739
package
com.sd.cavphmi.bean
/***联网车辆状态数据
* {"vehicleStats":{"total":0,"avp":0},"vehicleStatusList":[],"wsTime":1750138623719}
* {"vehicleStats":{"total":1,"avp":1},"vehicleStatusList":[],"wsTime":1750301590009}
* **/
data class
VehicleStats
(
...
...
app/src/main/java/com/sd/cavphmi/bean/WebSetBean.kt
View file @
c8d1a739
package
com.sd.cavphmi.bean
object
WebSetBean
{
/* "/topic/vehicle"to "/topic/vehicle/1556919708184276993", */
//目前只有车辆和感知
var
subDic
=
mapOf
(
"/topic/vehicle"
to
"/avp/api/VL961/vehicle/1694264612474306561"
,
//车辆位姿数据
"/topic/dataMerge"
to
"/avp/api/VL961/dataMerge"
,
//感知目标物
...
...
@@ -17,19 +16,19 @@ object WebSetBean {
"/topic/rsiEvent"
to
"/avp/api/VL961/rsiEvent"
,
// rsi事件
"/topic/parkingLockStatusChange"
to
"/topic/parkingLockStatusChange"
,
// 地锁
)
//socket 回调
var
dic
=
mapOf
(
5231
to
"/topic/vehicle"
,
5232
to
"/topic/dataMerge"
,
5233
to
"topic/signa"
,
5234
to
"/topic/v2xStart"
,
5235
to
"/topic/v2xEnd"
,
5236
to
"/topic/vehicleStatus"
,
5237
to
"/topic/timeDelay"
,
1
to
"/topic/point"
,
52310
to
"/topic/linePlaning"
,
52311
to
"/topic/rsiEvent"
,
52312
to
"/topic/partLine"
,
"/topic/vehicle"
to
5231
,
"/topic/dataMerge"
to
5232
,
"topic/signa"
to
5233
,
"/topic/v2xStart"
to
5234
,
"/topic/v2xEnd"
to
5235
,
"/topic/vehicleStatus"
to
5236
,
"/topic/timeDelay"
to
5237
,
"/topic/point"
to
1
,
"/topic/linePlaning"
to
52310
,
"/topic/rsiEvent"
to
52311
,
"/topic/partLine"
to
52312
,
)
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
c8d1a739
...
...
@@ -9,9 +9,10 @@ import com.google.gson.Gson
import
com.google.gson.reflect.TypeToken
import
com.sd.cavphmi.base.MyBaseViewModel
import
com.sd.cavphmi.bean.CarVehicle
import
com.sd.cavphmi.bean.LinePlaningBean
import
com.sd.cavphmi.bean.
All
LinePlaningBean
import
com.sd.cavphmi.bean.OrderBean
import
com.sd.cavphmi.bean.ParkBean
import
com.sd.cavphmi.bean.ParkLinePlan
import
com.sd.cavphmi.bean.PartLineBean
import
com.sd.cavphmi.bean.PerTarget
import
com.sd.cavphmi.bean.ReqBean
...
...
@@ -35,7 +36,6 @@ import kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
org.java_websocket.handshake.ServerHandshake
import
protocol.Response
import
java.lang.reflect.Type
import
java.net.URI
import
java.util.Timer
import
java.util.TimerTask
...
...
@@ -68,6 +68,12 @@ class MainVm @Inject constructor(
//感知目标物
var
targetPre
=
MutableLiveData
<
PerTarget
>()
//全局路径
var
allLine
=
MutableLiveData
<
AllLinePlaningBean
>()
//局部路径
var
partLine
=
MutableLiveData
<
PartLineBean
>()
//停车位变更
var
parkBean
=
MutableLiveData
<
ParkBean
>()
...
...
@@ -164,6 +170,7 @@ class MainVm @Inject constructor(
var
avpStatus
=
result
.
data
.
avpStatus
// var plateNo = result.data.plateNo
// var plateNo = "吉AC242"
avpStatus
=
3
if
(
avpStatus
==
3
)
{
//泊车
startParkingVehicle
(
vehiclePlate
)
}
else
if
(
avpStatus
==
5
)
{
//招车
...
...
@@ -206,6 +213,14 @@ class MainVm @Inject constructor(
findPathPlanning
(
plateNo
)
}
/*** 开始招车,显示路径规划路径*/
private
fun
startRecruitmentVehicle
(
vehiclePlate
:
String
)
{
// worker不处理路径规划显示的路径
this
.
needDealPath
=
true
// 获取规划好的路径
findPathPlanning
(
vehiclePlate
,
false
)
}
/**
* 结束泊车
*/
...
...
@@ -230,18 +245,10 @@ class MainVm @Inject constructor(
// console.log('window.leftPath', window.leftPath)
}
/*** 开始招车,显示路径规划路径*/
private
fun
startRecruitmentVehicle
(
vehiclePlate
:
String
)
{
// worker不处理路径规划显示的路径
this
.
needDealPath
=
true
// 获取规划好的路径
findPathPlanning
(
vehiclePlate
,
false
)
}
/** 由招车转为其他状态,移除路径规划路线*/
private
fun
endRecruitmentVehicle
()
{
// worker中不处理路径规划显示的路径
this
.
needDealPath
=
false
;
this
.
needDealPath
=
false
//
// // 移除路面上的路线
// this.$refs.basisCesium.removePathPlanLine();
...
...
@@ -260,8 +267,13 @@ class MainVm @Inject constructor(
*/
fun
findPathPlanning
(
vehiclePlate
:
String
,
ifParking
:
Boolean
=
true
)
{
viewModelScope
.
launch
{
var
result
=
parseSocketRepo
.
getLinePlaning
(
vehiclePlate
)
FileIoUtils
.
writeToFile
(
gson
.
toJson
(
result
),
"http_path.txt"
)
val
result
:
MyResult
<
ParkLinePlan
>
if
(
isMock
)
{
result
=
mockVM
.
getLinePlaningMock
(
vehiclePlate
)
}
else
{
result
=
parseSocketRepo
.
getLinePlaning
(
vehiclePlate
)
FileIoUtils
.
writeToFile
(
gson
.
toJson
(
result
),
"http_path.txt"
)
}
when
(
result
)
{
is
MyResult
.
Success
->
{
var
lins
=
result
.
data
.
line
...
...
@@ -278,7 +290,7 @@ class MainVm @Inject constructor(
}
else
->
{
println
(
"-----获取路径规划 = ${result}"
)
println
(
"-----获取路径规划
失败
= ${result}"
)
}
}
}
...
...
@@ -446,10 +458,8 @@ class MainVm @Inject constructor(
viewModelScope
.
launch
{
println
(
"-----全局路径发生切换 = ${res.data}"
)
FileIoUtils
.
writeToFile
(
res
.
data
,
"all_line.txt"
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
res
.
data
,
LinePlaningBean
::
class
.
java
)
// parkBean.value = bean
// FileIoUtils.writeToFile(gson.toJson(bean), "line_plan.txt")
val
bean
=
parseSocketRepo
.
parseDataBean
(
res
.
data
,
AllLinePlaningBean
::
class
.
java
)
allLine
.
value
=
bean
}
}
...
...
@@ -458,19 +468,17 @@ class MainVm @Inject constructor(
println
(
"-----局部路径 = ${res.data}"
)
FileIoUtils
.
writeToFile
(
res
.
data
,
"part_line.txt"
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
res
.
data
,
PartLineBean
::
class
.
java
)
// parkBean.value = bean
// FileIoUtils.writeToFile(gson.toJson(bean), "part_line.txt")
partLine
.
value
=
bean
}
}
override
fun
onRsiEvent
(
res
:
Response
.
SocketResponse
)
{
viewModelScope
.
launch
{
println
(
"-----rsi事件 = ${res.data}"
)
FileIoUtils
.
writeToFile
(
res
.
data
,
"rsi_event.txt"
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
res
.
data
,
RsiEventBean
::
class
.
java
)
// parkBean.value = bean
// FileIoUtils.writeToFile(gson.toJson(bean), "rsi_event.txt")
FileIoUtils
.
writeToFile
(
res
.
data
,
"rsi_event.txt"
)
}
}
}
...
...
@@ -486,9 +494,8 @@ class MainVm @Inject constructor(
return
carVehicle
}
/** 联网车辆状态数据
*
* {"vehicleStats":{"total":0,"avp":0},"vehicleStatusList":[],"wsTime":1750138623719}
/**
* 联网车辆状态数据
* */
fun
subVehicleStatus
():
LiveData
<
VehicleStats
>
{
val
reqStr
=
getSendData
(
"/topic/vehicleStatus"
)
...
...
@@ -499,13 +506,17 @@ class MainVm @Inject constructor(
/**感知目标物数据
* {"objectData":[{"altitude":0.0,"deviceCode":"ALL","id":"rsm","latitude":0.0,"longitude":0.0,"participant":[],"reportTime":1750138879684}],"wsTime":1750138834204}
* **/
fun
subTarget
()
{
val
reqStr
=
getSendData
(
"/topic/dataMerge"
)
client
?.
send
(
reqStr
)
fun
subTarget
():
LiveData
<
PerTarget
>
{
if
(
isMock
)
{
mockVM
.
onSubTargetMock
(
targetPre
)
}
else
{
client
?.
send
(
getSendData
(
"/topic/dataMerge"
))
}
return
targetPre
}
/**
V2X预警开始
*
/**
*
V2X预警开始
* **/
fun
subStartV2x
()
{
val
reqStr
=
getSendData
(
"/topic/v2xStart"
)
...
...
@@ -520,21 +531,34 @@ class MainVm @Inject constructor(
/*** 更新停车位**/
fun
subPoints
():
LiveData
<
ParkBean
>
{
val
reqStr
=
getSendData
(
"/topic/points"
)
client
?.
send
(
reqStr
)
if
(
isMock
)
{
mockVM
.
onPointsMock
(
parkBean
)
}
else
{
client
?.
send
(
getSendData
(
"/topic/points"
))
}
return
parkBean
}
/*** 全局路径发生切换**/
fun
subLinePlaning
()
{
val
reqStr
=
getSendData
(
"/topic/linePlaning"
)
client
?.
send
(
reqStr
)
fun
subLinePlaning
():
LiveData
<
AllLinePlaningBean
>
{
if
(
isMock
)
{
mockVM
.
onSubLinePlaningMock
(
allLine
)
}
else
{
val
reqStr
=
getSendData
(
"/topic/linePlaning"
)
client
?.
send
(
reqStr
)
}
return
allLine
}
/*** 局部路径**/
fun
subPartLine
()
{
val
reqStr
=
getSendData
(
"/topic/partLine"
)
client
?.
send
(
reqStr
)
fun
subPartLine
():
LiveData
<
PartLineBean
>
{
if
(
isMock
)
{
mockVM
.
onSubPartLineMock
(
partLine
)
}
else
{
val
reqStr
=
getSendData
(
"/topic/partLine"
)
client
?.
send
(
reqStr
)
}
return
partLine
}
/*** rsi事件**/
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MockVM.kt
View file @
c8d1a739
...
...
@@ -2,19 +2,28 @@ package com.sd.cavphmi.viewmodels
import
android.content.Context
import
androidx.databinding.ObservableField
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.viewModelScope
import
com.google.gson.Gson
import
com.sd.cavphmi.base.MyBaseViewModel
import
com.sd.cavphmi.bean.CarVehicle
import
com.sd.cavphmi.bean.OrderBean
import
com.sd.cavphmi.bean.AllLinePlaningBean
import
com.sd.cavphmi.bean.ParkBean
import
com.sd.cavphmi.bean.ParkLinePlan
import
com.sd.cavphmi.bean.PartLineBean
import
com.sd.cavphmi.bean.PerTarget
import
com.sd.cavphmi.net.MyResult
import
com.sd.cavphmi.net.RequestBodyUtil
import
com.sd.cavphmi.repositorys.ParseSocketRepo
import
com.sd.cavphmi.utils.FileIoUtils
import
com.sd.cavphmi.utils.MyContants
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.qualifiers.ApplicationContext
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
retrofit2.HttpException
import
javax.inject.Inject
@HiltViewModel
...
...
@@ -23,15 +32,17 @@ class MockVM @Inject constructor(
private
var
parseSocketRepo
:
ParseSocketRepo
)
:
MyBaseViewModel
()
{
private
var
gson
=
Gson
()
//模拟车辆位姿
fun
onVehicleMock
(
carVehicle
:
MutableLiveData
<
CarVehicle
>,
heading
:
ObservableField
<
Int
>,
speed
:
ObservableField
<
Float
>
)
{
viewModelScope
.
launch
{
va
r
dst
=
mutableListOf
<
String
>()
FileIoUtils
.
getAssetMock
(
context
,
"mock/
c
ar
v
ehicle.txt"
,
dst
)
va
l
dst
=
mutableListOf
<
String
>()
FileIoUtils
.
getAssetMock
(
context
,
"mock/
C
ar
V
ehicle.txt"
,
dst
)
dst
.
forEach
{
str
->
delay
(
1000
)
val
bean
=
...
...
@@ -44,5 +55,67 @@ class MockVM @Inject constructor(
}
}
//模拟Http获取全局路径
suspend
fun
getLinePlaningMock
(
vehiclePlate
:
String
):
MyResult
<
ParkLinePlan
>
{
return
withContext
(
Dispatchers
.
IO
)
{
val
str
=
FileIoUtils
.
getAssetContent
(
context
,
"find_line.txt"
)
val
bean
=
gson
.
fromJson
(
str
,
ParkLinePlan
::
class
.
java
)
return
@withContext
MyResult
.
Success
(
bean
)
}
}
//感知目标物
fun
onSubTargetMock
(
targetPre
:
MutableLiveData
<
PerTarget
>)
{
viewModelScope
.
launch
{
val
parts
=
mutableListOf
<
String
>()
FileIoUtils
.
getAssetMock
(
context
,
"mock/PerTarget.txt"
,
parts
)
parts
.
forEach
{
str
->
delay
(
1000
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
str
,
PerTarget
::
class
.
java
)
println
(
"------模拟感知目标物数据 = ${bean}"
)
targetPre
.
value
=
bean
}
}
}
//全局路径发生切换
fun
onSubLinePlaningMock
(
allLine
:
MutableLiveData
<
AllLinePlaningBean
>)
{
viewModelScope
.
launch
{
val
alls
=
mutableListOf
<
String
>()
FileIoUtils
.
getAssetMock
(
context
,
"mock/all_line.txt"
,
alls
)
alls
.
forEach
{
str
->
delay
(
1000
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
str
,
AllLinePlaningBean
::
class
.
java
)
allLine
.
value
=
bean
}
}
}
//局部路径
fun
onSubPartLineMock
(
allLine
:
MutableLiveData
<
PartLineBean
>)
{
viewModelScope
.
launch
{
val
lines
=
mutableListOf
<
String
>()
lines
.
forEach
{
str
->
delay
(
1000
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
str
,
PartLineBean
::
class
.
java
)
allLine
.
value
=
bean
}
}
}
//更新停车位
fun
onPointsMock
(
parkBean
:
MutableLiveData
<
ParkBean
>)
{
viewModelScope
.
launch
{
val
points
=
mutableListOf
<
String
>()
FileIoUtils
.
getAssetMock
(
context
,
"mock/change_park.txt"
,
points
)
points
.
forEach
{
str
->
delay
(
1000
)
var
bean
=
parseSocketRepo
.
parseDataBean
(
str
,
ParkBean
::
class
.
java
)
println
(
"------模拟停车位变更 = ${bean}"
)
parkBean
.
value
=
bean
}
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment