Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
new-socketemulator
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李远洪
new-socketemulator
Commits
f6a8a2c6
Commit
f6a8a2c6
authored
May 18, 2020
by
liyuanhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
M500完成了终端插入拔出报警图形功能,以及模拟器完成了终端插入报警;同时增加了模拟器GPs有效性设置功能
parent
84c7ef62
Changes
35
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
2267 additions
and
31 deletions
+2267
-31
data/m300Tools/GPSLines/10_gpsLine4.txt
data/m300Tools/GPSLines/10_gpsLine4.txt
+1
-0
data/m300Tools/GPSLines/10_gpsLine5.txt
data/m300Tools/GPSLines/10_gpsLine5.txt
+1
-0
data/m300Tools/GPSLines/1_sample.json
data/m300Tools/GPSLines/1_sample.json
+841
-0
data/m300Tools/GPSLines/2_大坪到南滨路钟楼.json
data/m300Tools/GPSLines/2_大坪到南滨路钟楼.json
+2
-0
data/m300Tools/GPSLines/4_测试轨迹.json
data/m300Tools/GPSLines/4_测试轨迹.json
+2
-0
data/m300Tools/GPSLines/5_先涛的车轨迹.txt
data/m300Tools/GPSLines/5_先涛的车轨迹.txt
+2
-0
data/m300Tools/GPSLines/6_先涛的车轨迹(短).txt
data/m300Tools/GPSLines/6_先涛的车轨迹(短).txt
+2
-0
data/m300Tools/GPSLines/7_gpsLine1.txt
data/m300Tools/GPSLines/7_gpsLine1.txt
+1
-0
data/m300Tools/GPSLines/8_gpsLine2.txt
data/m300Tools/GPSLines/8_gpsLine2.txt
+1
-0
data/m300Tools/GPSLines/9_gpsLine3.txt
data/m300Tools/GPSLines/9_gpsLine3.txt
+1
-0
data/protocolTools/carData/M202003060520.json
data/protocolTools/carData/M202003060520.json
+1
-1
lib/protocol/m300/Alarm_protocol_m300.py
lib/protocol/m300/Alarm_protocol_m300.py
+60
-0
lib/protocol/m300/GPS_protocol_m300.py
lib/protocol/m300/GPS_protocol_m300.py
+12
-0
lib/protocol/m300/OBDCAN_protocol_m300.py
lib/protocol/m300/OBDCAN_protocol_m300.py
+22
-0
lib/protocol/m300/data/AlarmEventData.py
lib/protocol/m300/data/AlarmEventData.py
+35
-0
lib/protocol/m300/data/__init__.py
lib/protocol/m300/data/__init__.py
+0
-0
lib/protocol/report/EventReport_protocol.py
lib/protocol/report/EventReport_protocol.py
+8
-0
lib/protocol/report/GPSReport_protocol.py
lib/protocol/report/GPSReport_protocol.py
+14
-8
lib/socket/protocolTest_M500.py
lib/socket/protocolTest_M500.py
+2
-2
lib/socket/service/M300SimulaterDataService.py
lib/socket/service/M300SimulaterDataService.py
+196
-0
lib/socket/service/M300SimulaterService.py
lib/socket/service/M300SimulaterService.py
+578
-0
lib/socket/service/MessageSimulaterDataService.py
lib/socket/service/MessageSimulaterDataService.py
+1
-1
lib/socket/service/ProtocolSimulaterService.py
lib/socket/service/ProtocolSimulaterService.py
+13
-2
static/js/m300Tools/m300.js
static/js/m300Tools/m300.js
+2
-0
templates/m300Tools/report/P_CAN_m300_page.html
templates/m300Tools/report/P_CAN_m300_page.html
+1
-1
templates/m300Tools/report/P_GPS_m300_page.html
templates/m300Tools/report/P_GPS_m300_page.html
+1
-1
templates/m300Tools/report/P_alarm_m300_page.html
templates/m300Tools/report/P_alarm_m300_page.html
+320
-0
templates/m300Tools/report/P_heartBeat_m300_page.html
templates/m300Tools/report/P_heartBeat_m300_page.html
+1
-0
templates/m300Tools/report/P_login_m300_page.html
templates/m300Tools/report/P_login_m300_page.html
+1
-1
templates/m300Tools/report/P_version_m300_page.html
templates/m300Tools/report/P_version_m300_page.html
+1
-1
templates/protocolTools/report/GPS_protocol_page.html
templates/protocolTools/report/GPS_protocol_page.html
+9
-9
templates/protocolTools/report/M_carSimulater_page.html
templates/protocolTools/report/M_carSimulater_page.html
+32
-2
templates/protocolTools/report/event_protocol_page.html
templates/protocolTools/report/event_protocol_page.html
+20
-2
views/m300Tools/P_m300Protocol_view.py
views/m300Tools/P_m300Protocol_view.py
+14
-0
views/protocolTools/M_carSimulater_process.py
views/protocolTools/M_carSimulater_process.py
+69
-0
No files found.
data/m300Tools/GPSLines/10_gpsLine4.txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.484708", "lat": "29.541383\n"}, {"lng": "106.484708", "lat": "29.541383\n"}, {"lng": "106.48525", "lat": "29.54261\n"}, {"lng": "106.485416", "lat": "29.542851\n"}, {"lng": "106.485576", "lat": "29.543066\n"}, {"lng": "106.485718", "lat": "29.543145\n"}, {"lng": "106.486151", "lat": "29.543361\n"}, {"lng": "106.486681", "lat": "29.543641\n"}, {"lng": "106.487396", "lat": "29.5442\n"}, {"lng": "106.489105", "lat": "29.54584\n"}, {"lng": "106.489171", "lat": "29.54596\n"}, {"lng": "106.48921", "lat": "29.546175\n"}, {"lng": "106.489215", "lat": "29.546413\n"}, {"lng": "106.489138", "lat": "29.546638\n"}, {"lng": "106.48901", "lat": "29.546963\n"}, {"lng": "106.488645", "lat": "29.548548\n"}, {"lng": "106.488666", "lat": "29.548698\n"}, {"lng": "106.488726", "lat": "29.548755\n"}, {"lng": "106.48877", "lat": "29.548778\n"}, {"lng": "106.48883", "lat": "29.54879\n"}, {"lng": "106.488978", "lat": "29.548846\n"}, {"lng": "106.48901", "lat": "29.54884\n"}, {"lng": "106.489726", "lat": "29.548905\n"}, {"lng": "106.48973", "lat": "29.548903\n"}, {"lng": "106.489768", "lat": "29.54894\n"}, {"lng": "106.489768", "lat": "29.54894\n"}, {"lng": "106.489768", "lat": "29.54894\n"}, {"lng": "106.49035", "lat": "29.549128\n"}, {"lng": "106.49035", "lat": "29.549115\n"}, {"lng": "106.490346", "lat": "29.549095\n"}, {"lng": "106.490343", "lat": "29.549085\n"}, {"lng": "106.490343", "lat": "29.549085\n"}, {"lng": "106.490343", "lat": "29.549085\n"}, {"lng": "106.490343", "lat": "29.549085\n"}, {"lng": "106.49037", "lat": "29.549171\n"}, {"lng": "106.490538", "lat": "29.549168\n"}, {"lng": "106.490695", "lat": "29.549196\n"}, {"lng": "106.491661", "lat": "29.549308\n"}, {"lng": "106.491828", "lat": "29.549321\n"}, {"lng": "106.492118", "lat": "29.549441\n"}, {"lng": "106.492333", "lat": "29.549435\n"}, {"lng": "106.492373", "lat": "29.549403\n"}, {"lng": "106.492396", "lat": "29.549403\n"}, {"lng": "106.492396", "lat": "29.549403\n"}, {"lng": "106.492396", "lat": "29.549403\n"}, {"lng": "106.492396", "lat": "29.549403\n"}, {"lng": "106.492846", "lat": "29.549358\n"}, {"lng": "106.492846", "lat": "29.549358\n"}]}
\ No newline at end of file
data/m300Tools/GPSLines/10_gpsLine5.txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.489936", "lat": "29.571413\n"}, {"lng": "106.489936", "lat": "29.571413\n"}, {"lng": "106.489936", "lat": "29.571413\n"}, {"lng": "106.489936", "lat": "29.571413\n"}, {"lng": "106.489228", "lat": "29.572476\n"}, {"lng": "106.489278", "lat": "29.57247\n"}, {"lng": "106.48928", "lat": "29.572478\n"}, {"lng": "106.489308", "lat": "29.572493\n"}, {"lng": "106.489336", "lat": "29.572491\n"}, {"lng": "106.489401", "lat": "29.572516\n"}, {"lng": "106.489463", "lat": "29.572516\n"}, {"lng": "106.489526", "lat": "29.572513\n"}, {"lng": "106.489551", "lat": "29.572516\n"}, {"lng": "106.48958", "lat": "29.572516\n"}, {"lng": "106.489673", "lat": "29.572513\n"}, {"lng": "106.489723", "lat": "29.572528\n"}, {"lng": "106.48976", "lat": "29.57255\n"}, {"lng": "106.489806", "lat": "29.572548\n"}, {"lng": "106.489945", "lat": "29.572588\n"}, {"lng": "106.490688", "lat": "29.573006\n"}, {"lng": "106.493176", "lat": "29.574358\n"}, {"lng": "106.494316", "lat": "29.575038\n"}, {"lng": "106.494641", "lat": "29.575311\n"}, {"lng": "106.495465", "lat": "29.575978\n"}, {"lng": "106.49554", "lat": "29.576051\n"}, {"lng": "106.495676", "lat": "29.576178\n"}, {"lng": "106.495676", "lat": "29.576178\n"}, {"lng": "106.49603", "lat": "29.576513\n"}, {"lng": "106.497765", "lat": "29.578031\n"}, {"lng": "106.498773", "lat": "29.57854\n"}, {"lng": "106.499798", "lat": "29.578868\n"}, {"lng": "106.501658", "lat": "29.579578\n"}, {"lng": "106.50237", "lat": "29.580096\n"}, {"lng": "106.503121", "lat": "29.580836\n"}, {"lng": "106.50395", "lat": "29.581896\n"}, {"lng": "106.504175", "lat": "29.582433\n"}, {"lng": "106.505063", "lat": "29.584653\n"}, {"lng": "106.50554", "lat": "29.585078\n"}, {"lng": "106.50609", "lat": "29.585436\n"}, {"lng": "106.506691", "lat": "29.585701\n"}, {"lng": "106.507366", "lat": "29.585848\n"}, {"lng": "106.50825", "lat": "29.585931\n"}, {"lng": "106.51094", "lat": "29.586\n"}, {"lng": "106.513358", "lat": "29.586065\n"}, {"lng": "106.516028", "lat": "29.586071\n"}, {"lng": "106.519216", "lat": "29.586091\n"}, {"lng": "106.522845", "lat": "29.586266\n"}, {"lng": "106.523246", "lat": "29.586368\n"}, {"lng": "106.525301", "lat": "29.586976\n"}, {"lng": "106.527695", "lat": "29.587878\n"}, {"lng": "106.528158", "lat": "29.588231\n"}, {"lng": "106.52835", "lat": "29.58837\n"}, {"lng": "106.528901", "lat": "29.588898\n"}, {"lng": "106.530315", "lat": "29.590686\n"}, {"lng": "106.530693", "lat": "29.590921\n"}, {"lng": "106.531298", "lat": "29.591176\n"}, {"lng": "106.531461", "lat": "29.591223\n"}, {"lng": "106.531958", "lat": "29.591311\n"}, {"lng": "106.532708", "lat": "29.591331\n"}, {"lng": "106.53456", "lat": "29.59121\n"}, {"lng": "106.536136", "lat": "29.591001\n"}, {"lng": "106.536763", "lat": "29.590758\n"}, {"lng": "106.537365", "lat": "29.590386\n"}, {"lng": "106.537816", "lat": "29.590071\n"}, {"lng": "106.53997", "lat": "29.588791\n"}, {"lng": "106.54105", "lat": "29.58838\n"}, {"lng": "106.544393", "lat": "29.58736\n"}, {"lng": "106.546295", "lat": "29.586875\n"}, {"lng": "106.54707", "lat": "29.586838\n"}, {"lng": "106.547906", "lat": "29.586898\n"}, {"lng": "106.550141", "lat": "29.58728\n"}, {"lng": "106.550928", "lat": "29.587341\n"}, {"lng": "106.554313", "lat": "29.587185\n"}, {"lng": "106.558706", "lat": "29.587231\n"}, {"lng": "106.564148", "lat": "29.587476\n"}, {"lng": "106.568888", "lat": "29.587811\n"}, {"lng": "106.57465", "lat": "29.588195\n"}, {"lng": "106.581358", "lat": "29.58863\n"}, {"lng": "106.58715", "lat": "29.588625\n"}, {"lng": "106.587683", "lat": "29.588548\n"}, {"lng": "106.588408", "lat": "29.588351\n"}, {"lng": "106.589363", "lat": "29.587905\n"}, {"lng": "106.58993", "lat": "29.587518\n"}, {"lng": "106.590306", "lat": "29.587135\n"}, {"lng": "106.590373", "lat": "29.587008\n"}, {"lng": "106.590413", "lat": "29.58687\n"}, {"lng": "106.59044", "lat": "29.586643\n"}, {"lng": "106.590418", "lat": "29.586578\n"}, {"lng": "106.590366", "lat": "29.586528\n"}, {"lng": "106.590295", "lat": "29.586491\n"}, {"lng": "106.590121", "lat": "29.586416\n"}, {"lng": "106.58978", "lat": "29.586376\n"}, {"lng": "106.589298", "lat": "29.586303\n"}, {"lng": "106.58896", "lat": "29.586151\n"}, {"lng": "106.587671", "lat": "29.585425\n"}, {"lng": "106.587248", "lat": "29.585178\n"}, {"lng": "106.587193", "lat": "29.585103\n"}, {"lng": "106.586845", "lat": "29.584518\n"}, {"lng": "106.586873", "lat": "29.584393\n"}, {"lng": "106.586908", "lat": "29.584336\n"}, {"lng": "106.586978", "lat": "29.584295\n"}, {"lng": "106.587063", "lat": "29.584245\n"}, {"lng": "106.587728", "lat": "29.583933\n"}, {"lng": "106.58852", "lat": "29.583666\n"}, {"lng": "106.588616", "lat": "29.583636\n"}, {"lng": "106.59062", "lat": "29.583203\n"}, {"lng": "106.5909", "lat": "29.583028\n"}, {"lng": "106.590946", "lat": "29.583026\n"}, {"lng": "106.591038", "lat": "29.583023\n"}, {"lng": "106.591191", "lat": "29.582983\n"}, {"lng": "106.591945", "lat": "29.582805\n"}, {"lng": "106.593713", "lat": "29.5825\n"}, {"lng": "106.594765", "lat": "29.582348\n"}, {"lng": "106.595623", "lat": "29.582066\n"}, {"lng": "106.59581", "lat": "29.58191\n"}, {"lng": "106.59589", "lat": "29.581818\n"}, {"lng": "106.596008", "lat": "29.58164\n"}, {"lng": "106.596105", "lat": "29.581355\n"}, {"lng": "106.596305", "lat": "29.5805\n"}, {"lng": "106.596385", "lat": "29.579981\n"}, {"lng": "106.596376", "lat": "29.579921\n"}, {"lng": "106.5964", "lat": "29.57966\n"}, {"lng": "106.596518", "lat": "29.579361\n"}, {"lng": "106.596688", "lat": "29.579113\n"}, {"lng": "106.597758", "lat": "29.577621\n"}, {"lng": "106.597786", "lat": "29.577493\n"}, {"lng": "106.597826", "lat": "29.577223\n"}, {"lng": "106.597873", "lat": "29.577126\n"}, {"lng": "106.597888", "lat": "29.576851\n"}, {"lng": "106.597788", "lat": "29.576398\n"}, {"lng": "106.597645", "lat": "29.57626\n"}, {"lng": "106.59744", "lat": "29.576173\n"}, {"lng": "106.597366", "lat": "29.576155\n"}, {"lng": "106.597295", "lat": "29.576161\n"}, {"lng": "106.597103", "lat": "29.576156\n"}, {"lng": "106.597018", "lat": "29.576163\n"}, {"lng": "106.596796", "lat": "29.576183\n"}, {"lng": "106.596551", "lat": "29.57617\n"}, {"lng": "106.59605", "lat": "29.576128\n"}, {"lng": "106.595771", "lat": "29.576055\n"}, {"lng": "106.595018", "lat": "29.575778\n"}, {"lng": "106.594866", "lat": "29.57571\n"}, {"lng": "106.594543", "lat": "29.575561\n"}, {"lng": "106.594506", "lat": "29.575486\n"}, {"lng": "106.594505", "lat": "29.575436\n"}, {"lng": "106.594511", "lat": "29.575385\n"}, {"lng": "106.594491", "lat": "29.575216\n"}, {"lng": "106.594468", "lat": "29.575196\n"}, {"lng": "106.594391", "lat": "29.575178\n"}, {"lng": "106.594345", "lat": "29.575181\n"}, {"lng": "106.594196", "lat": "29.575205\n"}, {"lng": "106.593868", "lat": "29.575305\n"}, {"lng": "106.59372", "lat": "29.57537\n"}, {"lng": "106.59363", "lat": "29.575435\n"}, {"lng": "106.593523", "lat": "29.575543\n"}, {"lng": "106.5933", "lat": "29.575731\n"}, {"lng": "106.593236", "lat": "29.575753\n"}, {"lng": "106.593095", "lat": "29.575788\n"}, {"lng": "106.59263", "lat": "29.575965\n"}, {"lng": "106.59258", "lat": "29.576035\n"}, {"lng": "106.592545", "lat": "29.576106\n"}, {"lng": "106.592495", "lat": "29.576258\n"}, {"lng": "106.592303", "lat": "29.576691\n"}, {"lng": "106.592215", "lat": "29.576761\n"}, {"lng": "106.592118", "lat": "29.57682\n"}, {"lng": "106.59181", "lat": "29.57696\n"}, {"lng": "106.591708", "lat": "29.576963\n"}, {"lng": "106.59155", "lat": "29.576893\n"}, {"lng": "106.591506", "lat": "29.576825\n"}, {"lng": "106.591498", "lat": "29.576743\n"}, {"lng": "106.591511", "lat": "29.576651\n"}, {"lng": "106.591545", "lat": "29.576583\n"}, {"lng": "106.591563", "lat": "29.57627\n"}, {"lng": "106.591503", "lat": "29.576076\n"}, {"lng": "106.591426", "lat": "29.575991\n"}, {"lng": "106.59105", "lat": "29.575535\n"}, {"lng": "106.590888", "lat": "29.575535\n"}, {"lng": "106.590741", "lat": "29.575553\n"}, {"lng": "106.590668", "lat": "29.575568\n"}, {"lng": "106.590585", "lat": "29.575606\n"}, {"lng": "106.589545", "lat": "29.575728\n"}, {"lng": "106.589331", "lat": "29.575686\n"}, {"lng": "106.588915", "lat": "29.575568\n"}, {"lng": "106.588903", "lat": "29.575546\n"}, {"lng": "106.588861", "lat": "29.575505\n"}, {"lng": "106.588415", "lat": "29.575126\n"}, {"lng": "106.588343", "lat": "29.575101\n"}, {"lng": "106.588276", "lat": "29.575088\n"}, {"lng": "106.588216", "lat": "29.575088\n"}, {"lng": "106.58816", "lat": "29.575098\n"}, {"lng": "106.588105", "lat": "29.575121\n"}, {"lng": "106.588058", "lat": "29.575151\n"}, {"lng": "106.587973", "lat": "29.575213\n"}, {"lng": "106.58742", "lat": "29.57571\n"}, {"lng": "106.587413", "lat": "29.575743\n"}, {"lng": "106.587418", "lat": "29.575771\n"}, {"lng": "106.587436", "lat": "29.575788\n"}, {"lng": "106.587461", "lat": "29.5758\n"}, {"lng": "106.58749", "lat": "29.57581\n"}, {"lng": "106.587545", "lat": "29.575818\n"}, {"lng": "106.587605", "lat": "29.575815\n"}, {"lng": "106.587781", "lat": "29.575788\n"}, {"lng": "106.587861", "lat": "29.57577\n"}, {"lng": "106.587883", "lat": "29.5758\n"}, {"lng": "106.587883", "lat": "29.5758\n"}, {"lng": "106.587883", "lat": "29.5758\n"}, {"lng": "106.587883", "lat": "29.5758"}]}
\ No newline at end of file
data/m300Tools/GPSLines/1_sample.json
0 → 100644
View file @
f6a8a2c6
{
"name"
:
"GPS轨迹1"
,
"GPSLine"
:[
{
"lng"
:
106.586571
,
"lat"
:
29.569133
},
{
"lng"
:
106.586935
,
"lat"
:
29.569215
},
{
"lng"
:
106.587114
,
"lat"
:
29.569215
},
{
"lng"
:
106.587424
,
"lat"
:
29.569231
},
{
"lng"
:
106.587685
,
"lat"
:
29.569278
},
{
"lng"
:
106.587981
,
"lat"
:
29.569298
},
{
"lng"
:
106.588098
,
"lat"
:
29.569341
},
{
"lng"
:
106.588287
,
"lat"
:
29.569392
},
{
"lng"
:
106.588435
,
"lat"
:
29.569439
},
{
"lng"
:
106.588565
,
"lat"
:
29.569506
},
{
"lng"
:
106.588646
,
"lat"
:
29.569565
},
{
"lng"
:
106.588763
,
"lat"
:
29.569651
},
{
"lng"
:
106.588884
,
"lat"
:
29.569745
},
{
"lng"
:
106.589073
,
"lat"
:
29.569832
},
{
"lng"
:
106.589374
,
"lat"
:
29.569977
},
{
"lng"
:
106.589688
,
"lat"
:
29.570114
},
{
"lng"
:
106.589993
,
"lat"
:
29.570228
},
{
"lng"
:
106.590146
,
"lat"
:
29.570271
},
{
"lng"
:
106.590357
,
"lat"
:
29.570291
},
{
"lng"
:
106.590573
,
"lat"
:
29.570264
},
{
"lng"
:
106.590802
,
"lat"
:
29.570248
},
{
"lng"
:
106.59095
,
"lat"
:
29.570205
},
{
"lng"
:
106.59108
,
"lat"
:
29.570256
},
{
"lng"
:
106.591273
,
"lat"
:
29.570421
},
{
"lng"
:
106.591507
,
"lat"
:
29.570578
},
{
"lng"
:
106.591673
,
"lat"
:
29.570703
},
{
"lng"
:
106.591772
,
"lat"
:
29.570774
},
{
"lng"
:
106.591974
,
"lat"
:
29.570943
},
{
"lng"
:
106.592145
,
"lat"
:
29.57108
},
{
"lng"
:
106.592342
,
"lat"
:
29.571261
},
{
"lng"
:
106.592383
,
"lat"
:
29.571332
},
{
"lng"
:
106.592527
,
"lat"
:
29.571493
},
{
"lng"
:
106.592679
,
"lat"
:
29.571642
},
{
"lng"
:
106.592765
,
"lat"
:
29.571748
},
{
"lng"
:
106.592877
,
"lat"
:
29.571834
},
{
"lng"
:
106.593007
,
"lat"
:
29.571901
},
{
"lng"
:
106.593182
,
"lat"
:
29.571936
},
{
"lng"
:
106.593308
,
"lat"
:
29.571936
},
{
"lng"
:
106.593407
,
"lat"
:
29.571874
},
{
"lng"
:
106.593591
,
"lat"
:
29.571815
},
{
"lng"
:
106.593784
,
"lat"
:
29.571795
},
{
"lng"
:
106.593847
,
"lat"
:
29.571862
},
{
"lng"
:
106.593865
,
"lat"
:
29.571983
},
{
"lng"
:
106.59391
,
"lat"
:
29.572105
},
{
"lng"
:
106.594054
,
"lat"
:
29.572144
},
{
"lng"
:
106.594453
,
"lat"
:
29.572121
},
{
"lng"
:
106.594665
,
"lat"
:
29.57205
},
{
"lng"
:
106.594799
,
"lat"
:
29.571968
},
{
"lng"
:
106.594925
,
"lat"
:
29.571862
},
{
"lng"
:
106.595078
,
"lat"
:
29.57172
},
{
"lng"
:
106.595145
,
"lat"
:
29.571607
},
{
"lng"
:
106.595226
,
"lat"
:
29.571449
},
{
"lng"
:
106.595239
,
"lat"
:
29.571324
},
{
"lng"
:
106.59528
,
"lat"
:
29.571124
},
{
"lng"
:
106.59528
,
"lat"
:
29.570982
},
{
"lng"
:
106.595289
,
"lat"
:
29.570821
},
{
"lng"
:
106.59532
,
"lat"
:
29.57066
},
{
"lng"
:
106.59532
,
"lat"
:
29.570515
},
{
"lng"
:
106.595325
,
"lat"
:
29.570413
},
{
"lng"
:
106.595374
,
"lat"
:
29.570158
},
{
"lng"
:
106.595374
,
"lat"
:
29.570024
},
{
"lng"
:
106.595406
,
"lat"
:
29.56984
},
{
"lng"
:
106.59541
,
"lat"
:
29.569631
},
{
"lng"
:
106.59541
,
"lat"
:
29.569439
},
{
"lng"
:
106.595451
,
"lat"
:
29.569199
},
{
"lng"
:
106.595451
,
"lat"
:
29.569074
},
{
"lng"
:
106.595473
,
"lat"
:
29.568932
},
{
"lng"
:
106.595495
,
"lat"
:
29.568787
},
{
"lng"
:
106.595469
,
"lat"
:
29.568563
},
{
"lng"
:
106.595464
,
"lat"
:
29.568422
},
{
"lng"
:
106.595401
,
"lat"
:
29.568151
},
{
"lng"
:
106.595406
,
"lat"
:
29.567947
},
{
"lng"
:
106.595352
,
"lat"
:
29.567739
},
{
"lng"
:
106.595334
,
"lat"
:
29.567593
},
{
"lng"
:
106.595316
,
"lat"
:
29.567397
},
{
"lng"
:
106.595298
,
"lat"
:
29.567209
},
{
"lng"
:
106.595266
,
"lat"
:
29.567016
},
{
"lng"
:
106.595239
,
"lat"
:
29.566777
},
{
"lng"
:
106.595217
,
"lat"
:
29.566592
},
{
"lng"
:
106.595186
,
"lat"
:
29.566384
},
{
"lng"
:
106.595141
,
"lat"
:
29.566188
},
{
"lng"
:
106.595091
,
"lat"
:
29.565976
},
{
"lng"
:
106.594997
,
"lat"
:
29.565732
},
{
"lng"
:
106.594934
,
"lat"
:
29.565544
},
{
"lng"
:
106.594795
,
"lat"
:
29.565178
},
{
"lng"
:
106.594678
,
"lat"
:
29.564951
},
{
"lng"
:
106.594629
,
"lat"
:
29.564758
},
{
"lng"
:
106.594566
,
"lat"
:
29.564605
},
{
"lng"
:
106.594691
,
"lat"
:
29.564554
},
{
"lng"
:
106.594898
,
"lat"
:
29.564507
},
{
"lng"
:
106.595212
,
"lat"
:
29.564409
},
{
"lng"
:
106.595626
,
"lat"
:
29.564291
},
{
"lng"
:
106.596165
,
"lat"
:
29.564134
},
{
"lng"
:
106.596421
,
"lat"
:
29.564063
},
{
"lng"
:
106.596704
,
"lat"
:
29.563985
},
{
"lng"
:
106.596928
,
"lat"
:
29.56391
},
{
"lng"
:
106.59744
,
"lat"
:
29.563761
},
{
"lng"
:
106.597867
,
"lat"
:
29.563635
},
{
"lng"
:
106.598105
,
"lat"
:
29.563553
},
{
"lng"
:
106.598294
,
"lat"
:
29.563517
},
{
"lng"
:
106.598572
,
"lat"
:
29.563415
},
{
"lng"
:
106.598909
,
"lat"
:
29.563317
},
{
"lng"
:
106.599165
,
"lat"
:
29.56325
},
{
"lng"
:
106.599673
,
"lat"
:
29.563109
},
{
"lng"
:
106.600104
,
"lat"
:
29.562975
},
{
"lng"
:
106.600369
,
"lat"
:
29.562921
},
{
"lng"
:
106.600571
,
"lat"
:
29.562854
},
{
"lng"
:
106.600786
,
"lat"
:
29.562807
},
{
"lng"
:
106.600791
,
"lat"
:
29.562807
},
{
"lng"
:
106.600804
,
"lat"
:
29.562913
},
{
"lng"
:
106.600836
,
"lat"
:
29.563082
},
{
"lng"
:
106.600849
,
"lat"
:
29.563164
},
{
"lng"
:
106.60089
,
"lat"
:
29.56336
},
{
"lng"
:
106.600957
,
"lat"
:
29.563623
},
{
"lng"
:
106.600966
,
"lat"
:
29.563733
},
{
"lng"
:
106.600966
,
"lat"
:
29.563922
},
{
"lng"
:
106.600984
,
"lat"
:
29.564216
},
{
"lng"
:
106.601002
,
"lat"
:
29.56444
},
{
"lng"
:
106.601011
,
"lat"
:
29.564692
},
{
"lng"
:
106.601025
,
"lat"
:
29.564978
},
{
"lng"
:
106.601025
,
"lat"
:
29.565182
},
{
"lng"
:
106.601047
,
"lat"
:
29.565367
},
{
"lng"
:
106.601038
,
"lat"
:
29.565508
},
{
"lng"
:
106.601056
,
"lat"
:
29.56563
},
{
"lng"
:
106.601051
,
"lat"
:
29.565932
},
{
"lng"
:
106.60106
,
"lat"
:
29.566129
},
{
"lng"
:
106.601074
,
"lat"
:
29.566388
},
{
"lng"
:
106.601096
,
"lat"
:
29.566569
},
{
"lng"
:
106.601083
,
"lat"
:
29.566706
},
{
"lng"
:
106.601096
,
"lat"
:
29.566985
},
{
"lng"
:
106.601083
,
"lat"
:
29.567122
},
{
"lng"
:
106.601105
,
"lat"
:
29.567271
},
{
"lng"
:
106.601105
,
"lat"
:
29.567432
},
{
"lng"
:
106.601114
,
"lat"
:
29.567625
},
{
"lng"
:
106.601105
,
"lat"
:
29.567723
},
{
"lng"
:
106.601114
,
"lat"
:
29.567786
},
{
"lng"
:
106.601132
,
"lat"
:
29.568006
},
{
"lng"
:
106.601128
,
"lat"
:
29.568112
},
{
"lng"
:
106.601114
,
"lat"
:
29.568257
},
{
"lng"
:
106.601119
,
"lat"
:
29.568379
},
{
"lng"
:
106.601119
,
"lat"
:
29.568646
},
{
"lng"
:
106.601101
,
"lat"
:
29.568779
},
{
"lng"
:
106.60111
,
"lat"
:
29.568913
},
{
"lng"
:
106.601101
,
"lat"
:
29.569031
},
{
"lng"
:
106.601101
,
"lat"
:
29.569196
},
{
"lng"
:
106.601083
,
"lat"
:
29.569302
},
{
"lng"
:
106.601083
,
"lat"
:
29.569435
},
{
"lng"
:
106.601051
,
"lat"
:
29.56958
},
{
"lng"
:
106.601029
,
"lat"
:
29.569722
},
{
"lng"
:
106.601034
,
"lat"
:
29.56984
},
{
"lng"
:
106.600998
,
"lat"
:
29.570001
},
{
"lng"
:
106.60098
,
"lat"
:
29.570193
},
{
"lng"
:
106.600944
,
"lat"
:
29.570354
},
{
"lng"
:
106.600926
,
"lat"
:
29.57048
},
{
"lng"
:
106.600885
,
"lat"
:
29.570668
},
{
"lng"
:
106.600867
,
"lat"
:
29.570825
},
{
"lng"
:
106.600854
,
"lat"
:
29.570966
},
{
"lng"
:
106.600849
,
"lat"
:
29.571065
},
{
"lng"
:
106.600804
,
"lat"
:
29.571186
},
{
"lng"
:
106.600755
,
"lat"
:
29.571351
},
{
"lng"
:
106.600769
,
"lat"
:
29.57141
},
{
"lng"
:
106.600751
,
"lat"
:
29.571512
},
{
"lng"
:
106.600737
,
"lat"
:
29.571622
},
{
"lng"
:
106.600697
,
"lat"
:
29.571779
},
{
"lng"
:
106.600697
,
"lat"
:
29.571901
},
{
"lng"
:
106.600661
,
"lat"
:
29.572035
},
{
"lng"
:
106.600638
,
"lat"
:
29.572172
},
{
"lng"
:
106.60062
,
"lat"
:
29.572357
},
{
"lng"
:
106.600593
,
"lat"
:
29.572514
},
{
"lng"
:
106.600571
,
"lat"
:
29.572655
},
{
"lng"
:
106.600548
,
"lat"
:
29.572828
},
{
"lng"
:
106.60053
,
"lat"
:
29.572981
},
{
"lng"
:
106.600499
,
"lat"
:
29.573142
},
{
"lng"
:
106.600495
,
"lat"
:
29.573267
},
{
"lng"
:
106.600441
,
"lat"
:
29.573401
},
{
"lng"
:
106.600423
,
"lat"
:
29.573523
},
{
"lng"
:
106.600391
,
"lat"
:
29.573754
},
{
"lng"
:
106.600364
,
"lat"
:
29.57399
},
{
"lng"
:
106.600328
,
"lat"
:
29.574186
},
{
"lng"
:
106.600283
,
"lat"
:
29.574379
},
{
"lng"
:
106.600261
,
"lat"
:
29.574548
},
{
"lng"
:
106.600234
,
"lat"
:
29.574693
},
{
"lng"
:
106.600207
,
"lat"
:
29.574846
},
{
"lng"
:
106.600189
,
"lat"
:
29.574956
},
{
"lng"
:
106.600162
,
"lat"
:
29.575093
},
{
"lng"
:
106.600122
,
"lat"
:
29.57525
},
{
"lng"
:
106.600077
,
"lat"
:
29.575474
},
{
"lng"
:
106.600009
,
"lat"
:
29.575631
},
{
"lng"
:
106.599933
,
"lat"
:
29.575831
},
{
"lng"
:
106.599866
,
"lat"
:
29.576008
},
{
"lng"
:
106.599758
,
"lat"
:
29.576204
},
{
"lng"
:
106.5997
,
"lat"
:
29.576326
},
{
"lng"
:
106.599583
,
"lat"
:
29.576487
},
{
"lng"
:
106.599479
,
"lat"
:
29.576636
},
{
"lng"
:
106.599399
,
"lat"
:
29.57677
},
{
"lng"
:
106.5993
,
"lat"
:
29.576947
},
{
"lng"
:
106.59921
,
"lat"
:
29.577053
},
{
"lng"
:
106.599093
,
"lat"
:
29.577182
},
{
"lng"
:
106.59899
,
"lat"
:
29.5773
},
{
"lng"
:
106.598909
,
"lat"
:
29.577437
},
{
"lng"
:
106.598797
,
"lat"
:
29.577512
},
{
"lng"
:
106.598666
,
"lat"
:
29.577693
},
{
"lng"
:
106.5985
,
"lat"
:
29.57785
},
{
"lng"
:
106.598401
,
"lat"
:
29.57796
},
{
"lng"
:
106.598262
,
"lat"
:
29.578054
},
{
"lng"
:
106.598168
,
"lat"
:
29.578195
},
{
"lng"
:
106.598038
,
"lat"
:
29.578297
},
{
"lng"
:
106.598015
,
"lat"
:
29.578364
},
{
"lng"
:
106.598015
,
"lat"
:
29.578364
}
]
}
data/m300Tools/GPSLines/2_大坪到南滨路钟楼.json
0 → 100644
View file @
f6a8a2c6
{
"name"
:
"GPS轨迹1"
,
"GPSLine"
:[
{
"lng"
:
106.586571
,
"lat"
:
29.569133
},
{
"lng"
:
106.586935
,
"lat"
:
29.569215
},
{
"lng"
:
106.587114
,
"lat"
:
29.569215
},
{
"lng"
:
106.587424
,
"lat"
:
29.569231
},
{
"lng"
:
106.587685
,
"lat"
:
29.569278
},
{
"lng"
:
106.587981
,
"lat"
:
29.569298
},
{
"lng"
:
106.588098
,
"lat"
:
29.569341
},
{
"lng"
:
106.588287
,
"lat"
:
29.569392
},
{
"lng"
:
106.588435
,
"lat"
:
29.569439
},
{
"lng"
:
106.588565
,
"lat"
:
29.569506
},
{
"lng"
:
106.588646
,
"lat"
:
29.569565
},
{
"lng"
:
106.588763
,
"lat"
:
29.569651
},
{
"lng"
:
106.588884
,
"lat"
:
29.569745
},
{
"lng"
:
106.589073
,
"lat"
:
29.569832
},
{
"lng"
:
106.589374
,
"lat"
:
29.569977
},
{
"lng"
:
106.589688
,
"lat"
:
29.570114
},
{
"lng"
:
106.589993
,
"lat"
:
29.570228
},
{
"lng"
:
106.590146
,
"lat"
:
29.570271
},
{
"lng"
:
106.590357
,
"lat"
:
29.570291
},
{
"lng"
:
106.590573
,
"lat"
:
29.570264
},
{
"lng"
:
106.590802
,
"lat"
:
29.570248
},
{
"lng"
:
106.59095
,
"lat"
:
29.570205
},
{
"lng"
:
106.59108
,
"lat"
:
29.570256
},
{
"lng"
:
106.591273
,
"lat"
:
29.570421
},
{
"lng"
:
106.591507
,
"lat"
:
29.570578
},
{
"lng"
:
106.591673
,
"lat"
:
29.570703
},
{
"lng"
:
106.591772
,
"lat"
:
29.570774
},
{
"lng"
:
106.591974
,
"lat"
:
29.570943
},
{
"lng"
:
106.592145
,
"lat"
:
29.57108
},
{
"lng"
:
106.592342
,
"lat"
:
29.571261
},
{
"lng"
:
106.592383
,
"lat"
:
29.571332
},
{
"lng"
:
106.592527
,
"lat"
:
29.571493
},
{
"lng"
:
106.592679
,
"lat"
:
29.571642
},
{
"lng"
:
106.592765
,
"lat"
:
29.571748
},
{
"lng"
:
106.592877
,
"lat"
:
29.571834
},
{
"lng"
:
106.593007
,
"lat"
:
29.571901
},
{
"lng"
:
106.593182
,
"lat"
:
29.571936
},
{
"lng"
:
106.593308
,
"lat"
:
29.571936
},
{
"lng"
:
106.593407
,
"lat"
:
29.571874
},
{
"lng"
:
106.593591
,
"lat"
:
29.571815
},
{
"lng"
:
106.593784
,
"lat"
:
29.571795
},
{
"lng"
:
106.593847
,
"lat"
:
29.571862
},
{
"lng"
:
106.593865
,
"lat"
:
29.571983
},
{
"lng"
:
106.59391
,
"lat"
:
29.572105
},
{
"lng"
:
106.594054
,
"lat"
:
29.572144
},
{
"lng"
:
106.594453
,
"lat"
:
29.572121
},
{
"lng"
:
106.594665
,
"lat"
:
29.57205
},
{
"lng"
:
106.594799
,
"lat"
:
29.571968
},
{
"lng"
:
106.594925
,
"lat"
:
29.571862
},
{
"lng"
:
106.595078
,
"lat"
:
29.57172
},
{
"lng"
:
106.595145
,
"lat"
:
29.571607
},
{
"lng"
:
106.595226
,
"lat"
:
29.571449
},
{
"lng"
:
106.595239
,
"lat"
:
29.571324
},
{
"lng"
:
106.59528
,
"lat"
:
29.571124
},
{
"lng"
:
106.59528
,
"lat"
:
29.570982
},
{
"lng"
:
106.595289
,
"lat"
:
29.570821
},
{
"lng"
:
106.59532
,
"lat"
:
29.57066
},
{
"lng"
:
106.59532
,
"lat"
:
29.570515
},
{
"lng"
:
106.595325
,
"lat"
:
29.570413
},
{
"lng"
:
106.595374
,
"lat"
:
29.570158
},
{
"lng"
:
106.595374
,
"lat"
:
29.570024
},
{
"lng"
:
106.595406
,
"lat"
:
29.56984
},
{
"lng"
:
106.59541
,
"lat"
:
29.569631
},
{
"lng"
:
106.59541
,
"lat"
:
29.569439
},
{
"lng"
:
106.595451
,
"lat"
:
29.569199
},
{
"lng"
:
106.595451
,
"lat"
:
29.569074
},
{
"lng"
:
106.595473
,
"lat"
:
29.568932
},
{
"lng"
:
106.595495
,
"lat"
:
29.568787
},
{
"lng"
:
106.595469
,
"lat"
:
29.568563
},
{
"lng"
:
106.595464
,
"lat"
:
29.568422
},
{
"lng"
:
106.595401
,
"lat"
:
29.568151
},
{
"lng"
:
106.595406
,
"lat"
:
29.567947
},
{
"lng"
:
106.595352
,
"lat"
:
29.567739
},
{
"lng"
:
106.595334
,
"lat"
:
29.567593
},
{
"lng"
:
106.595316
,
"lat"
:
29.567397
},
{
"lng"
:
106.595298
,
"lat"
:
29.567209
},
{
"lng"
:
106.595266
,
"lat"
:
29.567016
},
{
"lng"
:
106.595239
,
"lat"
:
29.566777
},
{
"lng"
:
106.595217
,
"lat"
:
29.566592
},
{
"lng"
:
106.595186
,
"lat"
:
29.566384
},
{
"lng"
:
106.595141
,
"lat"
:
29.566188
},
{
"lng"
:
106.595091
,
"lat"
:
29.565976
},
{
"lng"
:
106.594997
,
"lat"
:
29.565732
},
{
"lng"
:
106.594934
,
"lat"
:
29.565544
},
{
"lng"
:
106.594795
,
"lat"
:
29.565178
},
{
"lng"
:
106.594678
,
"lat"
:
29.564951
},
{
"lng"
:
106.594629
,
"lat"
:
29.564758
},
{
"lng"
:
106.594566
,
"lat"
:
29.564605
},
{
"lng"
:
106.594691
,
"lat"
:
29.564554
},
{
"lng"
:
106.594898
,
"lat"
:
29.564507
},
{
"lng"
:
106.595212
,
"lat"
:
29.564409
},
{
"lng"
:
106.595626
,
"lat"
:
29.564291
},
{
"lng"
:
106.596165
,
"lat"
:
29.564134
},
{
"lng"
:
106.596421
,
"lat"
:
29.564063
},
{
"lng"
:
106.596704
,
"lat"
:
29.563985
},
{
"lng"
:
106.596928
,
"lat"
:
29.56391
},
{
"lng"
:
106.59744
,
"lat"
:
29.563761
},
{
"lng"
:
106.597867
,
"lat"
:
29.563635
},
{
"lng"
:
106.598105
,
"lat"
:
29.563553
},
{
"lng"
:
106.598294
,
"lat"
:
29.563517
},
{
"lng"
:
106.598572
,
"lat"
:
29.563415
},
{
"lng"
:
106.598909
,
"lat"
:
29.563317
},
{
"lng"
:
106.599165
,
"lat"
:
29.56325
},
{
"lng"
:
106.599673
,
"lat"
:
29.563109
},
{
"lng"
:
106.600104
,
"lat"
:
29.562975
},
{
"lng"
:
106.600369
,
"lat"
:
29.562921
},
{
"lng"
:
106.600571
,
"lat"
:
29.562854
},
{
"lng"
:
106.600786
,
"lat"
:
29.562807
},
{
"lng"
:
106.600791
,
"lat"
:
29.562807
},
{
"lng"
:
106.600804
,
"lat"
:
29.562913
},
{
"lng"
:
106.600836
,
"lat"
:
29.563082
},
{
"lng"
:
106.600849
,
"lat"
:
29.563164
},
{
"lng"
:
106.60089
,
"lat"
:
29.56336
},
{
"lng"
:
106.600957
,
"lat"
:
29.563623
},
{
"lng"
:
106.600966
,
"lat"
:
29.563733
},
{
"lng"
:
106.600966
,
"lat"
:
29.563922
},
{
"lng"
:
106.600984
,
"lat"
:
29.564216
},
{
"lng"
:
106.601002
,
"lat"
:
29.56444
},
{
"lng"
:
106.601011
,
"lat"
:
29.564692
},
{
"lng"
:
106.601025
,
"lat"
:
29.564978
},
{
"lng"
:
106.601025
,
"lat"
:
29.565182
},
{
"lng"
:
106.601047
,
"lat"
:
29.565367
},
{
"lng"
:
106.601038
,
"lat"
:
29.565508
},
{
"lng"
:
106.601056
,
"lat"
:
29.56563
},
{
"lng"
:
106.601051
,
"lat"
:
29.565932
},
{
"lng"
:
106.60106
,
"lat"
:
29.566129
},
{
"lng"
:
106.601074
,
"lat"
:
29.566388
},
{
"lng"
:
106.601096
,
"lat"
:
29.566569
},
{
"lng"
:
106.601083
,
"lat"
:
29.566706
},
{
"lng"
:
106.601096
,
"lat"
:
29.566985
},
{
"lng"
:
106.601083
,
"lat"
:
29.567122
},
{
"lng"
:
106.601105
,
"lat"
:
29.567271
},
{
"lng"
:
106.601105
,
"lat"
:
29.567432
},
{
"lng"
:
106.601114
,
"lat"
:
29.567625
},
{
"lng"
:
106.601105
,
"lat"
:
29.567723
},
{
"lng"
:
106.601114
,
"lat"
:
29.567786
},
{
"lng"
:
106.601132
,
"lat"
:
29.568006
},
{
"lng"
:
106.601128
,
"lat"
:
29.568112
},
{
"lng"
:
106.601114
,
"lat"
:
29.568257
},
{
"lng"
:
106.601119
,
"lat"
:
29.568379
},
{
"lng"
:
106.601119
,
"lat"
:
29.568646
},
{
"lng"
:
106.601101
,
"lat"
:
29.568779
},
{
"lng"
:
106.60111
,
"lat"
:
29.568913
},
{
"lng"
:
106.601101
,
"lat"
:
29.569031
},
{
"lng"
:
106.601101
,
"lat"
:
29.569196
},
{
"lng"
:
106.601083
,
"lat"
:
29.569302
},
{
"lng"
:
106.601083
,
"lat"
:
29.569435
},
{
"lng"
:
106.601051
,
"lat"
:
29.56958
},
{
"lng"
:
106.601029
,
"lat"
:
29.569722
},
{
"lng"
:
106.601034
,
"lat"
:
29.56984
},
{
"lng"
:
106.600998
,
"lat"
:
29.570001
},
{
"lng"
:
106.60098
,
"lat"
:
29.570193
},
{
"lng"
:
106.600944
,
"lat"
:
29.570354
},
{
"lng"
:
106.600926
,
"lat"
:
29.57048
},
{
"lng"
:
106.600885
,
"lat"
:
29.570668
},
{
"lng"
:
106.600867
,
"lat"
:
29.570825
},
{
"lng"
:
106.600854
,
"lat"
:
29.570966
},
{
"lng"
:
106.600849
,
"lat"
:
29.571065
},
{
"lng"
:
106.600804
,
"lat"
:
29.571186
},
{
"lng"
:
106.600755
,
"lat"
:
29.571351
},
{
"lng"
:
106.600769
,
"lat"
:
29.57141
},
{
"lng"
:
106.600751
,
"lat"
:
29.571512
},
{
"lng"
:
106.600737
,
"lat"
:
29.571622
},
{
"lng"
:
106.600697
,
"lat"
:
29.571779
},
{
"lng"
:
106.600697
,
"lat"
:
29.571901
},
{
"lng"
:
106.600661
,
"lat"
:
29.572035
},
{
"lng"
:
106.600638
,
"lat"
:
29.572172
},
{
"lng"
:
106.60062
,
"lat"
:
29.572357
},
{
"lng"
:
106.600593
,
"lat"
:
29.572514
},
{
"lng"
:
106.600571
,
"lat"
:
29.572655
},
{
"lng"
:
106.600548
,
"lat"
:
29.572828
},
{
"lng"
:
106.60053
,
"lat"
:
29.572981
},
{
"lng"
:
106.600499
,
"lat"
:
29.573142
},
{
"lng"
:
106.600495
,
"lat"
:
29.573267
},
{
"lng"
:
106.600441
,
"lat"
:
29.573401
},
{
"lng"
:
106.600423
,
"lat"
:
29.573523
},
{
"lng"
:
106.600391
,
"lat"
:
29.573754
},
{
"lng"
:
106.600364
,
"lat"
:
29.57399
},
{
"lng"
:
106.600328
,
"lat"
:
29.574186
},
{
"lng"
:
106.600283
,
"lat"
:
29.574379
},
{
"lng"
:
106.600261
,
"lat"
:
29.574548
},
{
"lng"
:
106.600234
,
"lat"
:
29.574693
},
{
"lng"
:
106.600207
,
"lat"
:
29.574846
},
{
"lng"
:
106.600189
,
"lat"
:
29.574956
},
{
"lng"
:
106.600162
,
"lat"
:
29.575093
},
{
"lng"
:
106.600122
,
"lat"
:
29.57525
},
{
"lng"
:
106.600077
,
"lat"
:
29.575474
},
{
"lng"
:
106.600009
,
"lat"
:
29.575631
},
{
"lng"
:
106.599933
,
"lat"
:
29.575831
},
{
"lng"
:
106.599866
,
"lat"
:
29.576008
},
{
"lng"
:
106.599758
,
"lat"
:
29.576204
},
{
"lng"
:
106.5997
,
"lat"
:
29.576326
},
{
"lng"
:
106.599583
,
"lat"
:
29.576487
},
{
"lng"
:
106.599479
,
"lat"
:
29.576636
},
{
"lng"
:
106.599399
,
"lat"
:
29.57677
},
{
"lng"
:
106.5993
,
"lat"
:
29.576947
},
{
"lng"
:
106.59921
,
"lat"
:
29.577053
},
{
"lng"
:
106.599093
,
"lat"
:
29.577182
},
{
"lng"
:
106.59899
,
"lat"
:
29.5773
},
{
"lng"
:
106.598909
,
"lat"
:
29.577437
},
{
"lng"
:
106.598797
,
"lat"
:
29.577512
},
{
"lng"
:
106.598666
,
"lat"
:
29.577693
},
{
"lng"
:
106.5985
,
"lat"
:
29.57785
},
{
"lng"
:
106.598401
,
"lat"
:
29.57796
},
{
"lng"
:
106.598262
,
"lat"
:
29.578054
},
{
"lng"
:
106.598168
,
"lat"
:
29.578195
},
{
"lng"
:
106.598038
,
"lat"
:
29.578297
},
{
"lng"
:
106.598015
,
"lat"
:
29.578364
},
{
"lng"
:
106.598015
,
"lat"
:
29.578364
}
]
}
\ No newline at end of file
data/m300Tools/GPSLines/4_测试轨迹.json
0 → 100644
View file @
f6a8a2c6
{
"name"
:
"GPS轨迹1"
,
"GPSLine"
:[
{
"lng"
:
106.591507
,
"lat"
:
29.570578
},
{
"lng"
:
106.591673
,
"lat"
:
29.570703
},
{
"lng"
:
106.591772
,
"lat"
:
29.570774
},
{
"lng"
:
106.591974
,
"lat"
:
29.570943
},
{
"lng"
:
106.592145
,
"lat"
:
29.57108
},
{
"lng"
:
106.592342
,
"lat"
:
29.571261
},
{
"lng"
:
106.592383
,
"lat"
:
29.571332
},
{
"lng"
:
106.592527
,
"lat"
:
29.571493
},
{
"lng"
:
106.592679
,
"lat"
:
29.571642
},
{
"lng"
:
106.592765
,
"lat"
:
29.571748
},
{
"lng"
:
106.592877
,
"lat"
:
29.571834
},
{
"lng"
:
106.593007
,
"lat"
:
29.571901
},
{
"lng"
:
106.593182
,
"lat"
:
29.571936
},
{
"lng"
:
106.593308
,
"lat"
:
29.571936
},
{
"lng"
:
106.593407
,
"lat"
:
29.571874
},
{
"lng"
:
106.593591
,
"lat"
:
29.571815
},
{
"lng"
:
106.593784
,
"lat"
:
29.571795
},
{
"lng"
:
106.593847
,
"lat"
:
29.571862
},
{
"lng"
:
106.593865
,
"lat"
:
29.571983
},
{
"lng"
:
106.59391
,
"lat"
:
29.572105
},
{
"lng"
:
106.594054
,
"lat"
:
29.572144
},
{
"lng"
:
106.594453
,
"lat"
:
29.572121
},
{
"lng"
:
106.594665
,
"lat"
:
29.57205
},
{
"lng"
:
106.594799
,
"lat"
:
29.571968
},
{
"lng"
:
106.594925
,
"lat"
:
29.571862
},
{
"lng"
:
106.595078
,
"lat"
:
29.57172
},
{
"lng"
:
106.595145
,
"lat"
:
29.571607
},
{
"lng"
:
106.595226
,
"lat"
:
29.571449
},
{
"lng"
:
106.595239
,
"lat"
:
29.571324
},
{
"lng"
:
106.59528
,
"lat"
:
29.571124
},
{
"lng"
:
106.59528
,
"lat"
:
29.570982
},
{
"lng"
:
106.595289
,
"lat"
:
29.570821
},
{
"lng"
:
106.59532
,
"lat"
:
29.57066
},
{
"lng"
:
106.59532
,
"lat"
:
29.570515
},
{
"lng"
:
106.595325
,
"lat"
:
29.570413
},
{
"lng"
:
106.595374
,
"lat"
:
29.570158
},
{
"lng"
:
106.595374
,
"lat"
:
29.570024
},
{
"lng"
:
106.595406
,
"lat"
:
29.56984
},
{
"lng"
:
106.59541
,
"lat"
:
29.569631
},
{
"lng"
:
106.59541
,
"lat"
:
29.569439
},
{
"lng"
:
106.595451
,
"lat"
:
29.569199
},
{
"lng"
:
106.595451
,
"lat"
:
29.569074
},
{
"lng"
:
106.595473
,
"lat"
:
29.568932
},
{
"lng"
:
106.595495
,
"lat"
:
29.568787
},
{
"lng"
:
106.595469
,
"lat"
:
29.568563
},
{
"lng"
:
106.595464
,
"lat"
:
29.568422
},
{
"lng"
:
106.595401
,
"lat"
:
29.568151
},
{
"lng"
:
106.595406
,
"lat"
:
29.567947
},
{
"lng"
:
106.595352
,
"lat"
:
29.567739
},
{
"lng"
:
106.595334
,
"lat"
:
29.567593
},
{
"lng"
:
106.595316
,
"lat"
:
29.567397
},
{
"lng"
:
106.595298
,
"lat"
:
29.567209
},
{
"lng"
:
106.595266
,
"lat"
:
29.567016
},
{
"lng"
:
106.595239
,
"lat"
:
29.566777
},
{
"lng"
:
106.595217
,
"lat"
:
29.566592
},
{
"lng"
:
106.595186
,
"lat"
:
29.566384
},
{
"lng"
:
106.595141
,
"lat"
:
29.566188
},
{
"lng"
:
106.595091
,
"lat"
:
29.565976
},
{
"lng"
:
106.594997
,
"lat"
:
29.565732
},
{
"lng"
:
106.594934
,
"lat"
:
29.565544
},
{
"lng"
:
106.594795
,
"lat"
:
29.565178
},
{
"lng"
:
106.594678
,
"lat"
:
29.564951
},
{
"lng"
:
106.594629
,
"lat"
:
29.564758
},
{
"lng"
:
106.594566
,
"lat"
:
29.564605
},
{
"lng"
:
106.594691
,
"lat"
:
29.564554
},
{
"lng"
:
106.594898
,
"lat"
:
29.564507
},
{
"lng"
:
106.595212
,
"lat"
:
29.564409
},
{
"lng"
:
106.595626
,
"lat"
:
29.564291
},
{
"lng"
:
106.596165
,
"lat"
:
29.564134
},
{
"lng"
:
106.596421
,
"lat"
:
29.564063
},
{
"lng"
:
106.596704
,
"lat"
:
29.563985
},
{
"lng"
:
106.596928
,
"lat"
:
29.56391
},
{
"lng"
:
106.59744
,
"lat"
:
29.563761
},
{
"lng"
:
106.597867
,
"lat"
:
29.563635
},
{
"lng"
:
106.598105
,
"lat"
:
29.563553
},
{
"lng"
:
106.598294
,
"lat"
:
29.563517
},
{
"lng"
:
106.598572
,
"lat"
:
29.563415
},
{
"lng"
:
106.598909
,
"lat"
:
29.563317
},
{
"lng"
:
106.599165
,
"lat"
:
29.56325
},
{
"lng"
:
106.599673
,
"lat"
:
29.563109
},
{
"lng"
:
106.600104
,
"lat"
:
29.562975
},
{
"lng"
:
106.600369
,
"lat"
:
29.562921
},
{
"lng"
:
106.600571
,
"lat"
:
29.562854
},
{
"lng"
:
106.600786
,
"lat"
:
29.562807
},
{
"lng"
:
106.600791
,
"lat"
:
29.562807
},
{
"lng"
:
106.600804
,
"lat"
:
29.562913
},
{
"lng"
:
106.600836
,
"lat"
:
29.563082
},
{
"lng"
:
106.600849
,
"lat"
:
29.563164
},
{
"lng"
:
106.60089
,
"lat"
:
29.56336
},
{
"lng"
:
106.600957
,
"lat"
:
29.563623
},
{
"lng"
:
106.600966
,
"lat"
:
29.563733
},
{
"lng"
:
106.600966
,
"lat"
:
29.563922
},
{
"lng"
:
106.600984
,
"lat"
:
29.564216
},
{
"lng"
:
106.601002
,
"lat"
:
29.56444
},
{
"lng"
:
106.601011
,
"lat"
:
29.564692
},
{
"lng"
:
106.601025
,
"lat"
:
29.564978
},
{
"lng"
:
106.601025
,
"lat"
:
29.565182
},
{
"lng"
:
106.601047
,
"lat"
:
29.565367
},
{
"lng"
:
106.601038
,
"lat"
:
29.565508
},
{
"lng"
:
106.601056
,
"lat"
:
29.56563
},
{
"lng"
:
106.601051
,
"lat"
:
29.565932
},
{
"lng"
:
106.60106
,
"lat"
:
29.566129
},
{
"lng"
:
106.601074
,
"lat"
:
29.566388
},
{
"lng"
:
106.601096
,
"lat"
:
29.566569
},
{
"lng"
:
106.601083
,
"lat"
:
29.566706
},
{
"lng"
:
106.601096
,
"lat"
:
29.566985
},
{
"lng"
:
106.601083
,
"lat"
:
29.567122
},
{
"lng"
:
106.601105
,
"lat"
:
29.567271
},
{
"lng"
:
106.601105
,
"lat"
:
29.567432
},
{
"lng"
:
106.601114
,
"lat"
:
29.567625
},
{
"lng"
:
106.601105
,
"lat"
:
29.567723
},
{
"lng"
:
106.601114
,
"lat"
:
29.567786
},
{
"lng"
:
106.601132
,
"lat"
:
29.568006
},
{
"lng"
:
106.601128
,
"lat"
:
29.568112
},
{
"lng"
:
106.601114
,
"lat"
:
29.568257
},
{
"lng"
:
106.601119
,
"lat"
:
29.568379
},
{
"lng"
:
106.601119
,
"lat"
:
29.568646
},
{
"lng"
:
106.601101
,
"lat"
:
29.568779
},
{
"lng"
:
106.60111
,
"lat"
:
29.568913
},
{
"lng"
:
106.601101
,
"lat"
:
29.569031
},
{
"lng"
:
106.601101
,
"lat"
:
29.569196
},
{
"lng"
:
106.601083
,
"lat"
:
29.569302
},
{
"lng"
:
106.601083
,
"lat"
:
29.569435
},
{
"lng"
:
106.601051
,
"lat"
:
29.56958
},
{
"lng"
:
106.601029
,
"lat"
:
29.569722
},
{
"lng"
:
106.601034
,
"lat"
:
29.56984
},
{
"lng"
:
106.600998
,
"lat"
:
29.570001
},
{
"lng"
:
106.60098
,
"lat"
:
29.570193
},
{
"lng"
:
106.600944
,
"lat"
:
29.570354
},
{
"lng"
:
106.600926
,
"lat"
:
29.57048
},
{
"lng"
:
106.600885
,
"lat"
:
29.570668
},
{
"lng"
:
106.600867
,
"lat"
:
29.570825
},
{
"lng"
:
106.600854
,
"lat"
:
29.570966
},
{
"lng"
:
106.600849
,
"lat"
:
29.571065
},
{
"lng"
:
106.600804
,
"lat"
:
29.571186
},
{
"lng"
:
106.600755
,
"lat"
:
29.571351
},
{
"lng"
:
106.600769
,
"lat"
:
29.57141
},
{
"lng"
:
106.600751
,
"lat"
:
29.571512
},
{
"lng"
:
106.600737
,
"lat"
:
29.571622
},
{
"lng"
:
106.600697
,
"lat"
:
29.571779
},
{
"lng"
:
106.600697
,
"lat"
:
29.571901
},
{
"lng"
:
106.600661
,
"lat"
:
29.572035
},
{
"lng"
:
106.600638
,
"lat"
:
29.572172
},
{
"lng"
:
106.60062
,
"lat"
:
29.572357
},
{
"lng"
:
106.600593
,
"lat"
:
29.572514
},
{
"lng"
:
106.600571
,
"lat"
:
29.572655
},
{
"lng"
:
106.600548
,
"lat"
:
29.572828
},
{
"lng"
:
106.60053
,
"lat"
:
29.572981
},
{
"lng"
:
106.600499
,
"lat"
:
29.573142
},
{
"lng"
:
106.600495
,
"lat"
:
29.573267
},
{
"lng"
:
106.600441
,
"lat"
:
29.573401
},
{
"lng"
:
106.600423
,
"lat"
:
29.573523
},
{
"lng"
:
106.600391
,
"lat"
:
29.573754
},
{
"lng"
:
106.600364
,
"lat"
:
29.57399
},
{
"lng"
:
106.600328
,
"lat"
:
29.574186
},
{
"lng"
:
106.600283
,
"lat"
:
29.574379
},
{
"lng"
:
106.600261
,
"lat"
:
29.574548
},
{
"lng"
:
106.600234
,
"lat"
:
29.574693
},
{
"lng"
:
106.600207
,
"lat"
:
29.574846
},
{
"lng"
:
106.600189
,
"lat"
:
29.574956
},
{
"lng"
:
106.600162
,
"lat"
:
29.575093
},
{
"lng"
:
106.600122
,
"lat"
:
29.57525
},
{
"lng"
:
106.600077
,
"lat"
:
29.575474
},
{
"lng"
:
106.600009
,
"lat"
:
29.575631
},
{
"lng"
:
106.599933
,
"lat"
:
29.575831
},
{
"lng"
:
106.599866
,
"lat"
:
29.576008
},
{
"lng"
:
106.599758
,
"lat"
:
29.576204
},
{
"lng"
:
106.5997
,
"lat"
:
29.576326
},
{
"lng"
:
106.599583
,
"lat"
:
29.576487
}
]
}
\ No newline at end of file
data/m300Tools/GPSLines/5_先涛的车轨迹.txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.287903", "lat": "29.586623\n"}, {"lng": "106.289041", "lat": "29.586608\n"}, {"lng": "106.293958", "lat": "29.586631\n"}, {"lng": "106.296643", "lat": "29.586603\n"}, {"lng": "106.29702", "lat": "29.586588\n"}, {"lng": "106.297076", "lat": "29.586625\n"}, {"lng": "106.297116", "lat": "29.586675\n"}, {"lng": "106.297148", "lat": "29.58674\n"}, {"lng": "106.297161", "lat": "29.586818\n"}, {"lng": "106.297168", "lat": "29.586906\n"}, {"lng": "106.297275", "lat": "29.58793\n"}, {"lng": "106.297461", "lat": "29.588408\n"}, {"lng": "106.297783", "lat": "29.588835\n"}, {"lng": "106.298863", "lat": "29.589848\n"}, {"lng": "106.299571", "lat": "29.59043\n"}, {"lng": "106.30007", "lat": "29.590666\n"}, {"lng": "106.300655", "lat": "29.59083\n"}, {"lng": "106.301408", "lat": "29.59091\n"}, {"lng": "106.301695", "lat": "29.590925\n"}, {"lng": "106.303111", "lat": "29.590928\n"}, {"lng": "106.30319", "lat": "29.590958\n"}, {"lng": "106.30325", "lat": "29.591001\n"}, {"lng": "106.303288", "lat": "29.59106\n"}, {"lng": "106.303306", "lat": "29.591125\n"}, {"lng": "106.303311", "lat": "29.591196\n"}, {"lng": "106.303321", "lat": "29.59202\n"}, {"lng": "106.303418", "lat": "29.594665\n"}, {"lng": "106.303493", "lat": "29.596323\n"}, {"lng": "106.30351", "lat": "29.597693\n"}, {"lng": "106.303563", "lat": "29.598776\n"}, {"lng": "106.303651", "lat": "29.600776\n"}, {"lng": "106.303651", "lat": "29.600776\n"}, {"lng": "106.303735", "lat": "29.6027\n"}, {"lng": "106.303841", "lat": "29.605561\n"}, {"lng": "106.30389", "lat": "29.605611\n"}, {"lng": "106.303936", "lat": "29.605648\n"}, {"lng": "106.303988", "lat": "29.605683\n"}, {"lng": "106.30405", "lat": "29.605698\n"}, {"lng": "106.304203", "lat": "29.605718\n"}, {"lng": "106.307615", "lat": "29.605741\n"}, {"lng": "106.309696", "lat": "29.605716\n"}, {"lng": "106.309731", "lat": "29.605715\n"}, {"lng": "106.313746", "lat": "29.605721\n"}, {"lng": "106.31563", "lat": "29.605693\n"}, {"lng": "106.320446", "lat": "29.605731\n"}, {"lng": "106.325616", "lat": "29.605701\n"}, {"lng": "106.3258", "lat": "29.605626\n"}, {"lng": "106.326526", "lat": "29.605285\n"}, {"lng": "106.326736", "lat": "29.605265\n"}, {"lng": "106.326958", "lat": "29.605301\n"}, {"lng": "106.327066", "lat": "29.605343\n"}, {"lng": "106.327813", "lat": "29.605686\n"}, {"lng": "106.328125", "lat": "29.605711\n"}, {"lng": "106.328805", "lat": "29.605706\n"}, {"lng": "106.335046", "lat": "29.605946\n"}, {"lng": "106.339763", "lat": "29.606455\n"}, {"lng": "106.342376", "lat": "29.606618\n"}, {"lng": "106.346018", "lat": "29.606541\n"}, {"lng": "106.34853", "lat": "29.606423\n"}, {"lng": "106.352298", "lat": "29.606235\n"}, {"lng": "106.357856", "lat": "29.606015\n"}, {"lng": "106.359951", "lat": "29.605968\n"}, {"lng": "106.360195", "lat": "29.605978\n"}, {"lng": "106.360195", "lat": "29.605978\n"}, {"lng": "106.360341", "lat": "29.60598\n"}, {"lng": "106.360453", "lat": "29.605988\n"}, {"lng": "106.360515", "lat": "29.606005\n"}, {"lng": "106.360578", "lat": "29.606036\n"}, {"lng": "106.360638", "lat": "29.606081\n"}, {"lng": "106.360686", "lat": "29.606136\n"}, {"lng": "106.360756", "lat": "29.606266\n"}, {"lng": "106.360791", "lat": "29.60645\n"}, {"lng": "106.361096", "lat": "29.608673\n"}, {"lng": "106.361216", "lat": "29.611228\n"}, {"lng": "106.36123", "lat": "29.611825\n"}, {"lng": "106.36123", "lat": "29.611825\n"}, {"lng": "106.361245", "lat": "29.612025\n"}, {"lng": "106.361295", "lat": "29.612065\n"}, {"lng": "106.36137", "lat": "29.612091\n"}, {"lng": "106.361458", "lat": "29.612105\n"}, {"lng": "106.362618", "lat": "29.612145\n"}, {"lng": "106.36646", "lat": "29.61203\n"}, {"lng": "106.366696", "lat": "29.612051\n"}, {"lng": "106.37035", "lat": "29.612156\n"}, {"lng": "106.374651", "lat": "29.61214\n"}, {"lng": "106.378093", "lat": "29.612096\n"}, {"lng": "106.378153", "lat": "29.612078\n"}, {"lng": "106.378198", "lat": "29.612083\n"}, {"lng": "106.37833", "lat": "29.612105\n"}, {"lng": "106.37846", "lat": "29.61212\n"}, {"lng": "106.379693", "lat": "29.612105\n"}, {"lng": "106.380753", "lat": "29.61197\n"}, {"lng": "106.381605", "lat": "29.611756\n"}, {"lng": "106.383603", "lat": "29.611061\n"}, {"lng": "106.384098", "lat": "29.610913\n"}, {"lng": "106.384285", "lat": "29.610855\n"}, {"lng": "106.385345", "lat": "29.610528\n"}, {"lng": "106.38565", "lat": "29.610451\n"}, {"lng": "106.38565", "lat": "29.610451\n"}, {"lng": "106.385915", "lat": "29.610401\n"}, {"lng": "106.386206", "lat": "29.610345\n"}, {"lng": "106.386226", "lat": "29.610335\n"}, {"lng": "106.386403", "lat": "29.6103\n"}, {"lng": "106.38658", "lat": "29.61027\n"}, {"lng": "106.386611", "lat": "29.610255\n"}, {"lng": "106.386675", "lat": "29.610243\n"}, {"lng": "106.386825", "lat": "29.610236\n"}, {"lng": "106.386991", "lat": "29.610215\n"}, {"lng": "106.387395", "lat": "29.610166\n"}, {"lng": "106.387485", "lat": "29.610156\n"}, {"lng": "106.387591", "lat": "29.610146\n"}, {"lng": "106.387591", "lat": "29.610146\n"}, {"lng": "106.387638", "lat": "29.610136\n"}, {"lng": "106.38778", "lat": "29.610118\n"}, {"lng": "106.387863", "lat": "29.610113\n"}, {"lng": "106.388031", "lat": "29.610101\n"}, {"lng": "106.388351", "lat": "29.610085\n"}, {"lng": "106.389061", "lat": "29.610033\n"}, {"lng": "106.389386", "lat": "29.609993\n"}, {"lng": "106.389428", "lat": "29.609978\n"}, {"lng": "106.389523", "lat": "29.609993\n"}, {"lng": "106.389571", "lat": "29.61\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.389993", "lat": "29.610195\n"}, {"lng": "106.435588", "lat": "29.605548\n"}, {"lng": "106.438256", "lat": "29.605048\n"}, {"lng": "106.439735", "lat": "29.604535\n"}, {"lng": "106.443626", "lat": "29.603025\n"}, {"lng": "106.4472", "lat": "29.601625\n"}, {"lng": "106.451066", "lat": "29.600068\n"}, {"lng": "106.454213", "lat": "29.598905\n"}, {"lng": "106.45434", "lat": "29.59888\n"}, {"lng": "106.454888", "lat": "29.598818\n"}, {"lng": "106.456268", "lat": "29.59885\n"}, {"lng": "106.457346", "lat": "29.598828\n"}, {"lng": "106.457583", "lat": "29.5988\n"}, {"lng": "106.458478", "lat": "29.598606\n"}, {"lng": "106.459485", "lat": "29.598228\n"}, {"lng": "106.461946", "lat": "29.596961\n"}, {"lng": "106.463806", "lat": "29.595875\n"}, {"lng": "106.46479", "lat": "29.595176\n"}, {"lng": "106.465008", "lat": "29.595086\n"}, {"lng": "106.465338", "lat": "29.59501\n"}, {"lng": "106.465613", "lat": "29.594993\n"}, {"lng": "106.466701", "lat": "29.59499\n"}, {"lng": "106.467031", "lat": "29.59493\n"}, {"lng": "106.4674", "lat": "29.594861\n"}, {"lng": "106.467635", "lat": "29.594811\n"}, {"lng": "106.468015", "lat": "29.594733\n"}, {"lng": "106.468356", "lat": "29.594663\n"}, {"lng": "106.468688", "lat": "29.594606\n"}, {"lng": "106.469243", "lat": "29.594496\n"}, {"lng": "106.4697", "lat": "29.594405\n"}, {"lng": "106.470393", "lat": "29.594256\n"}, {"lng": "106.470938", "lat": "29.594128\n"}, {"lng": "106.471188", "lat": "29.594086\n"}, {"lng": "106.471315", "lat": "29.59407\n"}, {"lng": "106.471315", "lat": "29.59407\n"}, {"lng": "106.471381", "lat": "29.593996\n"}, {"lng": "106.471381", "lat": "29.593996\n"}, {"lng": "106.471381", "lat": "29.593996\n"}, {"lng": "106.471381", "lat": "29.593996\n"}, {"lng": "106.471381", "lat": "29.593996\n"}, {"lng": "106.471016", "lat": "29.59573\n"}, {"lng": "106.471043", "lat": "29.59598\n"}, {"lng": "106.471066", "lat": "29.596046\n"}, {"lng": "106.471141", "lat": "29.596221\n"}, {"lng": "106.47149", "lat": "29.596728\n"}, {"lng": "106.471711", "lat": "29.597083\n"}, {"lng": "106.471793", "lat": "29.597168\n"}, {"lng": "106.471921", "lat": "29.597321\n"}, {"lng": "106.472008", "lat": "29.59745\n"}, {"lng": "106.473231", "lat": "29.599268\n"}, {"lng": "106.474456", "lat": "29.600981\n"}, {"lng": "106.476253", "lat": "29.603555\n"}, {"lng": "106.478031", "lat": "29.605808\n"}, {"lng": "106.478705", "lat": "29.606413\n"}, {"lng": "106.479531", "lat": "29.606973\n"}, {"lng": "106.479635", "lat": "29.607038\n"}, {"lng": "106.48009", "lat": "29.607296\n"}, {"lng": "106.4814", "lat": "29.607835\n"}, {"lng": "106.483045", "lat": "29.608393\n"}, {"lng": "106.484661", "lat": "29.608958\n"}, {"lng": "106.486753", "lat": "29.609663\n"}, {"lng": "106.488121", "lat": "29.610041\n"}, {"lng": "106.488623", "lat": "29.610021\n"}, {"lng": "106.488958", "lat": "29.609928\n"}, {"lng": "106.489265", "lat": "29.609778\n"}, {"lng": "106.489535", "lat": "29.609585\n"}, {"lng": "106.489755", "lat": "29.609358\n"}, {"lng": "106.489908", "lat": "29.609111\n"}, {"lng": "106.490006", "lat": "29.608851\n"}, {"lng": "106.49004", "lat": "29.608458\n"}, {"lng": "106.490031", "lat": "29.60833\n"}, {"lng": "106.489563", "lat": "29.606326\n"}, {"lng": "106.489528", "lat": "29.606178\n"}, {"lng": "106.489513", "lat": "29.606031\n"}, {"lng": "106.48948", "lat": "29.604848\n"}, {"lng": "106.48942", "lat": "29.604678\n"}, {"lng": "106.489378", "lat": "29.604641\n"}, {"lng": "106.489325", "lat": "29.604611\n"}, {"lng": "106.489313", "lat": "29.604593\n"}, {"lng": "106.48927", "lat": "29.60456\n"}, {"lng": "106.489196", "lat": "29.604556\n"}, {"lng": "106.489078", "lat": "29.60457\n"}, {"lng": "106.48942", "lat": "29.60452\n"}, {"lng": "106.489513", "lat": "29.604593\n"}, {"lng": "106.489671", "lat": "29.604805\n"}, {"lng": "106.489826", "lat": "29.605506\n"}, {"lng": "106.489901", "lat": "29.605845\n"}, {"lng": "106.489911", "lat": "29.605966\n"}, {"lng": "106.489981", "lat": "29.606478\n"}, {"lng": "106.490048", "lat": "29.606725\n"}, {"lng": "106.490123", "lat": "29.607035\n"}, {"lng": "106.490426", "lat": "29.608278\n"}, {"lng": "106.49082", "lat": "29.60894\n"}, {"lng": "106.492993", "lat": "29.611308\n"}, {"lng": "106.493921", "lat": "29.611998\n"}, {"lng": "106.49428", "lat": "29.612191\n"}, {"lng": "106.496546", "lat": "29.613038\n"}, {"lng": "106.499858", "lat": "29.614171\n"}, {"lng": "106.501808", "lat": "29.614551\n"}, {"lng": "106.506008", "lat": "29.614793\n"}, {"lng": "106.511356", "lat": "29.615113\n"}, {"lng": "106.51573", "lat": "29.615883\n"}, {"lng": "106.52062", "lat": "29.6174\n"}, {"lng": "106.521103", "lat": "29.61761\n"}, {"lng": "106.523751", "lat": "29.618693\n"}, {"lng": "106.524405", "lat": "29.6188\n"}, {"lng": "106.525161", "lat": "29.61881\n"}, {"lng": "106.525318", "lat": "29.618796\n"}, {"lng": "106.526193", "lat": "29.618633\n"}, {"lng": "106.528783", "lat": "29.617955\n"}, {"lng": "106.5296", "lat": "29.617983\n"}, {"lng": "106.530508", "lat": "29.618173\n"}, {"lng": "106.530946", "lat": "29.618333\n"}, {"lng": "106.536373", "lat": "29.621093\n"}, {"lng": "106.538231", "lat": "29.621951\n"}, {"lng": "106.539586", "lat": "29.622285\n"}, {"lng": "106.541451", "lat": "29.622491\n"}, {"lng": "106.547163", "lat": "29.62288\n"}, {"lng": "106.551135", "lat": "29.62318\n"}, {"lng": "106.551746", "lat": "29.623071\n"}, {"lng": "106.552366", "lat": "29.622858\n"}, {"lng": "106.552928", "lat": "29.622525\n"}, {"lng": "106.553408", "lat": "29.622078\n"}, {"lng": "106.553761", "lat": "29.621568\n"}, {"lng": "106.553971", "lat": "29.621085\n"}, {"lng": "106.55433", "lat": "29.619071\n"}, {"lng": "106.554345", "lat": "29.61893\n"}, {"lng": "106.55461", "lat": "29.617645\n"}, {"lng": "106.555123", "lat": "29.616488\n"}, {"lng": "106.555801", "lat": "29.615525\n"}, {"lng": "106.556685", "lat": "29.614673\n"}, {"lng": "106.557566", "lat": "29.614041\n"}, {"lng": "106.558643", "lat": "29.613508\n"}, {"lng": "106.559913", "lat": "29.613148\n"}, {"lng": "106.565655", "lat": "29.611973\n"}, {"lng": "106.574231", "lat": "29.609888\n"}, {"lng": "106.581846", "lat": "29.606735\n"}, {"lng": "106.589951", "lat": "29.603261\n"}, {"lng": "106.594541", "lat": "29.6011\n"}, {"lng": "106.5959", "lat": "29.60005\n"}, {"lng": "106.596643", "lat": "29.599225\n"}, {"lng": "106.597645", "lat": "29.597795\n"}, {"lng": "106.598491", "lat": "29.595783\n"}, {"lng": "106.599025", "lat": "29.593788\n"}, {"lng": "106.599518", "lat": "29.591826\n"}, {"lng": "106.599483", "lat": "29.591545\n"}, {"lng": "106.599243", "lat": "29.590313\n"}, {"lng": "106.599315", "lat": "29.589813\n"}, {"lng": "106.599588", "lat": "29.588765\n"}, {"lng": "106.600148", "lat": "29.586796\n"}, {"lng": "106.600188", "lat": "29.586675\n"}, {"lng": "106.600201", "lat": "29.58652\n"}, {"lng": "106.600196", "lat": "29.586075\n"}, {"lng": "106.60011", "lat": "29.584358\n"}, {"lng": "106.600033", "lat": "29.584201\n"}, {"lng": "106.599591", "lat": "29.583591\n"}, {"lng": "106.59953", "lat": "29.583356\n"}, {"lng": "106.599535", "lat": "29.58319\n"}, {"lng": "106.599583", "lat": "29.582196\n"}, {"lng": "106.59954", "lat": "29.582101\n"}, {"lng": "106.599541", "lat": "29.58202\n"}, {"lng": "106.599566", "lat": "29.58186\n"}, {"lng": "106.599556", "lat": "29.58143\n"}, {"lng": "106.599531", "lat": "29.581238\n"}, {"lng": "106.59942", "lat": "29.580988\n"}, {"lng": "106.599075", "lat": "29.580548\n"}, {"lng": "106.598998", "lat": "29.580371\n"}, {"lng": "106.598826", "lat": "29.580243\n"}, {"lng": "106.598598", "lat": "29.580171\n"}, {"lng": "106.598381", "lat": "29.580156\n"}, {"lng": "106.598215", "lat": "29.580195\n"}, {"lng": "106.598066", "lat": "29.580266\n"}, {"lng": "106.597168", "lat": "29.580861\n"}, {"lng": "106.5971", "lat": "29.580881\n"}, {"lng": "106.596883", "lat": "29.580918\n"}, {"lng": "106.596485", "lat": "29.58094\n"}, {"lng": "106.596395", "lat": "29.580918\n"}, {"lng": "106.596351", "lat": "29.580896\n"}, {"lng": "106.596285", "lat": "29.580825\n"}, {"lng": "106.596246", "lat": "29.580695\n"}, {"lng": "106.596253", "lat": "29.580378\n"}, {"lng": "106.596355", "lat": "29.579646\n"}, {"lng": "106.596563", "lat": "29.579251\n"}, {"lng": "106.597333", "lat": "29.578206\n"}, {"lng": "106.597531", "lat": "29.578023\n"}, {"lng": "106.597761", "lat": "29.577653\n"}, {"lng": "106.597776", "lat": "29.5775\n"}, {"lng": "106.597778", "lat": "29.577413\n"}, {"lng": "106.597756", "lat": "29.577235\n"}, {"lng": "106.597618", "lat": "29.5769\n"}, {"lng": "106.597361", "lat": "29.576315\n"}, {"lng": "106.597266", "lat": "29.57608\n"}, {"lng": "106.597143", "lat": "29.576006\n"}, {"lng": "106.597116", "lat": "29.575966\n"}, {"lng": "106.597083", "lat": "29.57593\n"}, {"lng": "106.597056", "lat": "29.575915\n"}, {"lng": "106.596976", "lat": "29.575886\n"}, {"lng": "106.596916", "lat": "29.575878\n"}, {"lng": "106.596776", "lat": "29.575915\n"}, {"lng": "106.596406", "lat": "29.576011\n"}, {"lng": "106.596253", "lat": "29.576018\n"}, {"lng": "106.59586", "lat": "29.575971\n"}, {"lng": "106.595778", "lat": "29.575956\n"}, {"lng": "106.595226", "lat": "29.575818\n"}, {"lng": "106.595013", "lat": "29.575741\n"}, {"lng": "106.594976", "lat": "29.575726\n"}, {"lng": "106.594956", "lat": "29.575711\n"}, {"lng": "106.594896", "lat": "29.575681\n"}, {"lng": "106.594661", "lat": "29.575591\n"}, {"lng": "106.59453", "lat": "29.575545\n"}, {"lng": "106.594498", "lat": "29.575518\n"}, {"lng": "106.594478", "lat": "29.575486\n"}, {"lng": "106.59447", "lat": "29.575451\n"}, {"lng": "106.59447", "lat": "29.57541\n"}, {"lng": "106.594483", "lat": "29.575275\n"}, {"lng": "106.594473", "lat": "29.575185\n"}, {"lng": "106.594428", "lat": "29.57513\n"}, {"lng": "106.594391", "lat": "29.575121\n"}, {"lng": "106.59435", "lat": "29.575125\n"}, {"lng": "106.594305", "lat": "29.575135\n"}, {"lng": "106.594198", "lat": "29.575166\n"}, {"lng": "106.593661", "lat": "29.575371\n"}, {"lng": "106.593606", "lat": "29.575411\n"}, {"lng": "106.593476", "lat": "29.575548\n"}, {"lng": "106.593363", "lat": "29.575676\n"}, {"lng": "106.59325", "lat": "29.575738\n"}, {"lng": "106.593176", "lat": "29.57576\n"}, {"lng": "106.592536", "lat": "29.57602\n"}, {"lng": "106.592505", "lat": "29.576071\n"}, {"lng": "106.592468", "lat": "29.576196\n"}, {"lng": "106.592301", "lat": "29.576678\n"}, {"lng": "106.592231", "lat": "29.576746\n"}, {"lng": "106.592063", "lat": "29.576848\n"}, {"lng": "106.591801", "lat": "29.576965\n"}, {"lng": "106.591715", "lat": "29.57698\n"}, {"lng": "106.591633", "lat": "29.57697\n"}, {"lng": "106.591563", "lat": "29.57694\n"}, {"lng": "106.591481", "lat": "29.576833\n"}, {"lng": "106.591441", "lat": "29.576718\n"}, {"lng": "106.591441", "lat": "29.57665\n"}, {"lng": "106.59147", "lat": "29.576533\n"}, {"lng": "106.591456", "lat": "29.576468\n"}, {"lng": "106.591225", "lat": "29.575853\n"}, {"lng": "106.591078", "lat": "29.575711\n"}, {"lng": "106.590995", "lat": "29.575673\n"}, {"lng": "106.590653", "lat": "29.575616\n"}, {"lng": "106.590346", "lat": "29.575651\n"}, {"lng": "106.589585", "lat": "29.575773\n"}, {"lng": "106.58941", "lat": "29.57574\n"}, {"lng": "106.588855", "lat": "29.575533\n"}, {"lng": "106.58867", "lat": "29.575393\n"}, {"lng": "106.588263", "lat": "29.57508\n"}, {"lng": "106.58818", "lat": "29.575058\n"}, {"lng": "106.588093", "lat": "29.575065\n"}, {"lng": "106.588011", "lat": "29.575108\n"}, {"lng": "106.587836", "lat": "29.575231\n"}, {"lng": "106.587395", "lat": "29.575621\n"}, {"lng": "106.587358", "lat": "29.575683\n"}, {"lng": "106.587353", "lat": "29.575735\n"}, {"lng": "106.58738", "lat": "29.575775\n"}, {"lng": "106.587416", "lat": "29.575803\n"}, {"lng": "106.587458", "lat": "29.575811\n"}, {"lng": "106.587495", "lat": "29.575813\n"}, {"lng": "106.587595", "lat": "29.575806\n"}, {"lng": "106.587818", "lat": "29.575816\n"}, {"lng": "106.587845", "lat": "29.575825\n"}, {"lng": "106.587845", "lat": "29.575825\n"}, {"lng": "106.587845", "lat": "29.575825"}]}
\ No newline at end of file
data/m300Tools/GPSLines/6_先涛的车轨迹(短).txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.279711", "lat": "29.585448\n"}, {"lng": "106.287903", "lat": "29.586623\n"}, {"lng": "106.289041", "lat": "29.586608\n"}, {"lng": "106.293958", "lat": "29.586631\n"}, {"lng": "106.296643", "lat": "29.586603\n"}, {"lng": "106.29702", "lat": "29.586588\n"}, {"lng": "106.297076", "lat": "29.586625\n"}, {"lng": "106.297116", "lat": "29.586675\n"}, {"lng": "106.297148", "lat": "29.58674\n"}, {"lng": "106.297161", "lat": "29.586818\n"}, {"lng": "106.297168", "lat": "29.586906\n"}, {"lng": "106.297275", "lat": "29.58793\n"}, {"lng": "106.297461", "lat": "29.588408\n"}, {"lng": "106.297783", "lat": "29.588835\n"}, {"lng": "106.298863", "lat": "29.589848\n"}, {"lng": "106.299571", "lat": "29.59043\n"}, {"lng": "106.30007", "lat": "29.590666\n"}, {"lng": "106.300655", "lat": "29.59083\n"}, {"lng": "106.301408", "lat": "29.59091\n"}, {"lng": "106.301695", "lat": "29.590925\n"}, {"lng": "106.303111", "lat": "29.590928\n"}, {"lng": "106.30319", "lat": "29.590958\n"}, {"lng": "106.30325", "lat": "29.591001\n"}, {"lng": "106.303288", "lat": "29.59106\n"}, {"lng": "106.303306", "lat": "29.591125\n"}, {"lng": "106.303311", "lat": "29.591196\n"}, {"lng": "106.303321", "lat": "29.59202\n"}, {"lng": "106.303418", "lat": "29.594665\n"}, {"lng": "106.303493", "lat": "29.596323\n"}, {"lng": "106.30351", "lat": "29.597693\n"}]}
\ No newline at end of file
data/m300Tools/GPSLines/7_gpsLine1.txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.597495", "lat": "29.715498\n"}, {"lng": "106.597495", "lat": "29.715498\n"}, {"lng": "106.597495", "lat": "29.715498\n"}, {"lng": "106.597495", "lat": "29.715498\n"}, {"lng": "106.597258", "lat": "29.715191\n"}, {"lng": "106.597231", "lat": "29.715181\n"}, {"lng": "106.597195", "lat": "29.715178\n"}, {"lng": "106.597143", "lat": "29.71518\n"}, {"lng": "106.597008", "lat": "29.715185\n"}, {"lng": "106.596721", "lat": "29.715243\n"}, {"lng": "106.596056", "lat": "29.71545\n"}, {"lng": "106.595986", "lat": "29.715498\n"}, {"lng": "106.595931", "lat": "29.715558\n"}, {"lng": "106.5959", "lat": "29.715636\n"}, {"lng": "106.595863", "lat": "29.715915\n"}, {"lng": "106.59576", "lat": "29.71727\n"}, {"lng": "106.595735", "lat": "29.71755\n"}, {"lng": "106.595878", "lat": "29.719105\n"}, {"lng": "106.596391", "lat": "29.720531\n"}, {"lng": "106.596681", "lat": "29.721093\n"}, {"lng": "106.598001", "lat": "29.723316\n"}, {"lng": "106.598043", "lat": "29.723341\n"}, {"lng": "106.598103", "lat": "29.723356\n"}, {"lng": "106.59817", "lat": "29.723376\n"}, {"lng": "106.59835", "lat": "29.723391\n"}, {"lng": "106.59857", "lat": "29.723391\n"}, {"lng": "106.602948", "lat": "29.72335\n"}, {"lng": "106.604158", "lat": "29.723346\n"}, {"lng": "106.606105", "lat": "29.723356\n"}, {"lng": "106.608568", "lat": "29.723358\n"}, {"lng": "106.6087", "lat": "29.723363\n"}, {"lng": "106.6087", "lat": "29.723363\n"}, {"lng": "106.609365", "lat": "29.723346\n"}, {"lng": "106.609385", "lat": "29.723343\n"}, {"lng": "106.609385", "lat": "29.723343\n"}, {"lng": "106.609868", "lat": "29.723355\n"}, {"lng": "106.613723", "lat": "29.723353\n"}, {"lng": "106.614495", "lat": "29.723273\n"}, {"lng": "106.615505", "lat": "29.723008\n"}, {"lng": "106.615505", "lat": "29.723008\n"}, {"lng": "106.62447", "lat": "29.72212\n"}, {"lng": "106.625515", "lat": "29.722123\n"}, {"lng": "106.625515", "lat": "29.722123\n"}, {"lng": "106.632141", "lat": "29.721476\n"}, {"lng": "106.632235", "lat": "29.721426\n"}, {"lng": "106.632291", "lat": "29.721336\n"}, {"lng": "106.632326", "lat": "29.721255\n"}, {"lng": "106.632323", "lat": "29.721166\n"}, {"lng": "106.632263", "lat": "29.720966\n"}, {"lng": "106.631975", "lat": "29.719906\n"}, {"lng": "106.630851", "lat": "29.716403\n"}, {"lng": "106.631013", "lat": "29.716293\n"}, {"lng": "106.631165", "lat": "29.716255\n"}, {"lng": "106.631915", "lat": "29.715973\n"}, {"lng": "106.632115", "lat": "29.71581\n"}, {"lng": "106.63227", "lat": "29.715611\n"}, {"lng": "106.632333", "lat": "29.715418\n"}, {"lng": "106.632333", "lat": "29.715213\n"}, {"lng": "106.632271", "lat": "29.715005\n"}, {"lng": "106.631836", "lat": "29.713595\n"}, {"lng": "106.631435", "lat": "29.712523\n"}, {"lng": "106.631308", "lat": "29.712408\n"}, {"lng": "106.631201", "lat": "29.712295\n"}, {"lng": "106.631171", "lat": "29.712231\n"}, {"lng": "106.63116", "lat": "29.712165\n"}, {"lng": "106.631158", "lat": "29.712096\n"}, {"lng": "106.631136", "lat": "29.711848\n"}, {"lng": "106.630786", "lat": "29.710756\n"}, {"lng": "106.629801", "lat": "29.707925\n"}, {"lng": "106.629801", "lat": "29.707925\n"}, {"lng": "106.629801", "lat": "29.707925\n"}, {"lng": "106.628816", "lat": "29.704841\n"}, {"lng": "106.628831", "lat": "29.70477\n"}, {"lng": "106.628873", "lat": "29.704711\n"}, {"lng": "106.628938", "lat": "29.704668\n"}, {"lng": "106.629025", "lat": "29.704651\n"}, {"lng": "106.629123", "lat": "29.704651\n"}, {"lng": "106.630831", "lat": "29.70468\n"}, {"lng": "106.632243", "lat": "29.704356\n"}, {"lng": "106.633906", "lat": "29.703646\n"}, {"lng": "106.635908", "lat": "29.702735\n"}, {"lng": "106.639518", "lat": "29.701456\n"}, {"lng": "106.640381", "lat": "29.701475\n"}, {"lng": "106.640603", "lat": "29.70151\n"}, {"lng": "106.641648", "lat": "29.701748\n"}, {"lng": "106.644295", "lat": "29.702938\n"}, {"lng": "106.644538", "lat": "29.703033\n"}, {"lng": "106.64464", "lat": "29.703038\n"}, {"lng": "106.644741", "lat": "29.703023\n"}, {"lng": "106.647585", "lat": "29.702196\n"}, {"lng": "106.647681", "lat": "29.702121\n"}, {"lng": "106.647763", "lat": "29.702031\n"}, {"lng": "106.647898", "lat": "29.701816\n"}, {"lng": "106.647966", "lat": "29.70157\n"}, {"lng": "106.647958", "lat": "29.701445\n"}, {"lng": "106.646828", "lat": "29.697065\n"}, {"lng": "106.644126", "lat": "29.689963\n"}, {"lng": "106.64176", "lat": "29.686225\n"}, {"lng": "106.638655", "lat": "29.682431\n"}, {"lng": "106.632641", "lat": "29.675176\n"}, {"lng": "106.628875", "lat": "29.669918\n"}, {"lng": "106.628273", "lat": "29.66877\n"}, {"lng": "106.624655", "lat": "29.661561\n"}, {"lng": "106.62259", "lat": "29.658756\n"}, {"lng": "106.618748", "lat": "29.65431\n"}, {"lng": "106.613693", "lat": "29.647371\n"}, {"lng": "106.608845", "lat": "29.640648\n"}, {"lng": "106.607166", "lat": "29.637853\n"}, {"lng": "106.606445", "lat": "29.63572\n"}, {"lng": "106.606165", "lat": "29.634108\n"}, {"lng": "106.60618", "lat": "29.631573\n"}, {"lng": "106.606673", "lat": "29.627206\n"}, {"lng": "106.60695", "lat": "29.61928\n"}, {"lng": "106.607138", "lat": "29.610996\n"}, {"lng": "106.606578", "lat": "29.604418\n"}, {"lng": "106.605823", "lat": "29.598575\n"}, {"lng": "106.604053", "lat": "29.593738\n"}, {"lng": "106.60236", "lat": "29.58983\n"}, {"lng": "106.602068", "lat": "29.589403\n"}, {"lng": "106.601778", "lat": "29.589135\n"}, {"lng": "106.601461", "lat": "29.588945\n"}, {"lng": "106.60107", "lat": "29.588793\n"}, {"lng": "106.600653", "lat": "29.58872\n"}, {"lng": "106.600198", "lat": "29.588718\n"}, {"lng": "106.599111", "lat": "29.588773\n"}, {"lng": "106.593851", "lat": "29.588923\n"}, {"lng": "106.591751", "lat": "29.588931\n"}, {"lng": "106.591641", "lat": "29.588973\n"}, {"lng": "106.591555", "lat": "29.589033\n"}, {"lng": "106.591486", "lat": "29.589106\n"}, {"lng": "106.591436", "lat": "29.589191\n"}, {"lng": "106.591405", "lat": "29.589286\n"}, {"lng": "106.591231", "lat": "29.590408\n"}, {"lng": "106.591223", "lat": "29.590531\n"}, {"lng": "106.591208", "lat": "29.592293\n"}, {"lng": "106.591495", "lat": "29.593398\n"}, {"lng": "106.591518", "lat": "29.593476\n"}, {"lng": "106.591518", "lat": "29.593476\n"}, {"lng": "106.591546", "lat": "29.593823\n"}, {"lng": "106.591515", "lat": "29.593871\n"}, {"lng": "106.59147", "lat": "29.593911\n"}, {"lng": "106.591413", "lat": "29.593945\n"}, {"lng": "106.591348", "lat": "29.593963\n"}, {"lng": "106.591273", "lat": "29.593976\n"}, {"lng": "106.590715", "lat": "29.59408\n"}, {"lng": "106.590285", "lat": "29.594135\n"}, {"lng": "106.590176", "lat": "29.594151\n"}, {"lng": "106.587883", "lat": "29.594633\n"}, {"lng": "106.587883", "lat": "29.594641\n"}, {"lng": "106.58583", "lat": "29.595106\n"}, {"lng": "106.585778", "lat": "29.59519\n"}, {"lng": "106.585751", "lat": "29.595281\n"}, {"lng": "106.585756", "lat": "29.595496\n"}, {"lng": "106.58588", "lat": "29.596118\n"}, {"lng": "106.585941", "lat": "29.596226\n"}, {"lng": "106.586123", "lat": "29.596411\n"}, {"lng": "106.586503", "lat": "29.596635\n"}, {"lng": "106.586975", "lat": "29.59696\n"}, {"lng": "106.587038", "lat": "29.597063\n"}, {"lng": "106.58711", "lat": "29.597273\n"}, {"lng": "106.587143", "lat": "29.59769\n"}, {"lng": "106.587171", "lat": "29.599486\n"}, {"lng": "106.587098", "lat": "29.599621\n"}, {"lng": "106.58692", "lat": "29.599823\n"}, {"lng": "106.586703", "lat": "29.599965\n"}, {"lng": "106.586316", "lat": "29.600108\n"}, {"lng": "106.583935", "lat": "29.600895\n"}, {"lng": "106.583715", "lat": "29.600953\n"}, {"lng": "106.583641", "lat": "29.600951\n"}, {"lng": "106.583568", "lat": "29.600925\n"}, {"lng": "106.583503", "lat": "29.600876\n"}, {"lng": "106.583451", "lat": "29.600808\n"}, {"lng": "106.58342", "lat": "29.600708\n"}, {"lng": "106.582803", "lat": "29.598305\n"}, {"lng": "106.582431", "lat": "29.596901\n"}, {"lng": "106.580938", "lat": "29.592926\n"}, {"lng": "106.580518", "lat": "29.590686\n"}, {"lng": "106.580463", "lat": "29.59025\n"}, {"lng": "106.580446", "lat": "29.58901\n"}, {"lng": "106.580448", "lat": "29.58523\n"}, {"lng": "106.580383", "lat": "29.58225\n"}, {"lng": "106.580535", "lat": "29.58181\n"}, {"lng": "106.580938", "lat": "29.581141\n"}, {"lng": "106.581355", "lat": "29.580713\n"}, {"lng": "106.581948", "lat": "29.580281\n"}, {"lng": "106.58283", "lat": "29.579855\n"}, {"lng": "106.583291", "lat": "29.57967\n"}, {"lng": "106.583413", "lat": "29.579613\n"}, {"lng": "106.583413", "lat": "29.579613\n"}, {"lng": "106.585158", "lat": "29.577626\n"}, {"lng": "106.586611", "lat": "29.576251\n"}, {"lng": "106.587248", "lat": "29.575718\n"}, {"lng": "106.587286", "lat": "29.575708\n"}, {"lng": "106.587328", "lat": "29.575711\n"}, {"lng": "106.587368", "lat": "29.575726\n"}, {"lng": "106.587458", "lat": "29.575771\n"}, {"lng": "106.587538", "lat": "29.575788\n"}, {"lng": "106.587618", "lat": "29.575786\n"}, {"lng": "106.587833", "lat": "29.575755\n"}, {"lng": "106.587853", "lat": "29.57572\n"}, {"lng": "106.587885", "lat": "29.575676\n"}, {"lng": "106.58792", "lat": "29.575621\n"}, {"lng": "106.58792", "lat": "29.575621\n"}, {"lng": "106.58792", "lat": "29.575621\n"}, {"lng": "106.58792", "lat": "29.575621\n"}, {"lng": "106.58792", "lat": "29.575621\n"}, {"lng": "106.58792", "lat": "29.575621\n"}, {"lng": "106.58792", "lat": "29.575621"}]}
\ No newline at end of file
data/m300Tools/GPSLines/8_gpsLine2.txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.599021", "lat": "29.58118\n"}, {"lng": "106.599021", "lat": "29.58118\n"}, {"lng": "106.598375", "lat": "29.580248\n"}, {"lng": "106.598233", "lat": "29.580251\n"}, {"lng": "106.598086", "lat": "29.580311\n"}, {"lng": "106.598025", "lat": "29.580328\n"}, {"lng": "106.597785", "lat": "29.580461\n"}, {"lng": "106.597433", "lat": "29.580715\n"}, {"lng": "106.59717", "lat": "29.580863\n"}, {"lng": "106.596965", "lat": "29.580923\n"}, {"lng": "106.596686", "lat": "29.580965\n"}, {"lng": "106.596516", "lat": "29.580965\n"}, {"lng": "106.596516", "lat": "29.580965\n"}, {"lng": "106.596293", "lat": "29.580956\n"}, {"lng": "106.59627", "lat": "29.58092\n"}, {"lng": "106.59626", "lat": "29.580863\n"}, {"lng": "106.596256", "lat": "29.580786\n"}, {"lng": "106.596293", "lat": "29.58042\n"}, {"lng": "106.59639", "lat": "29.579695\n"}, {"lng": "106.59648", "lat": "29.579493\n"}, {"lng": "106.596866", "lat": "29.57891\n"}, {"lng": "106.5976", "lat": "29.577858\n"}, {"lng": "106.597736", "lat": "29.577583\n"}, {"lng": "106.597738", "lat": "29.577518\n"}, {"lng": "106.597733", "lat": "29.57715\n"}, {"lng": "106.597666", "lat": "29.576971\n"}, {"lng": "106.597101", "lat": "29.575966\n"}, {"lng": "106.597026", "lat": "29.575928\n"}, {"lng": "106.596896", "lat": "29.575918\n"}, {"lng": "106.596751", "lat": "29.575935\n"}, {"lng": "106.596655", "lat": "29.575958\n"}, {"lng": "106.596513", "lat": "29.575993\n"}, {"lng": "106.596305", "lat": "29.576015\n"}, {"lng": "106.59592", "lat": "29.576016\n"}, {"lng": "106.595193", "lat": "29.575835\n"}, {"lng": "106.594995", "lat": "29.575755\n"}, {"lng": "106.594668", "lat": "29.5756\n"}, {"lng": "106.594515", "lat": "29.575545\n"}, {"lng": "106.594465", "lat": "29.575485\n"}, {"lng": "106.59446", "lat": "29.575448\n"}, {"lng": "106.59446", "lat": "29.575385\n"}, {"lng": "106.594466", "lat": "29.575341\n"}, {"lng": "106.594483", "lat": "29.575148\n"}, {"lng": "106.594466", "lat": "29.575131\n"}, {"lng": "106.594435", "lat": "29.575125\n"}, {"lng": "106.594396", "lat": "29.575126\n"}, {"lng": "106.59435", "lat": "29.575135\n"}, {"lng": "106.594291", "lat": "29.57515\n"}, {"lng": "106.593961", "lat": "29.575268\n"}, {"lng": "106.593655", "lat": "29.57541\n"}, {"lng": "106.593603", "lat": "29.57545\n"}, {"lng": "106.593445", "lat": "29.575618\n"}, {"lng": "106.593338", "lat": "29.57573\n"}, {"lng": "106.593236", "lat": "29.57578\n"}, {"lng": "106.592581", "lat": "29.576023\n"}, {"lng": "106.592536", "lat": "29.576076\n"}, {"lng": "106.592508", "lat": "29.576135\n"}, {"lng": "106.592493", "lat": "29.576208\n"}, {"lng": "106.592476", "lat": "29.576285\n"}, {"lng": "106.592346", "lat": "29.57666\n"}, {"lng": "106.59228", "lat": "29.576743\n"}, {"lng": "106.59219", "lat": "29.576816\n"}, {"lng": "106.591973", "lat": "29.576921\n"}, {"lng": "106.591771", "lat": "29.576991\n"}, {"lng": "106.591618", "lat": "29.576983\n"}, {"lng": "106.591565", "lat": "29.576953\n"}, {"lng": "106.591531", "lat": "29.576908\n"}, {"lng": "106.591508", "lat": "29.576856\n"}, {"lng": "106.59149", "lat": "29.57673\n"}, {"lng": "106.591485", "lat": "29.576293\n"}, {"lng": "106.59144", "lat": "29.576208\n"}, {"lng": "106.591411", "lat": "29.576081\n"}, {"lng": "106.59126", "lat": "29.575768\n"}, {"lng": "106.591028", "lat": "29.575528\n"}, {"lng": "106.590843", "lat": "29.57537\n"}, {"lng": "106.590715", "lat": "29.575391\n"}, {"lng": "106.59059", "lat": "29.575416\n"}, {"lng": "106.590465", "lat": "29.575441\n"}, {"lng": "106.590355", "lat": "29.575483\n"}, {"lng": "106.589895", "lat": "29.575628\n"}, {"lng": "106.589628", "lat": "29.575645\n"}, {"lng": "106.589491", "lat": "29.575616\n"}, {"lng": "106.589208", "lat": "29.575585\n"}, {"lng": "106.588721", "lat": "29.575371\n"}, {"lng": "106.588195", "lat": "29.575006\n"}, {"lng": "106.588145", "lat": "29.575001\n"}, {"lng": "106.58803", "lat": "29.57503\n"}, {"lng": "106.587971", "lat": "29.575073\n"}, {"lng": "106.587826", "lat": "29.575193\n"}, {"lng": "106.58736", "lat": "29.575653\n"}, {"lng": "106.58735", "lat": "29.575705\n"}, {"lng": "106.587358", "lat": "29.575745\n"}, {"lng": "106.58738", "lat": "29.575771\n"}, {"lng": "106.587411", "lat": "29.575786\n"}, {"lng": "106.587455", "lat": "29.575795\n"}, {"lng": "106.587495", "lat": "29.575796\n"}, {"lng": "106.587571", "lat": "29.575791\n"}, {"lng": "106.587713", "lat": "29.575773\n"}, {"lng": "106.58799", "lat": "29.575745\n"}, {"lng": "106.58799", "lat": "29.575745\n"}, {"lng": "106.58799", "lat": "29.575745\n"}]}
\ No newline at end of file
data/m300Tools/GPSLines/9_gpsLine3.txt
0 → 100644
View file @
f6a8a2c6
{"name": "gpsLine", "GPSLine": [{"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.484645", "lat": "29.519863\n"}, {"lng": "106.498255", "lat": "29.51929\n"}, {"lng": "106.49839", "lat": "29.519245\n"}, {"lng": "106.498496", "lat": "29.519196\n"}, {"lng": "106.498686", "lat": "29.519095\n"}, {"lng": "106.498731", "lat": "29.519106\n"}, {"lng": "106.49879", "lat": "29.519121\n"}, {"lng": "106.498851", "lat": "29.519141\n"}, {"lng": "106.499026", "lat": "29.519215\n"}, {"lng": "106.499136", "lat": "29.519258\n"}, {"lng": "106.49923", "lat": "29.519415\n"}, {"lng": "106.499251", "lat": "29.519476\n"}, {"lng": "106.49952", "lat": "29.519686\n"}, {"lng": "106.500043", "lat": "29.520288\n"}, {"lng": "106.500173", "lat": "29.52039\n"}, {"lng": "106.500246", "lat": "29.520403\n"}, {"lng": "106.501561", "lat": "29.521333\n"}, {"lng": "106.502366", "lat": "29.52206\n"}, {"lng": "106.502606", "lat": "29.522266\n"}, {"lng": "106.502881", "lat": "29.522416\n"}, {"lng": "106.503096", "lat": "29.52248\n"}, {"lng": "106.50344", "lat": "29.522505\n"}, {"lng": "106.503656", "lat": "29.522483\n"}, {"lng": "106.50396", "lat": "29.52239\n"}, {"lng": "106.50414", "lat": "29.52232\n"}, {"lng": "106.504521", "lat": "29.522191\n"}, {"lng": "106.504866", "lat": "29.522156\n"}, {"lng": "106.506228", "lat": "29.52215\n"}, {"lng": "106.506621", "lat": "29.522256\n"}, {"lng": "106.507173", "lat": "29.522475\n"}, {"lng": "106.507423", "lat": "29.52261\n"}, {"lng": "106.507683", "lat": "29.522835\n"}, {"lng": "106.50822", "lat": "29.523151\n"}, {"lng": "106.509468", "lat": "29.52365\n"}, {"lng": "106.5102", "lat": "29.523761\n"}, {"lng": "106.511401", "lat": "29.523706\n"}, {"lng": "106.516661", "lat": "29.523321\n"}, {"lng": "106.520538", "lat": "29.523081\n"}, {"lng": "106.525145", "lat": "29.523038\n"}, {"lng": "106.530208", "lat": "29.52304\n"}, {"lng": "106.534585", "lat": "29.523023\n"}, {"lng": "106.536085", "lat": "29.522871\n"}, {"lng": "106.53838", "lat": "29.522366\n"}, {"lng": "106.538986", "lat": "29.522248\n"}, {"lng": "106.53921", "lat": "29.52228\n"}, {"lng": "106.539255", "lat": "29.522316\n"}, {"lng": "106.539286", "lat": "29.522361\n"}, {"lng": "106.539286", "lat": "29.52241\n"}, {"lng": "106.539268", "lat": "29.52246\n"}, {"lng": "106.539235", "lat": "29.522498\n"}, {"lng": "106.539196", "lat": "29.522511\n"}, {"lng": "106.539136", "lat": "29.522541\n"}, {"lng": "106.538613", "lat": "29.522701\n"}, {"lng": "106.537718", "lat": "29.522915\n"}, {"lng": "106.536041", "lat": "29.523331\n"}, {"lng": "106.535086", "lat": "29.523863\n"}, {"lng": "106.535016", "lat": "29.52399\n"}, {"lng": "106.535003", "lat": "29.524065\n"}, {"lng": "106.535001", "lat": "29.52414\n"}, {"lng": "106.535031", "lat": "29.524296\n"}, {"lng": "106.53507", "lat": "29.524366\n"}, {"lng": "106.535133", "lat": "29.524436\n"}, {"lng": "106.535296", "lat": "29.52455\n"}, {"lng": "106.535813", "lat": "29.524886\n"}, {"lng": "106.53595", "lat": "29.525051\n"}, {"lng": "106.535985", "lat": "29.525153\n"}, {"lng": "106.53598", "lat": "29.525195\n"}, {"lng": "106.53596", "lat": "29.525226\n"}, {"lng": "106.535921", "lat": "29.525256\n"}, {"lng": "106.535871", "lat": "29.52527\n"}, {"lng": "106.53581", "lat": "29.52526\n"}, {"lng": "106.535745", "lat": "29.525235\n"}, {"lng": "106.535548", "lat": "29.525113\n"}, {"lng": "106.535295", "lat": "29.52499\n"}, {"lng": "106.534181", "lat": "29.524505\n"}, {"lng": "106.534015", "lat": "29.524511\n"}, {"lng": "106.533921", "lat": "29.524543\n"}, {"lng": "106.533768", "lat": "29.524628\n"}, {"lng": "106.533665", "lat": "29.524743\n"}, {"lng": "106.53361", "lat": "29.524888\n"}, {"lng": "106.533585", "lat": "29.525051\n"}, {"lng": "106.533611", "lat": "29.525138\n"}, {"lng": "106.533673", "lat": "29.525208\n"}, {"lng": "106.533736", "lat": "29.525261\n"}, {"lng": "106.533976", "lat": "29.525435\n"}, {"lng": "106.534098", "lat": "29.525563\n"}, {"lng": "106.5341", "lat": "29.525606\n"}, {"lng": "106.534081", "lat": "29.525646\n"}, {"lng": "106.534018", "lat": "29.525793\n"}, {"lng": "106.534031", "lat": "29.525828\n"}, {"lng": "106.534056", "lat": "29.525858\n"}, {"lng": "106.534106", "lat": "29.525928\n"}, {"lng": "106.534096", "lat": "29.525956\n"}, {"lng": "106.534076", "lat": "29.525965\n"}, {"lng": "106.53405", "lat": "29.525968\n"}, {"lng": "106.53402", "lat": "29.525961\n"}, {"lng": "106.533986", "lat": "29.525936\n"}, {"lng": "106.533455", "lat": "29.525546\n"}, {"lng": "106.5332", "lat": "29.525413\n"}, {"lng": "106.532426", "lat": "29.525155\n"}, {"lng": "106.532353", "lat": "29.525163\n"}, {"lng": "106.53229", "lat": "29.5252\n"}, {"lng": "106.532241", "lat": "29.525253\n"}, {"lng": "106.532198", "lat": "29.525315\n"}, {"lng": "106.531586", "lat": "29.5269\n"}, {"lng": "106.531363", "lat": "29.52778\n"}, {"lng": "106.531326", "lat": "29.528746\n"}, {"lng": "106.531458", "lat": "29.529691\n"}, {"lng": "106.532046", "lat": "29.53156\n"}, {"lng": "106.53357", "lat": "29.535643\n"}, {"lng": "106.53374", "lat": "29.535928\n"}, {"lng": "106.534836", "lat": "29.5374\n"}, {"lng": "106.536893", "lat": "29.539351\n"}, {"lng": "106.538446", "lat": "29.540533\n"}, {"lng": "106.539238", "lat": "29.540896\n"}, {"lng": "106.540116", "lat": "29.541156\n"}, {"lng": "106.540788", "lat": "29.541235\n"}, {"lng": "106.541853", "lat": "29.541261\n"}, {"lng": "106.54615", "lat": "29.540981\n"}, {"lng": "106.549441", "lat": "29.540926\n"}, {"lng": "106.550593", "lat": "29.54118\n"}, {"lng": "106.551516", "lat": "29.541558\n"}, {"lng": "106.554295", "lat": "29.542755\n"}, {"lng": "106.555916", "lat": "29.543063\n"}, {"lng": "106.556861", "lat": "29.543186\n"}, {"lng": "106.560363", "lat": "29.54361\n"}, {"lng": "106.561361", "lat": "29.543498\n"}, {"lng": "106.562058", "lat": "29.543373\n"}, {"lng": "106.563295", "lat": "29.543205\n"}, {"lng": "106.564865", "lat": "29.543231\n"}, {"lng": "106.567205", "lat": "29.543681\n"}, {"lng": "106.571403", "lat": "29.544415\n"}, {"lng": "106.574481", "lat": "29.544786\n"}, {"lng": "106.574908", "lat": "29.544871\n"}, {"lng": "106.574951", "lat": "29.544865\n"}, {"lng": "106.574981", "lat": "29.54487\n"}, {"lng": "106.575065", "lat": "29.544883\n"}, {"lng": "106.575368", "lat": "29.544971\n"}, {"lng": "106.575446", "lat": "29.545\n"}, {"lng": "106.57792", "lat": "29.545733\n"}, {"lng": "106.57879", "lat": "29.545958\n"}, {"lng": "106.5819", "lat": "29.546685\n"}, {"lng": "106.582638", "lat": "29.546916\n"}, {"lng": "106.583336", "lat": "29.547221\n"}, {"lng": "106.584188", "lat": "29.5478\n"}, {"lng": "106.584356", "lat": "29.547933\n"}, {"lng": "106.584933", "lat": "29.548418\n"}, {"lng": "106.585056", "lat": "29.548348\n"}, {"lng": "106.585081", "lat": "29.548358\n"}, {"lng": "106.585181", "lat": "29.548448\n"}, {"lng": "106.58525", "lat": "29.54856\n"}, {"lng": "106.58583", "lat": "29.549613\n"}, {"lng": "106.586525", "lat": "29.551088\n"}, {"lng": "106.588258", "lat": "29.554658\n"}, {"lng": "106.589325", "lat": "29.556971\n"}, {"lng": "106.590013", "lat": "29.558385\n"}, {"lng": "106.590681", "lat": "29.560546\n"}, {"lng": "106.59077", "lat": "29.561608\n"}, {"lng": "106.590806", "lat": "29.563003\n"}, {"lng": "106.590851", "lat": "29.563895\n"}, {"lng": "106.590766", "lat": "29.566858\n"}, {"lng": "106.590591", "lat": "29.568281\n"}, {"lng": "106.589873", "lat": "29.572468\n"}, {"lng": "106.589526", "lat": "29.573176\n"}, {"lng": "106.588891", "lat": "29.574146\n"}, {"lng": "106.588333", "lat": "29.574741\n"}, {"lng": "106.587363", "lat": "29.575703\n"}, {"lng": "106.587371", "lat": "29.575726\n"}, {"lng": "106.58739", "lat": "29.575745\n"}, {"lng": "106.587408", "lat": "29.575756\n"}, {"lng": "106.587425", "lat": "29.575766\n"}, {"lng": "106.587478", "lat": "29.575786\n"}, {"lng": "106.587505", "lat": "29.575788\n"}, {"lng": "106.587645", "lat": "29.57578\n"}, {"lng": "106.58777", "lat": "29.575776\n"}, {"lng": "106.587808", "lat": "29.575805\n"}, {"lng": "106.587808", "lat": "29.575805\n"}, {"lng": "106.587808", "lat": "29.575805\n"}, {"lng": "106.587808", "lat": "29.575805\n"}]}
\ No newline at end of file
data/protocolTools/carData/M202003060520.json
View file @
f6a8a2c6
{
"time"
:
{
"dateTime"
:
"2020-05-15 11:41:18"
,
"date"
:
"2020-05-15"
,
"time"
:
"11:41:18"
},
"curDayTravel"
:
{
"todayTotalMilleage"
:
0
,
"todayTotalOil"
:
0
,
"todayTotalTime"
:
0
,
"theMilleage"
:
0
,
"theOil"
:
0
,
"theTime"
:
0
},
"travelData"
:
{
"totalMilleage"
:
262817
,
"totalOil"
:
24827
,
"totalTime"
:
15522
},
"event"
:
{
"threeRapid"
:
{
"totalRapidlyAccelerate"
:
14
,
"totalSharpSlowdown"
:
13
,
"totalSharpTurn"
:
13
}}}
{
"time"
:
{
"dateTime"
:
"2020-05-18 11:54:49"
,
"date"
:
"2020-05-18"
,
"time"
:
"11:54:49"
},
"curDayTravel"
:
{
"todayTotalMilleage"
:
20920
,
"todayTotalOil"
:
2020
,
"todayTotalTime"
:
1260
,
"theMilleage"
:
1000
,
"theOil"
:
100
,
"theTime"
:
60
},
"travelData"
:
{
"totalMilleage"
:
283737
,
"totalOil"
:
26847
,
"totalTime"
:
16782
},
"event"
:
{
"threeRapid"
:
{
"totalRapidlyAccelerate"
:
14
,
"totalSharpSlowdown"
:
13
,
"totalSharpTurn"
:
13
}}}
\ No newline at end of file
\ No newline at end of file
lib/protocol/m300/Alarm_protocol_m300.py
0 → 100644
View file @
f6a8a2c6
#encoding:utf-8
from
lib.protocol.m300.M300Base
import
M300Base
'''
定义报警协议类
'''
class
Alarm_protocol_m300
(
M300Base
):
def
__init__
(
self
,
waterCode
=
3
,
DEV_ID
=
"M121501010001"
,
encryptionType
=
0
,
alarmType
=
"0001"
,
data
=
{}):
super
()
.
__init__
()
# 不执行该方法,无法使用父类里面定义的属性
self
.
waterCode
=
waterCode
#消息流水号
self
.
DEV_ID
=
DEV_ID
#设备Id
self
.
encryptionType
=
encryptionType
# 消息属性里面的是否加密字段
self
.
alarmType
=
alarmType
if
len
(
data
)
==
0
:
self
.
GPSPkg
=
"14031b0e22160265b86206ed8c7002029402290000006e00016802988100000000000000"
self
.
GSMPkg
=
"0000000000"
self
.
CANStatus
=
"ffffffffffffffffffff00000000000000000000"
else
:
pass
#################################################
# 生成消息
#################################################
def
generateMsg
(
self
):
msg
=
self
.
IDENTIFY
FUNID
=
"0021"
#功能id
waterCode
=
self
.
int2hexStringByBytes
(
self
.
waterCode
,
2
)
#消息流水号
DEV_ID
=
self
.
devid2hexString
(
self
.
DEV_ID
)
#设备id
msgBody
=
self
.
getMsgBody
()
# 消息体
msgLen
=
int
(
len
(
msgBody
)
/
2
)
property
=
self
.
getMsgProperty
(
msgBodyLen
=
msgLen
,
encryptionType
=
self
.
encryptionType
)
checkCode
=
self
.
getCheckCode
(
FUNID
+
waterCode
+
DEV_ID
+
property
+
msgBody
)
msg
=
msg
+
FUNID
+
waterCode
+
DEV_ID
+
property
+
msgBody
+
checkCode
+
self
.
IDENTIFY
return
msg
#################################################
# 获取消息体
#################################################
def
getMsgBody
(
self
):
GPSPkg
=
self
.
GPSPkg
GSMPkg
=
self
.
GSMPkg
CANStatus
=
self
.
CANStatus
alarmContent
=
""
if
self
.
alarmType
==
"0001"
:
#汽车点火上报
extra
=
""
alarmContent
=
"0001"
+
self
.
int2hexStringByBytes
(
int
(
len
(
extra
)
/
2
))
+
extra
elif
self
.
alarmType
==
"0002"
:
#汽车熄火上报
extra
=
""
alarmContent
=
"0002"
+
self
.
int2hexStringByBytes
(
int
(
len
(
extra
)
/
2
))
+
extra
return
GPSPkg
+
GSMPkg
+
CANStatus
+
alarmContent
if
__name__
==
"__main__"
:
print
(
Alarm_protocol_m300
()
.
generateMsg
())
lib/protocol/m300/GPS_protocol_m300.py
View file @
f6a8a2c6
...
@@ -29,6 +29,17 @@ class GPS_protocol_m300(M300Base):
...
@@ -29,6 +29,17 @@ class GPS_protocol_m300(M300Base):
self
.
tripMark
=
tripMark
#驾驶循环标签
self
.
tripMark
=
tripMark
#驾驶循环标签
self
.
reserve
=
"0000000000"
#保留字段 #设备Id
self
.
reserve
=
"0000000000"
#保留字段 #设备Id
def
setLatitude
(
self
,
data
):
self
.
latitude
=
data
def
setLongitude
(
self
,
data
):
self
.
longitude
=
data
def
setDirection
(
self
,
data
):
self
.
direction
=
data
def
setDateInfo
(
self
,
data
):
self
.
dateInfo
=
data
#################################################
#################################################
# 生成消息
# 生成消息
...
@@ -89,3 +100,4 @@ class GPS_protocol_m300(M300Base):
...
@@ -89,3 +100,4 @@ class GPS_protocol_m300(M300Base):
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
print
(
GPS_protocol_m300
()
.
generateMsg
())
print
(
GPS_protocol_m300
()
.
generateMsg
())
print
(
GPS_protocol_m300
()
.
getMsgBody
())
lib/protocol/m300/OBDCAN_protocol_m300.py
View file @
f6a8a2c6
...
@@ -62,6 +62,28 @@ class OBDCAN_protocol_m300(M300Base):
...
@@ -62,6 +62,28 @@ class OBDCAN_protocol_m300(M300Base):
self
.
retail
=
"00000000000000000000"
self
.
retail
=
"00000000000000000000"
self
.
tripMark
=
tripMark
#驾驶循环标签
self
.
tripMark
=
tripMark
#驾驶循环标签
def
setTimeInfo
(
self
,
data
):
self
.
timeInfo
=
data
def
setAccstatus
(
self
,
data
):
if
data
==
1
:
return
self
.
safeStatus
|
1
elif
data
==
0
:
return
self
.
safeStatus
&
~
1
def
setEngineSpeed
(
self
,
data
):
self
.
engineSpeed
=
data
def
setSpeed
(
self
,
data
):
self
.
speed
=
data
def
setDashboardTotailMilleage
(
self
,
data
):
self
.
dashboardTotailMilleage
=
data
def
setTotalMilleage
(
self
,
data
):
self
.
totalMilleage
=
data
def
setTotalOil
(
self
,
data
):
self
.
totalOil
=
data
def
setCarTotalRunTime
(
self
,
data
):
self
.
carTotalRunTime
=
data
#################################################
#################################################
# 生成消息
# 生成消息
...
...
lib/protocol/m300/data/AlarmEventData.py
0 → 100644
View file @
f6a8a2c6
#encoding:utf-8
from
lib.protocol.m300.M300Base
import
M300Base
'''
定义报警事件需要的数据包
'''
class
AlarmEventData
(
M300Base
):
def
__init__
(
self
):
pass
########################################################
# 获取CAN状态数据包
########################################################
def
getCANStatusData
(
self
,
safeStatus
=
0
,
doorStatus
=
0
,
lockStatus
=
0
,
windowStatus
=
0
,
lightStatus
=
0
,
swichStatusA
=
0
,
swichStatusB
=
0
):
statusMask
=
"ffffffffffffffffffff"
# 状态掩码
safeStatus
=
self
.
int2hexStringByBytes
(
safeStatus
)
# 安全状态
doorStatus
=
self
.
int2hexStringByBytes
(
doorStatus
)
# 门状态
lockStatus
=
self
.
int2hexStringByBytes
(
lockStatus
)
# 锁状态
windowStatus
=
self
.
int2hexStringByBytes
(
windowStatus
)
# 窗户状态
lightStatus
=
self
.
int2hexStringByBytes
(
lightStatus
)
# 灯状态
swichStatusA
=
self
.
int2hexStringByBytes
(
swichStatusA
)
# 开关状态A
swichStatusB
=
self
.
int2hexStringByBytes
(
swichStatusB
)
# 开关状态B
retain1
=
"00"
# 预留
retain2
=
"00"
# 预留
retain3
=
"00"
# 预留
data
=
statusMask
+
safeStatus
+
doorStatus
+
lockStatus
+
windowStatus
+
lightStatus
data
=
data
+
swichStatusA
+
swichStatusB
+
retain1
+
retain2
+
retain3
return
data
if
__name__
==
"__main__"
:
print
(
AlarmEventData
()
.
getCANStatusData
())
\ No newline at end of file
lib/protocol/m300/data/__init__.py
0 → 100644
View file @
f6a8a2c6
lib/protocol/report/EventReport_protocol.py
View file @
f6a8a2c6
...
@@ -208,6 +208,14 @@ class EventReport_protocol(ProtocolBase):
...
@@ -208,6 +208,14 @@ class EventReport_protocol(ProtocolBase):
#####################################################
#####################################################
def
getExtraData_GUI
(
self
,
eventData
):
def
getExtraData_GUI
(
self
,
eventData
):
data
=
""
data
=
""
if
(
"0001"
in
eventData
.
keys
()):
# 终端插入报警
eventObj
=
EventClass
()
theData
=
eventObj
.
terminalInsertionAlarmExtraInfo
()
data
=
data
+
"0001"
+
self
.
int2hexStringByBytes
(
int
((
len
(
theData
)
/
2
)),
2
)
+
theData
if
(
"0002"
in
eventData
.
keys
()):
# 终端拔出报警
eventObj
=
EventClass
()
theData
=
eventObj
.
terminalInsertionAlarmExtraInfo
()
data
=
data
+
"0002"
+
self
.
int2hexStringByBytes
(
int
((
len
(
theData
)
/
2
)),
2
)
+
theData
if
(
"0003"
in
eventData
.
keys
()):
#汽车电瓶低电压报警
if
(
"0003"
in
eventData
.
keys
()):
#汽车电瓶低电压报警
theData
=
""
theData
=
""
data
=
data
+
"0003"
+
self
.
int2hexStringByBytes
(
int
((
len
(
theData
)
/
2
)),
2
)
+
theData
data
=
data
+
"0003"
+
self
.
int2hexStringByBytes
(
int
((
len
(
theData
)
/
2
)),
2
)
+
theData
...
...
lib/protocol/report/GPSReport_protocol.py
View file @
f6a8a2c6
...
@@ -13,7 +13,7 @@ from lib.protocol.report.ProtocolBase import ProtocolBase
...
@@ -13,7 +13,7 @@ from lib.protocol.report.ProtocolBase import ProtocolBase
'''
'''
class
GPSReport_protocol
(
ProtocolBase
):
class
GPSReport_protocol
(
ProtocolBase
):
def
__init__
(
self
,
msgCount
=
1
,
WATER_CODE
=
1000
,
DEV_ID
=
"M121501010001"
,
UTCTime
=
"2020-01-09 18:19:38"
,
latitude
=
40.22077
,
longitude
=
116.23128
,
speed
=
60
,
directionAngle
=
80.8
,
elevation
=
2999.9
,
positionStar
=
3
,
Pdop
=
0.3
,
Hdop
=
0.4
,
Vdop
=
0.5
,
statusBit
=
175
,
valtage
=
36.9
,
OBDSpeed
=
60.9
,
engineSpeed
=
3000
,
GPSTotalMileage
=
12800
,
totalOil
=
100000
,
totalTime
=
2020002
,
GPSTimestamp
=
1578565178
):
def
__init__
(
self
,
msgCount
=
1
,
WATER_CODE
=
1000
,
DEV_ID
=
"M121501010001"
,
UTCTime
=
"2020-01-09 18:19:38"
,
latitude
=
40.22077
,
longitude
=
116.23128
,
speed
=
60
,
directionAngle
=
80.8
,
elevation
=
2999.9
,
positionStar
=
3
,
Pdop
=
0.3
,
Hdop
=
0.4
,
Vdop
=
0.5
,
statusBit
=
9
,
valtage
=
36.9
,
OBDSpeed
=
60.9
,
engineSpeed
=
3000
,
GPSTotalMileage
=
12800
,
totalOil
=
100000
,
totalTime
=
2020002
,
GPSTimestamp
=
1578565178
):
super
()
.
__init__
()
super
()
.
__init__
()
self
.
msgCount
=
int
(
msgCount
)
# 设置默认要发送的GPS数据包个数
self
.
msgCount
=
int
(
msgCount
)
# 设置默认要发送的GPS数据包个数
...
@@ -320,15 +320,14 @@ class GPSReport_protocol(ProtocolBase):
...
@@ -320,15 +320,14 @@ class GPSReport_protocol(ProtocolBase):
# Bit1:当前统计里程模式:
# Bit1:当前统计里程模式:
# 0-GPS统计里程;1-OBD统计里程;
# 0-GPS统计里程;1-OBD统计里程;
# Bit0:指示当前车辆点熄火状态:0-熄火,1-点火
# Bit0:指示当前车辆点熄火状态:0-熄火,1-点火
# (按照低位在前高位在后的方式去计算)
#####################################################
#####################################################
def
getStatusBit
(
self
,
num
):
def
getStatusBit
(
self
,
num
):
fireStatus
=
0
#点火状态,128
表示点火,0表示熄火
fireStatus
=
1
#点火状态,1
表示点火,0表示熄火
mileageWay
=
64
#0里程统计模式,表示GPS里程,6
4表示OBD里程
mileageWay
=
0
#0里程统计模式,0表示GPS里程,
4表示OBD里程
locationWay
=
32
#定位类型,32表示2D定位,48
表示3D定位
locationWay
=
8
#定位类型,8表示2D定位,12
表示3D定位
locationMode
=
0
#定位模式,0表示自动模式,2表示单GPS模式,4表示单BDS模式,6
表示GPS+BDS双模式
locationMode
=
0
#定位模式,0表示自动模式,16表示单GPS模式,32表示单BDS模式,48
表示GPS+BDS双模式
isLocationValid
=
1
#当前定位是否有效,1
表示有效,0表示无效
isLocationValid
=
1
28
#当前定位是否有效,128
表示有效,0表示无效
# num = fireStatus + mileageWay + locationWay + locationMode + isLocationValid
statusbitHex
=
self
.
int2hexString
(
num
)
statusbitHex
=
self
.
int2hexString
(
num
)
return
statusbitHex
return
statusbitHex
...
@@ -459,6 +458,13 @@ class GPSReport_protocol(ProtocolBase):
...
@@ -459,6 +458,13 @@ class GPSReport_protocol(ProtocolBase):
# 设置状态字节
# 设置状态字节
def
setStatusBit
(
self
,
statusBit
):
def
setStatusBit
(
self
,
statusBit
):
self
.
statusBit
=
int
(
statusBit
)
self
.
statusBit
=
int
(
statusBit
)
# 设置Gps 有效或者无效;0:无效 1:有效
def
setGpsValid
(
self
,
data
):
if
data
==
1
:
self
.
statusBit
=
self
.
statusBit
|
1
<<
7
elif
data
==
0
:
self
.
statusBit
=
self
.
statusBit
&
~
(
1
<<
7
)
# 设置电压值
# 设置电压值
def
setValtage
(
self
,
valtage
):
def
setValtage
(
self
,
valtage
):
...
...
lib/socket/protocolTest_M500.py
View file @
f6a8a2c6
...
@@ -34,7 +34,7 @@ port = 9008
...
@@ -34,7 +34,7 @@ port = 9008
# host = "10.100.5.251"
# host = "10.100.5.251"
# port = 9008
# port = 9008
#
msg = GPSReport_protocol().generateGpsMsg() #GPS消息数据
msg
=
GPSReport_protocol
()
.
generateGpsMsg
()
#GPS消息数据
# msg = OBDReport_protocol().generateOBDReportMsg() #OBD终端上报数据
# msg = OBDReport_protocol().generateOBDReportMsg() #OBD终端上报数据
# msg = OBDReport_CAN_protocol().generateOBDReportCANMsg() #OBD终端上报CAN数据
# msg = OBDReport_CAN_protocol().generateOBDReportCANMsg() #OBD终端上报CAN数据
# msg = HeartBeatReport_protocol().generateHeartBeatMsg() #终端上报心跳协议
# msg = HeartBeatReport_protocol().generateHeartBeatMsg() #终端上报心跳协议
...
@@ -48,7 +48,7 @@ port = 9008
...
@@ -48,7 +48,7 @@ port = 9008
# msg = CommonReport_protocol().generateCommonMsg() #通用应答消息
# msg = CommonReport_protocol().generateCommonMsg() #通用应答消息
# msg = VoltageDataReport_protocol().generateMsg() #终端上报电瓶电压采样数据
# msg = VoltageDataReport_protocol().generateMsg() #终端上报电瓶电压采样数据
# msg = TroubleCode_protocol().generateMsg() #终端上报故障码数据包
# msg = TroubleCode_protocol().generateMsg() #终端上报故障码数据包
msg
=
SensorSampling_protocol
()
.
generateMsg
()
#1.2.37终端上报Sensor采样数据
#
msg = SensorSampling_protocol().generateMsg() #1.2.37终端上报Sensor采样数据
print
(
msg
)
print
(
msg
)
BUF_SIZE
=
1024
BUF_SIZE
=
1024
...
...
lib/socket/service/M300SimulaterDataService.py
0 → 100644
View file @
f6a8a2c6
#coding:utf-8
##################################################
# 定义M300 车机行驶过程中产生的数据类
##################################################
import
datetime
import
json
import
time
class
M300SimulaterDataService
():
def
__init__
(
self
,
path
=
"/data/m300Tools/carData/"
,
fileName
=
"default.json"
):
self
.
data
=
{}
self
.
path
=
path
#保存车机数据文件地址
self
.
fileName
=
fileName
#保存车机数据文件
def
setPath
(
self
,
data
):
self
.
path
=
data
def
setFileName
(
self
,
data
):
self
.
fileName
=
data
def
setData
(
self
,
data
):
self
.
data
=
data
####################################################
# 生成一个默认数据模板
####################################################
def
genDataTemplate
(
self
):
data
=
{}
timeStamp
=
time
.
time
()
timeArray
=
time
.
localtime
(
timeStamp
)
data
[
"time"
]
=
{}
#定义时间数据项
data
[
"time"
][
"dateTime"
]
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
data
[
"time"
][
"date"
]
=
time
.
strftime
(
"
%
Y-
%
m-
%
d"
,
timeArray
)
data
[
"time"
][
"time"
]
=
time
.
strftime
(
"
%
H:
%
M:
%
S"
,
timeArray
)
data
[
"curDayTravel"
]
=
{}
#定义当天行驶数据项
data
[
"curDayTravel"
][
"todayTotalMilleage"
]
=
0
#今日行驶总里程
data
[
"curDayTravel"
][
"todayTotalOil"
]
=
0
#今日行驶总油耗
data
[
"curDayTravel"
][
"todayTotalTime"
]
=
0
#今日行驶总时间
data
[
"curDayTravel"
][
"theMilleage"
]
=
0
#本次行驶总里程
data
[
"curDayTravel"
][
"theOil"
]
=
0
#本次行驶总油耗
data
[
"curDayTravel"
][
"theTime"
]
=
0
#本次行驶总时间
data
[
"travelData"
]
=
{}
#定义所有行驶数据
data
[
"travelData"
][
"totalMilleage"
]
=
0
#行驶总里程
data
[
"travelData"
][
"totalOil"
]
=
0
#行驶总油耗
data
[
"travelData"
][
"totalTime"
]
=
0
#行驶总时间
data
[
"event"
]
=
{}
data
[
"event"
][
"threeRapid"
]
=
{}
#急加速,急减速,急转弯基本数据
data
[
"event"
][
"threeRapid"
][
"totalRapidlyAccelerate"
]
=
0
#急加速总次数
data
[
"event"
][
"threeRapid"
][
"totalSharpSlowdown"
]
=
0
#急减速总次数
data
[
"event"
][
"threeRapid"
][
"totalSharpTurn"
]
=
0
#急转弯总次数
return
data
####################################################
# 修复默认数据模板
# 用于在升级模拟器的时候,对增加的字段进行初始化
####################################################
def
fixDataTemplate
(
self
,
data
):
if
not
"event"
in
data
:
data
[
"event"
]
=
{}
data
[
"event"
][
"threeRapid"
]
=
{}
data
[
"event"
][
"threeRapid"
][
"totalRapidlyAccelerate"
]
=
0
# 急加速总次数
data
[
"event"
][
"threeRapid"
][
"totalSharpSlowdown"
]
=
0
# 急减速总次数
data
[
"event"
][
"threeRapid"
][
"totalSharpTurn"
]
=
0
# 急转弯总次数
if
not
"threeRapid"
in
data
[
"event"
]:
data
[
"event"
][
"threeRapid"
]
=
{}
data
[
"event"
][
"threeRapid"
][
"totalRapidlyAccelerate"
]
=
0
#急加速总次数
data
[
"event"
][
"threeRapid"
][
"totalSharpSlowdown"
]
=
0
#急减速总次数
data
[
"event"
][
"threeRapid"
][
"totalSharpTurn"
]
=
0
#急转弯总次数
return
data
#设今日行驶总里程,同时写入文件
def
setTodayTotalMilleage
(
self
,
data
):
self
.
data
[
"curDayTravel"
][
"todayTotalMilleage"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设今日行驶总油耗,同时写入文件
def
setTodayTodayTotalOil
(
self
,
data
):
self
.
data
[
"curDayTravel"
][
"todayTotalOil"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设今日行驶总时间,同时写入文件
def
setTodayTodayTotalTime
(
self
,
data
):
self
.
data
[
"curDayTravel"
][
"todayTotalTime"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设本次行驶总里程,同时写入文件
def
setTheMilleage
(
self
,
data
):
self
.
data
[
"curDayTravel"
][
"theMilleage"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设本次行驶总油耗,同时写入文件
def
setTheOil
(
self
,
data
):
self
.
data
[
"curDayTravel"
][
"theOil"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设本次行驶总时间,同时写入文件
def
setTheTime
(
self
,
data
):
self
.
data
[
"curDayTravel"
][
"theTime"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设总里程,同时写入文件
def
setTotalMilleage
(
self
,
data
):
self
.
data
[
"travelData"
][
"totalMilleage"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设总油耗,同时写入文件
def
setTotalOil
(
self
,
data
):
self
.
data
[
"travelData"
][
"totalOil"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设总时间,同时写入文件
def
setTotalTime
(
self
,
data
):
self
.
data
[
"travelData"
][
"totalTime"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设置急加速总次数,同时写入文件
def
setTotalRapidlyAccelerateCount
(
self
,
data
):
if
not
"event"
in
data
:
data
[
"event"
]
=
{}
if
not
"threeRapid"
in
data
[
"event"
]:
data
[
"event"
][
"threeRapid"
]
=
{}
data
[
"event"
][
"threeRapid"
][
"totalRapidlyAccelerate"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
# 设置急减速总次数,同时写入文件
def
setTotalSharpSlowdown
(
self
,
data
):
if
not
"event"
in
data
:
data
[
"event"
]
=
{}
if
not
"threeRapid"
in
data
[
"event"
]:
data
[
"event"
][
"threeRapid"
]
=
{}
data
[
"event"
][
"threeRapid"
][
"totalSharpSlowdown"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
# 设置急转弯总次数,同时写入文件
def
setTotalSharpTurn
(
self
,
data
):
if
not
"event"
in
data
:
data
[
"event"
]
=
{}
if
not
"threeRapid"
in
data
[
"event"
]:
data
[
"event"
][
"threeRapid"
]
=
{}
data
[
"event"
][
"threeRapid"
][
"totalSharpTurn"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设今日日期时间
def
setDateTime2file
(
self
,
data
):
self
.
data
[
"time"
][
"dateTime"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设今日日期
def
setDate2file
(
self
,
data
):
self
.
data
[
"time"
][
"date"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
#设今日时间
def
setTime2file
(
self
,
data
):
self
.
data
[
"time"
][
"time"
]
=
data
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
####################################################
# 将数据持久化到已经设定好的文件
####################################################
def
setData2file
(
self
):
self
.
writeToFile
(
self
.
path
+
self
.
fileName
,
self
.
data
)
####################################################
# 将数据写入文件
####################################################
def
writeToFile
(
self
,
path
,
data
):
with
open
(
path
,
"w"
,
encoding
=
"utf-8"
)
as
fi
:
data
=
json
.
dumps
(
data
)
fi
.
write
(
data
)
####################################################
# 从文件读取数据
####################################################
def
readFromFile
(
self
,
path
):
with
open
(
path
,
"r"
,
encoding
=
"utf-8"
)
as
fi
:
content
=
fi
.
read
()
conJson
=
json
.
loads
(
content
)
timeStamp
=
time
.
time
()
timeArray
=
time
.
localtime
(
timeStamp
)
dateTimeM
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
dateM
=
time
.
strftime
(
"
%
Y-
%
m-
%
d"
,
timeArray
)
timeM
=
time
.
strftime
(
"
%
H:
%
M:
%
S"
,
timeArray
)
if
dateM
==
conJson
[
"time"
][
"date"
]:
pass
else
:
#如果不是当天日期,则将日期设置为当天
conJson
[
"time"
][
"dateTime"
]
=
dateTimeM
conJson
[
"time"
][
"date"
]
=
dateM
conJson
[
"time"
][
"time"
]
=
timeM
data
[
"curDayTravel"
][
"todayTotalMilleage"
]
=
0
# 今日行驶总里程
data
[
"curDayTravel"
][
"todayTotalOil"
]
=
0
# 今日行驶总油耗
data
[
"curDayTravel"
][
"todayTotalTime"
]
=
0
# 今日行驶总时间
self
.
setTodayTotalMilleage
(
0
)
self
.
setTodayTodayTotalOil
(
0
)
self
.
setTodayTodayTotalTime
(
0
)
self
.
setDateTime2file
(
dateTimeM
)
self
.
setData2file
(
dateM
)
self
.
setTime2file
(
timeM
)
conJson
=
self
.
fixDataTemplate
(
conJson
)
#每次读取,都会对数据进行修复
self
.
data
=
conJson
if
__name__
==
"__main__"
:
print
(
M300SimulaterDataService
()
.
genDataTemplate
())
data
=
M300SimulaterDataService
()
.
genDataTemplate
()
M300SimulaterDataService
()
.
writeToFile
(
"../../../data/m300Tools/carData/M202003060520.json"
,
data
)
\ No newline at end of file
lib/socket/service/M300SimulaterService.py
0 → 100644
View file @
f6a8a2c6
#coding:utf-8
'''
M300车机模拟服务类
'''
import
binascii
import
json
import
math
import
os
import
threading
import
time
import
traceback
from
time
import
sleep
from
lib.protocol.m300.GPS_protocol_m300
import
GPS_protocol_m300
from
lib.protocol.m300.OBDCAN_protocol_m300
import
OBDCAN_protocol_m300
from
lib.protocol.message.Location_msg
import
Location_msg
from
lib.protocol.message.TerminalCommonMsgRes_msg
import
TerminalCommonMsgRes_msg
from
lib.protocol.message.TerminalRegister_msg
import
TerminalRegister_msg
from
lib.protocol.message.TerminalVersionInfo_msg
import
TerminalVersionInfo_msg
from
lib.socket.service.MessageSimulaterDataService
import
MessageSimulaterDataService
from
lib.socket.service.websocket_service
import
Websocket_service
class
M300SimulaterService
():
def
__init__
(
self
):
self
.
data
=
{}
#用来接收模拟器传过来的参数
self
.
carData
=
{}
#保存车辆行驶数据
self
.
carDataObj
=
None
#管理车辆行驶数据对象
self
.
socket
=
None
self
.
sendDur
=
5
#设置默认多久发一条消息
self
.
serviceStatus
=
0
#服务状态,0表示未启动,1表示启动
self
.
websocket
=
None
#网页与服务的通信socket
self
.
websocketId
=
""
#当前连接的webSocketId
self
.
timeout
=
1
#socket的超时时间
self
.
gpsLine
=
[]
#GPS 轨迹
self
.
gpsLineIndex
=
0
#GPS 轨迹索引
self
.
travelStatus
=
0
#0,表示未行驶,1表示开始行驶同时开启了接收消息服务,2表示值开启了接收消息的服务
self
.
carId
=
""
#车机号
self
.
sn
=
0
#消息流水号
self
.
travelDirection
=
0
#行驶方向,0表示正向行驶,1表示反向行驶
self
.
directAngle
=
60
#汽车方向角
'''
为0表示正常发送,type为1表示数据写入本地
# 用来控制发送消息的方式(是正常发送,还是将发送的数据保存到本地,不发送)
'''
self
.
sendType
=
0
# 定义要发送的obd数据
self
.
OBDdata
=
{
"fireStatus"
:
1
,
"ACCStatus"
:
0
,
"engineSpeed"
:
300
,
"speed"
:
0
,
"meterMileage"
:
6000
,
"totailMileage"
:
600
,
"totalOilExpen"
:
30
,
"totalRunTime"
:
10
}
# 定义初始的obd数据,与上面的OBD数据保持一致,主要用于汽车行驶过程中数据变化量的计算
self
.
OBDdataOri
=
{
"fireStatus"
:
1
,
"ACCStatus"
:
0
,
"engineSpeed"
:
300
,
"speed"
:
0
,
"meterMileage"
:
6000
,
"totailMileage"
:
600
,
"totalOilExpen"
:
30
,
"totalRunTime"
:
10
}
#设置套接字
def
setSocket
(
self
,
data
):
self
.
socket
=
data
def
setSendDur
(
self
,
data
):
self
.
sendDur
=
data
def
setTimeout
(
self
,
data
):
self
.
timeout
=
data
def
setCarId
(
self
,
data
):
self
.
carId
=
data
def
setData
(
self
,
data
):
self
.
data
=
data
def
setWebsocketId
(
self
):
sleep
(
0.1
)
self
.
websocketId
=
self
.
websocket
.
getCurrentClientId
()
def
setWebsocket
(
self
,
data
):
self
.
websocket
=
data
def
setSn
(
self
,
data
):
self
.
sn
=
data
def
setCarData
(
self
,
data
):
self
.
carData
=
data
def
setServiceStatus
(
self
,
data
):
self
.
serviceStatus
=
data
def
setCarSpeed
(
self
,
data
):
self
.
data
[
"travelData"
][
"carSpeed"
]
=
data
def
setOilExpend
(
self
,
data
):
self
.
data
[
"travelData"
][
"oilExpend"
]
=
data
def
setSendDur
(
self
,
data
):
self
.
sendDur
=
int
(
data
)
def
setSendType
(
self
,
data
):
self
.
sendType
=
data
def
getWebsocket
(
self
):
return
self
.
websocket
def
getGpsLineIndex
(
self
):
return
self
.
gpsLineIndex
def
getGpsLine
(
self
):
return
self
.
gpsLine
def
getTravelStatus
(
self
):
return
self
.
travelStatus
def
getSn
(
self
):
return
self
.
sn
def
getCarData
(
self
):
return
self
.
carData
#######################################################
# type 为0表示正常发送,type为1表示数据写入本地
#######################################################
def
sendMsg
(
self
,
msg
):
if
self
.
sendType
==
0
:
self
.
socket
.
setTimeOut
(
self
.
timeout
)
self
.
socket
.
send
(
msg
)
elif
self
.
sendType
==
1
:
msgId
=
self
.
getMsgFunId
(
msg
)
if
msgId
==
"0021"
:
self
.
saveMsgLocal
(
"event.txt"
,
msg
)
elif
msgId
==
"0010"
:
self
.
saveMsgLocal
(
"gps.txt"
,
msg
)
elif
msgId
==
"0012"
:
self
.
saveMsgLocal
(
"obd.txt"
,
msg
)
def
revMsg
(
self
):
self
.
socket
.
setTimeOut
(
self
.
timeout
)
return
self
.
socket
.
receive
()
#发送消息,可指定消息的描述类型
def
serviceSendMsg
(
self
,
msg
,
type
):
#type字段目前废掉没有实际意
self
.
sendMsg
(
msg
)
type
=
self
.
getMsgFunId
(
msg
)
self
.
websocket
.
sendMsgToClient
(
">>>>"
+
type
+
":"
+
msg
,
self
.
websocketId
)
def
serviceSend
(
self
):
while
self
.
serviceStatus
==
1
:
gpsMsg
=
""
OBDMsg
=
""
if
self
.
travelStatus
==
0
:
#行驶服务未启动
latitude
=
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lat"
]
longitude
=
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lng"
]
gpsMsg
=
self
.
genGPSMsg
(
latitude
,
longitude
)
elif
self
.
travelStatus
==
1
:
#行驶服务启动
if
self
.
gpsLineIndex
<
len
(
self
.
gpsLine
)
and
self
.
gpsLineIndex
!=
-
1
:
#如果正向行驶和反向行驶的轨迹点都没有跑完
OBDMsg
=
self
.
genOBDMsg
(
self
.
OBDdata
[
"fireStatus"
],
self
.
OBDdata
[
"ACCStatus"
],
self
.
OBDdata
[
"engineSpeed"
],
\
self
.
OBDdata
[
"speed"
],
self
.
OBDdata
[
"meterMileage"
],
self
.
OBDdata
[
"totailMileage"
],
\
self
.
OBDdata
[
"totalOilExpen"
],
self
.
OBDdata
[
"totalRunTime"
])
self
.
OBDdata
[
"engineSpeed"
]
=
3000
self
.
OBDdata
[
"speed"
]
=
int
(
self
.
data
[
"travelData"
][
"carSpeed"
])
self
.
OBDdata
[
"meterMileage"
]
=
self
.
OBDdata
[
"meterMileage"
]
+
int
(
self
.
sendDur
*
(
self
.
OBDdata
[
"speed"
]
*
1000
/
3600
))
self
.
OBDdata
[
"totailMileage"
]
=
self
.
OBDdata
[
"totailMileage"
]
+
int
(
self
.
sendDur
*
(
self
.
OBDdata
[
"speed"
]
*
1000
/
3600
))
oilExpend
=
int
(
self
.
data
[
"travelData"
][
"oilExpend"
])
self
.
OBDdata
[
"totalOilExpen"
]
=
self
.
OBDdata
[
"totalOilExpen"
]
+
int
((
self
.
sendDur
*
(
self
.
OBDdata
[
"speed"
]
*
1000
/
3600
))
*
(
1000
/
(
oilExpend
*
1000
)))
self
.
OBDdata
[
"totalRunTime"
]
=
self
.
OBDdata
[
"totalRunTime"
]
+
self
.
sendDur
latitude
=
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lat"
]
longitude
=
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lng"
]
# print("经度:" + str(longitude) + " 维度:" + str(latitude))
gpsMsg
=
self
.
genGPSMsg
(
latitude
,
longitude
)
if
self
.
travelDirection
==
0
:
self
.
gpsLineIndex
=
self
.
gpsLineIndex
+
1
#正向行驶
else
:
self
.
gpsLineIndex
=
self
.
gpsLineIndex
-
1
#反向行驶
elif
self
.
gpsLineIndex
==
len
(
self
.
gpsLine
)
or
self
.
gpsLineIndex
==
-
1
:
#如果反向行驶和反向行驶刚好跑完
if
int
(
self
.
data
[
"travelData"
][
"travelLoop"
])
==
0
:
#没有设置循环行驶
self
.
gpsLineIndex
=
self
.
gpsLineIndex
-
1
self
.
stopTravel
()
self
.
websocket
.
sendMsgToClient
(
"gps轨迹跑完,自动停止行驶!"
,
self
.
websocketId
)
else
:
#设置了循环行驶
if
self
.
travelDirection
==
0
:
self
.
gpsLineIndex
=
self
.
gpsLineIndex
-
1
self
.
travelDirection
=
1
self
.
websocket
.
sendMsgToClient
(
"gps轨迹正向行驶跑完,变换行驶方向......"
,
self
.
websocketId
)
else
:
self
.
gpsLineIndex
=
self
.
gpsLineIndex
+
1
self
.
travelDirection
=
0
self
.
websocket
.
sendMsgToClient
(
"gps轨迹反向行驶跑完,变换行驶方向......"
,
self
.
websocketId
)
OBDMsg
=
self
.
genOBDMsg
(
self
.
OBDdata
[
"fireStatus"
],
self
.
OBDdata
[
"ACCStatus"
],
self
.
OBDdata
[
"engineSpeed"
],
\
self
.
OBDdata
[
"speed"
],
self
.
OBDdata
[
"meterMileage"
],
self
.
OBDdata
[
"totailMileage"
],
\
self
.
OBDdata
[
"totalOilExpen"
],
self
.
OBDdata
[
"totalRunTime"
])
self
.
OBDdata
[
"engineSpeed"
]
=
3000
self
.
OBDdata
[
"speed"
]
=
int
(
self
.
data
[
"travelData"
][
"carSpeed"
])
self
.
OBDdata
[
"meterMileage"
]
=
self
.
OBDdata
[
"meterMileage"
]
+
int
(
self
.
sendDur
*
(
self
.
OBDdata
[
"speed"
]
*
1000
/
3600
))
self
.
OBDdata
[
"totailMileage"
]
=
self
.
OBDdata
[
"totailMileage"
]
+
int
(
self
.
sendDur
*
(
self
.
OBDdata
[
"speed"
]
*
1000
/
3600
))
oilExpend
=
int
(
self
.
data
[
"travelData"
][
"oilExpend"
])
self
.
OBDdata
[
"totalOilExpen"
]
=
self
.
OBDdata
[
"totalOilExpen"
]
+
int
((
self
.
sendDur
*
(
self
.
OBDdata
[
"speed"
]
*
1000
/
3600
))
*
(
1000
/
(
oilExpend
*
1000
)))
self
.
OBDdata
[
"totalRunTime"
]
=
self
.
OBDdata
[
"totalRunTime"
]
+
self
.
sendDur
latitude
=
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lat"
]
longitude
=
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lng"
]
gpsMsg
=
self
.
genGPSMsg
(
latitude
,
longitude
)
self
.
carDataObj
.
setTodayTotalMilleage
(
self
.
carData
[
"curDayTravel"
][
"todayTotalMilleage"
]
+
self
.
OBDdata
[
"totailMileage"
]
-
self
.
OBDdataOri
[
"totailMileage"
])
self
.
carDataObj
.
setTheMilleage
(
self
.
carData
[
"curDayTravel"
][
"theMilleage"
]
+
self
.
OBDdata
[
"totailMileage"
]
-
self
.
OBDdataOri
[
"totailMileage"
])
self
.
carDataObj
.
setTotalMilleage
(
self
.
carData
[
"travelData"
][
"totalMilleage"
]
+
self
.
OBDdata
[
"totailMileage"
]
-
self
.
OBDdataOri
[
"totailMileage"
])
temp
=
self
.
OBDdata
[
"totailMileage"
]
self
.
OBDdataOri
[
"totailMileage"
]
=
temp
self
.
carDataObj
.
setTodayTodayTotalOil
(
self
.
carData
[
"curDayTravel"
][
"todayTotalOil"
]
+
self
.
OBDdata
[
"totalOilExpen"
]
-
self
.
OBDdataOri
[
"totalOilExpen"
])
self
.
carDataObj
.
setTheOil
(
self
.
carData
[
"curDayTravel"
][
"theOil"
]
+
self
.
OBDdata
[
"totalOilExpen"
]
-
self
.
OBDdataOri
[
"totalOilExpen"
])
self
.
carDataObj
.
setTotalOil
(
self
.
carData
[
"travelData"
][
"totalOil"
]
+
self
.
OBDdata
[
"totalOilExpen"
]
-
self
.
OBDdataOri
[
"totalOilExpen"
])
self
.
OBDdataOri
[
"totalOilExpen"
]
=
self
.
OBDdata
[
"totalOilExpen"
]
self
.
carDataObj
.
setTodayTodayTotalTime
(
self
.
carData
[
"curDayTravel"
][
"todayTotalTime"
]
+
self
.
OBDdata
[
"totalRunTime"
]
-
self
.
OBDdataOri
[
"totalRunTime"
])
self
.
carDataObj
.
setTheTime
(
self
.
carData
[
"curDayTravel"
][
"theTime"
]
+
self
.
OBDdata
[
"totalRunTime"
]
-
self
.
OBDdataOri
[
"totalRunTime"
])
self
.
carDataObj
.
setTotalTime
(
self
.
carData
[
"travelData"
][
"totalTime"
]
+
self
.
OBDdata
[
"totalRunTime"
]
-
self
.
OBDdataOri
[
"totalRunTime"
])
self
.
OBDdataOri
[
"totalRunTime"
]
=
self
.
OBDdata
[
"totalRunTime"
]
if
OBDMsg
!=
""
:
self
.
sendMsg
(
OBDMsg
)
self
.
sn
=
self
.
sn
+
1
type
=
self
.
getMsgFunId
(
OBDMsg
)
info
=
type
+
">>>>:"
+
OBDMsg
self
.
websocket
.
sendMsgToClient
(
info
,
self
.
websocketId
)
if
gpsMsg
!=
""
:
sleep
(
0.1
)
self
.
sendMsg
(
gpsMsg
)
self
.
sn
=
self
.
sn
+
1
type
=
self
.
getMsgFunId
(
gpsMsg
)
info
=
type
+
">>>>:"
+
gpsMsg
self
.
websocket
.
sendMsgToClient
(
info
,
self
.
websocketId
)
sleep
(
self
.
sendDur
)
def
serviceRev
(
self
):
self
.
serviceStatus
=
2
#2代表只启动了接收消息的进程,1代表了接收和发送都启动了
while
self
.
serviceStatus
!=
0
:
self
.
socket
.
setTimeOut
(
self
.
timeout
)
d
=
self
.
revMsg
()
d
=
str
(
binascii
.
b2a_hex
(
d
))[
2
:][:
-
1
]
type
=
self
.
getMsgFunId
(
d
)
info
=
type
+
"<<<<:"
+
d
self
.
websocket
.
sendMsgToClient
(
info
,
self
.
websocketId
)
self
.
doResponse
(
d
)
#启动与页面交互的websockt服务
def
websocketService
(
self
):
self
.
websocket
=
Websocket_service
()
self
.
websocket
.
setHost
(
"0.0.0.0"
)
self
.
websocket
.
setPort
(
5005
)
self
.
websocket
.
startWebsocketServer
()
#启动定时发送消息和接收消息的服务
def
startService
(
self
):
self
.
serviceStatus
=
1
t1
=
threading
.
Thread
(
target
=
self
.
serviceSend
,
args
=
())
t1
.
start
()
#启动与页面交互的websocket服务
def
startWebsocketService
(
self
):
if
self
.
websocket
==
None
:
t
=
threading
.
Thread
(
target
=
self
.
websocketService
,
args
=
())
t
.
start
()
t2
=
threading
.
Thread
(
target
=
self
.
serviceRev
,
args
=
())
t2
.
start
()
t3
=
threading
.
Thread
(
target
=
self
.
setWebsocketId
,
args
=
())
t3
.
start
()
# 为websocket服务添加一个新的客户端连接
def
addNewWebsocket
(
self
):
t2
=
threading
.
Thread
(
target
=
self
.
serviceRev
,
args
=
())
t2
.
start
()
t3
=
threading
.
Thread
(
target
=
self
.
setWebsocketId
,
args
=
())
t3
.
start
()
#停止定时发送消息的服务
def
stopService
(
self
):
self
.
serviceStatus
=
0
self
.
gpsLine
=
[]
self
.
gpsLineIndex
=
0
self
.
travelStatus
=
0
def
closeSocket
(
self
):
try
:
self
.
socket
.
close
()
except
BaseException
as
e
:
# 打印异常信息
traceback
.
print_exc
()
#停止websocket服务
def
stopWebsocketService
(
self
):
try
:
self
.
websocket
.
close
()
self
.
websocket
=
None
except
BaseException
as
e
:
# 打印异常信息
traceback
.
print_exc
()
########################################################
# 开始行驶
########################################################
def
startTravel
(
self
):
self
.
travelStatus
=
1
########################################################
# 停止行驶
########################################################
def
stopTravel
(
self
):
self
.
travelStatus
=
0
self
.
serviceStatus
=
0
#获取收到消息的功能id
def
getMsgFunId
(
self
,
msg
):
funId
=
msg
[
26
:
30
]
return
funId
#收到 某些类型的消息后执行回复操作
def
doResponse
(
self
,
msg
):
msgFunId
=
self
.
getMsgFunId
(
msg
)
if
msgFunId
==
"8205"
:
msg
=
Common_response
(
resId
=
"8205"
)
.
generateCommonMsg
()
self
.
sendMsg
(
msg
)
self
.
sn
=
self
.
sn
+
1
type
=
self
.
getMsgFunId
(
msg
)
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>设置GPSR通信参数应答:"
+
msg
,
self
.
websocketId
)
elif
msgFunId
==
"8206"
:
msg
=
Common_response
(
resId
=
"8206"
)
.
generateCommonMsg
()
self
.
sendMsg
(
msg
)
self
.
sn
=
self
.
sn
+
1
type
=
self
.
getMsgFunId
(
msg
)
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>设置车辆OBD适配信息应答:"
+
msg
,
self
.
websocketId
)
elif
msgFunId
==
"8300"
:
msg
=
Update_response
()
.
generateUpdateMsg
()
self
.
sendMsg
(
msg
)
self
.
sn
=
self
.
sn
+
1
type
=
self
.
getMsgFunId
(
msg
)
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>升级_平台通知终端远程升级应答:"
+
msg
,
self
.
websocketId
)
#设置GPS轨迹
def
setGpsLine
(
self
,
fileName
):
with
open
(
"data/protocolTools/GPSLines/"
+
fileName
,
"r"
,
encoding
=
"utf-8"
)
as
fi
:
content
=
fi
.
read
()
conJson
=
json
.
loads
(
content
)
self
.
gpsLine
=
conJson
[
"GPSLine"
]
#点火,发送点火事件
def
fireOn
(
self
):
if
not
os
.
path
.
exists
(
"data/protocolTools/carData/"
+
self
.
carId
+
".json"
):
psdsObj
=
ProtocolSimulaterDataService
()
data
=
psdsObj
.
genDataTemplate
()
psdsObj
.
writeToFile
(
"data/protocolTools/carData/"
+
self
.
carId
+
".json"
,
data
)
#读取车机行驶数据
with
open
(
"data/protocolTools/carData/"
+
self
.
carId
+
".json"
,
"r"
,
encoding
=
"utf-8"
)
as
fi
:
content
=
fi
.
read
()
conJson
=
json
.
loads
(
content
)
conJson
[
"curDayTravel"
][
"theMilleage"
]
=
0
# 本次行驶总里程
conJson
[
"curDayTravel"
][
"theOil"
]
=
0
# 本次行驶总油耗
conJson
[
"curDayTravel"
][
"theTime"
]
=
0
# 本次行驶总时间
timeStamp
=
time
.
time
()
timeArray
=
time
.
localtime
(
timeStamp
)
dateTimeM
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
dateM
=
time
.
strftime
(
"
%
Y-
%
m-
%
d"
,
timeArray
)
timeM
=
time
.
strftime
(
"
%
H:
%
M:
%
S"
,
timeArray
)
dataFile
=
self
.
carId
+
".json"
self
.
carDataObj
=
ProtocolSimulaterDataService
(
"data/protocolTools/carData/"
,
dataFile
)
self
.
carDataObj
.
setData
(
conJson
)
if
dateM
==
conJson
[
"time"
][
"date"
]:
self
.
OBDdata
[
"totailMileage"
]
=
conJson
[
"travelData"
][
"totalMilleage"
]
self
.
OBDdataOri
[
"totailMileage"
]
=
conJson
[
"travelData"
][
"totalMilleage"
]
self
.
OBDdata
[
"totalOilExpen"
]
=
conJson
[
"travelData"
][
"totalOil"
]
self
.
OBDdataOri
[
"totalOilExpen"
]
=
conJson
[
"travelData"
][
"totalOil"
]
self
.
OBDdata
[
"totalRunTime"
]
=
conJson
[
"travelData"
][
"totalTime"
]
self
.
OBDdataOri
[
"totalRunTime"
]
=
conJson
[
"travelData"
][
"totalTime"
]
else
:
#如果不是当天日期,则将日期设置为当天,并写入车辆数据文件
conJson
[
"curDayTravel"
][
"todayTotalMilleage"
]
=
0
# 今日行驶总里程
conJson
[
"curDayTravel"
][
"todayTotalOil"
]
=
0
# 今日行驶总油耗
conJson
[
"curDayTravel"
][
"todayTotalTime"
]
=
0
# 今日行驶总时间
self
.
carDataObj
.
setTodayTotalMilleage
(
0
)
self
.
carDataObj
.
setTodayTodayTotalOil
(
0
)
self
.
carDataObj
.
setTodayTodayTotalTime
(
0
)
self
.
carDataObj
.
setDateTime2file
(
dateTimeM
)
self
.
carDataObj
.
setDate2file
(
dateM
)
self
.
carDataObj
.
setTime2file
(
timeM
)
self
.
OBDdata
[
"totailMileage"
]
=
conJson
[
"travelData"
][
"totalMilleage"
]
self
.
OBDdataOri
[
"totailMileage"
]
=
conJson
[
"travelData"
][
"totalMilleage"
]
self
.
OBDdata
[
"totalOilExpen"
]
=
conJson
[
"travelData"
][
"totalOil"
]
self
.
OBDdataOri
[
"totalOilExpen"
]
=
conJson
[
"travelData"
][
"totalOil"
]
self
.
OBDdata
[
"totalRunTime"
]
=
conJson
[
"travelData"
][
"totalTime"
]
self
.
OBDdataOri
[
"totalRunTime"
]
=
conJson
[
"travelData"
][
"totalTime"
]
self
.
carData
=
self
.
carDataObj
.
fixDataTemplate
(
conJson
)
# fireOnEventObj = EventReport_protocol(DEV_ID=self.carId,WATER_CODE=self.sn)
# gpsData = self.genGPSData(self.gpsLine[0]["lat"], self.gpsLine[0]["lng"])
# fireOnEventObj.setGPSPkg(gpsData)
# fireOnEventObj.setEventType("0010")
# firOnEventMsg = fireOnEventObj.generateEventMsg()
# type = self.getMsgFunId(firOnEventMsg)
# self.sendMsg(firOnEventMsg)
# self.sn = self.sn + 1
# self.websocket.sendMsgToClient(type + ">>>>:" + firOnEventMsg,self.websocketId)
jdata
=
{
"WATER_CODE"
:
"0003"
,
"DEV_ID"
:
"M121501010001"
,
"gpsInfo"
:
{
"UTCTime"
:
"2020-04-30 14:59:33"
,
"latitude"
:
"40.22077"
,
"longitude"
:
"116.23128"
,
"speed"
:
"80.8"
,
"directionAngle"
:
"80.8"
,
"elevation"
:
"2999.9"
,
"positionStar"
:
"3"
,
"Pdop"
:
"0.3"
,
"Hdop"
:
"0.4"
,
"Vdop"
:
"0.5"
,
"statusBit"
:
162
,
"valtage"
:
"36.9"
,
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"totalOil"
:
"100000"
,
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"securityData"
:
{
"securityStatus"
:
107
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"0010"
:
{
"allRapidlyAccelerateCount"
:
"5"
,
"allSharpSlowdownCount"
:
"6"
,
"allSharpTurn"
:
"4"
,
"dataProperty"
:
"1"
}}}
jdata
[
"event"
][
"0010"
][
"allRapidlyAccelerateCount"
]
=
self
.
carData
[
"event"
][
"threeRapid"
][
"totalRapidlyAccelerate"
]
jdata
[
"event"
][
"0010"
][
"allSharpSlowdownCount"
]
=
self
.
carData
[
"event"
][
"threeRapid"
][
"totalSharpSlowdown"
]
jdata
[
"event"
][
"0010"
][
"allSharpTurn"
]
=
self
.
carData
[
"event"
][
"threeRapid"
][
"totalSharpTurn"
]
jdata
[
"DEV_ID"
]
=
self
.
carId
obj
=
EventReport_protocol
(
data
=
jdata
)
gpsData
=
self
.
genGPSData2
()
obj
.
setGPSPkg
(
gpsData
)
obj
.
setEventType
(
"0010"
)
msg
=
obj
.
generateEventMsg
()
type
=
self
.
getMsgFunId
(
msg
)
self
.
sendMsg
(
msg
)
self
.
sn
=
self
.
sn
+
1
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>:"
+
msg
,
self
.
websocketId
)
sleep
(
0.1
)
gpsMsg
=
self
.
genGPSMsg
(
self
.
gpsLine
[
0
][
"lat"
],
self
.
gpsLine
[
0
][
"lng"
])
type
=
self
.
getMsgFunId
(
gpsMsg
)
self
.
sendMsg
(
gpsMsg
)
self
.
sn
=
self
.
sn
+
1
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>:"
+
gpsMsg
,
self
.
websocketId
)
sleep
(
0.1
)
OBDMsg
=
self
.
genOBDMsg
(
self
.
OBDdata
[
"fireStatus"
],
1
,
self
.
OBDdata
[
"engineSpeed"
],
\
self
.
OBDdata
[
"speed"
],
self
.
OBDdata
[
"meterMileage"
],
self
.
OBDdata
[
"totailMileage"
],
\
self
.
OBDdata
[
"totalOilExpen"
],
self
.
OBDdata
[
"totalRunTime"
])
type
=
self
.
getMsgFunId
(
OBDMsg
)
self
.
sendMsg
(
OBDMsg
)
self
.
sn
=
self
.
sn
+
1
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>:"
+
OBDMsg
,
self
.
websocketId
)
# 熄火,发送熄火事件
def
fireOff
(
self
):
gpsLineIndex
=
self
.
gpsLineIndex
if
gpsLineIndex
>=
len
(
self
.
gpsLine
):
gpsLineIndex
=
gpsLineIndex
-
1
# fireOffEventObj = EventReport_protocol(DEV_ID=self.carId)
# gpsData = self.genGPSData(self.gpsLine[gpsLineIndex]["lat"],self.gpsLine[gpsLineIndex]["lng"])
# fireOffEventObj.setGPSPkg(gpsData)
# fireOffEventObj.setEventType("0011")
# fireOffEventMsg = fireOffEventObj.generateEventMsg()
# type = self.getMsgFunId(fireOffEventMsg)
# self.sendMsg(fireOffEventMsg)
# self.sn = self.sn + 1
# self.websocket.sendMsgToClient(type + ">>>>:" + fireOffEventMsg,self.websocketId)
jdata
=
{
"WATER_CODE"
:
"0003"
,
"DEV_ID"
:
"M121501010001"
,
"gpsInfo"
:
{
"UTCTime"
:
"2020-04-30 14:59:33"
,
"latitude"
:
"40.22077"
,
"longitude"
:
"116.23128"
,
"speed"
:
"80.8"
,
"directionAngle"
:
"80.8"
,
"elevation"
:
"2999.9"
,
"positionStar"
:
"3"
,
"Pdop"
:
"0.3"
,
"Hdop"
:
"0.4"
,
"Vdop"
:
"0.5"
,
"statusBit"
:
162
,
"valtage"
:
"36.9"
,
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"totalOil"
:
"100000"
,
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"securityData"
:
{
"securityStatus"
:
107
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"0011"
:
{
"allRapidlyAccelerateCount"
:
"5"
,
"allSharpSlowdownCount"
:
"6"
,
"allSharpTurn"
:
"4"
,
"dataProperty"
:
"1"
}}}
jdata
[
"event"
][
"0011"
][
"allRapidlyAccelerateCount"
]
=
self
.
carData
[
"event"
][
"threeRapid"
][
"totalRapidlyAccelerate"
]
jdata
[
"event"
][
"0011"
][
"allSharpSlowdownCount"
]
=
self
.
carData
[
"event"
][
"threeRapid"
][
"totalSharpSlowdown"
]
jdata
[
"event"
][
"0011"
][
"allSharpTurn"
]
=
self
.
carData
[
"event"
][
"threeRapid"
][
"totalSharpTurn"
]
jdata
[
"DEV_ID"
]
=
self
.
carId
obj
=
EventReport_protocol
(
data
=
jdata
)
gpsData
=
self
.
genGPSData2
()
obj
.
setGPSPkg
(
gpsData
)
obj
.
setEventType
(
"0011"
)
msg
=
obj
.
generateEventMsg
()
type
=
self
.
getMsgFunId
(
msg
)
self
.
sendMsg
(
msg
)
self
.
sn
=
self
.
sn
+
1
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>:"
+
msg
,
self
.
websocketId
)
sleep
(
0.1
)
gpsMsg
=
self
.
genGPSMsg
(
self
.
gpsLine
[
gpsLineIndex
][
"lat"
],
self
.
gpsLine
[
gpsLineIndex
][
"lng"
])
type
=
self
.
getMsgFunId
(
gpsMsg
)
self
.
sendMsg
(
gpsMsg
)
self
.
sn
=
self
.
sn
+
1
self
.
websocket
.
sendMsgToClient
(
type
+
">>>>:"
+
gpsMsg
,
self
.
websocketId
)
#根据特定参数,生成GPS消息
def
genGPSMsg
(
self
,
latitude
,
longtitude
):
gpsObj
=
GPS_protocol_m300
(
DEV_ID
=
self
.
carId
,
waterCode
=
self
.
sn
)
gpsObj
.
setLatitude
(
latitude
)
gpsObj
.
setLongitude
(
longtitude
)
gpsObj
.
setDirection
(
self
.
getDirAngle
())
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeArray
=
time
.
localtime
(
timeS
)
UTCTime
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
gpsObj
.
setUTCTime
(
UTCTime
)
msg
=
gpsObj
.
generateMsg
()
return
msg
#根据特定参数,生成GPS消息体,不包含消息头
def
genGPSData
(
self
,
latitude
,
longtitude
):
gpsObj
=
GPS_protocol_m300
(
DEV_ID
=
self
.
carId
,
waterCode
=
self
.
sn
)
gpsObj
.
setLatitude
(
latitude
)
gpsObj
.
setLongitude
(
longtitude
)
gpsObj
.
setDirection
(
self
.
getDirAngle
())
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeArray
=
time
.
localtime
(
timeS
)
UTCTime
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
gpsObj
.
setDateInfo
(
UTCTime
)
data
=
gpsObj
.
getMsgBody
()
return
data
#根据当前所在GPS点,生成GPS消息体,不包含消息头
def
genGPSData2
(
self
):
gpsObj
=
GPS_protocol_m300
(
DEV_ID
=
self
.
carId
,
waterCode
=
self
.
sn
)
gpsObj
.
setLatitude
(
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lat"
])
gpsObj
.
setLongitude
(
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lng"
])
gpsObj
.
setDirection
(
self
.
getDirAngle
())
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeArray
=
time
.
localtime
(
timeS
)
UTCTime
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
gpsObj
.
setDateInfo
(
UTCTime
)
data
=
gpsObj
.
generateGpsData
()
return
data
# 根据特定参数,生成OBD CAN消息
def
genOBDMsg
(
self
,
fireStatus
=
1
,
ACCStatus
=
0
,
engineSpeed
=
300
,
speed
=
0
,
meterMileage
=
6000
,
\
totailMileage
=
600
,
totalOilExpend
=
30
,
totalRunTime
=
10
):
OBDObj
=
OBDCAN_protocol_m300
(
DEV_ID
=
self
.
carId
,
waterCode
=
self
.
sn
)
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeArray
=
time
.
localtime
(
timeS
)
UTCTime
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
OBDObj
.
setTimeInfo
(
UTCTime
)
OBDObj
.
setAccstatus
(
ACCStatus
)
OBDObj
.
setEngineSpeed
(
engineSpeed
)
# 设置发动机转速
OBDObj
.
setSpeed
(
speed
)
# 设置车辆速度
OBDObj
.
setDashboardTotailMilleage
(
meterMileage
)
# 设置仪表里程值
OBDObj
.
setTotalMilleage
(
totailMileage
)
# 设置总里程值
OBDObj
.
setTotalOil
(
totalOilExpend
)
# 设置总耗油量
OBDObj
.
setCarTotalRunTime
(
totalRunTime
)
# 设置车辆运行时间
msg
=
OBDObj
.
generateOBDReportCANMsg
()
return
msg
###########################################################
#获取方向角
###########################################################
def
getDirAngle
(
self
):
dire
=
self
.
directAngle
if
self
.
travelDirection
==
0
:
if
self
.
gpsLineIndex
==
0
:
return
int
(
self
.
directAngle
)
lngCut
=
(
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lng"
])
-
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
-
1
][
"lng"
]))
*
1000000
latCut
=
(
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lat"
])
-
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
-
1
][
"lat"
]))
*
1000000
if
latCut
==
0
:
#除数维度不能为0
latCut
=
1
if
lngCut
==
0
or
latCut
==
0
:
return
int
(
self
.
directAngle
)
val
=
lngCut
/
latCut
dire
=
math
.
atan2
(
1
,
val
)
*
180
/
math
.
pi
if
lngCut
>
0
and
latCut
>
0
:
dire
=
90
-
dire
if
lngCut
<
0
and
latCut
>
0
:
dire
=
270
+
180
-
dire
elif
latCut
<
0
and
lngCut
>
0
:
dire
=
270
-
dire
elif
lngCut
<
0
and
latCut
<
0
:
dire
=
180
+
90
-
dire
self
.
directAngle
=
dire
elif
self
.
travelDirection
==
1
:
if
self
.
gpsLineIndex
==
(
len
(
self
.
gpsLine
)
-
1
):
return
int
(
self
.
directAngle
)
lngCut
=
(
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lng"
])
-
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
+
1
][
"lng"
]))
*
1000000
latCut
=
(
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
][
"lat"
])
-
float
(
self
.
gpsLine
[
self
.
gpsLineIndex
+
1
][
"lat"
]))
*
1000000
if
latCut
==
0
:
#除数维度不能为0
latCut
=
1
if
lngCut
==
0
or
latCut
==
0
:
return
int
(
self
.
directAngle
)
val
=
lngCut
/
latCut
dire
=
math
.
atan2
(
1
,
val
)
*
180
/
math
.
pi
if
lngCut
>
0
and
latCut
>
0
:
dire
=
90
-
dire
if
lngCut
<
0
and
latCut
>
0
:
dire
=
270
+
180
-
dire
elif
latCut
<
0
and
lngCut
>
0
:
dire
=
270
-
dire
elif
lngCut
<
0
and
latCut
<
0
:
dire
=
180
+
90
-
dire
self
.
directAngle
=
dire
return
int
(
dire
)
###########################################################
# 将要发送的数据保存到本地
###########################################################
def
saveMsgLocal
(
self
,
fName
,
data
):
timeStamp
=
time
.
time
()
timeArray
=
time
.
localtime
(
timeStamp
)
curTime
=
time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
,
timeArray
)
thePath
=
'data/protocolTools/sendMsg'
if
not
os
.
path
.
exists
(
thePath
):
os
.
makedirs
(
thePath
)
thePath
=
thePath
+
"/"
+
self
.
carId
+
"/"
if
not
os
.
path
.
exists
(
thePath
):
os
.
makedirs
(
thePath
)
with
open
(
thePath
+
fName
,
"a"
,
encoding
=
"utf-8"
)
as
fi
:
fi
.
write
(
"["
+
curTime
+
"]"
+
data
+
"
\n
"
)
if
__name__
==
"__main__"
:
pass
lib/socket/service/MessageSimulaterDataService.py
View file @
f6a8a2c6
#coding:utf-8
#coding:utf-8
##################################################
##################################################
# 定义
M500
车机行驶过程中产生的数据类
# 定义
车安优
车机行驶过程中产生的数据类
##################################################
##################################################
import
datetime
import
datetime
import
json
import
json
...
...
lib/socket/service/ProtocolSimulaterService.py
View file @
f6a8a2c6
...
@@ -44,6 +44,7 @@ class ProtocolSimulaterService():
...
@@ -44,6 +44,7 @@ class ProtocolSimulaterService():
# 用来控制发送消息的方式(是正常发送,还是将发送的数据保存到本地,不发送)
# 用来控制发送消息的方式(是正常发送,还是将发送的数据保存到本地,不发送)
'''
'''
self
.
sendType
=
0
self
.
sendType
=
0
self
.
GPSValid
=
1
#用来控制GPS数据是有效还是无效 0:无效 1:有效
# 定义要发送的obd数据
# 定义要发送的obd数据
self
.
OBDdata
=
{
"fireStatus"
:
1
,
"ACCStatus"
:
0
,
"engineSpeed"
:
300
,
"speed"
:
0
,
"meterMileage"
:
6000
,
"totailMileage"
:
600
,
"totalOilExpen"
:
30
,
"totalRunTime"
:
10
}
self
.
OBDdata
=
{
"fireStatus"
:
1
,
"ACCStatus"
:
0
,
"engineSpeed"
:
300
,
"speed"
:
0
,
"meterMileage"
:
6000
,
"totailMileage"
:
600
,
"totalOilExpen"
:
30
,
"totalRunTime"
:
10
}
# 定义初始的obd数据,与上面的OBD数据保持一致,主要用于汽车行驶过程中数据变化量的计算
# 定义初始的obd数据,与上面的OBD数据保持一致,主要用于汽车行驶过程中数据变化量的计算
...
@@ -79,6 +80,8 @@ class ProtocolSimulaterService():
...
@@ -79,6 +80,8 @@ class ProtocolSimulaterService():
self
.
sendDur
=
int
(
data
)
self
.
sendDur
=
int
(
data
)
def
setSendType
(
self
,
data
):
def
setSendType
(
self
,
data
):
self
.
sendType
=
data
self
.
sendType
=
data
def
setGPSValid
(
self
,
data
):
self
.
GPSValid
=
data
...
@@ -374,7 +377,7 @@ class ProtocolSimulaterService():
...
@@ -374,7 +377,7 @@ class ProtocolSimulaterService():
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"totalOil"
:
"100000"
,
"totalOil"
:
"100000"
,
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"securityData"
:
{
"securityStatus"
:
1
0
7
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"securityData"
:
{
"securityStatus"
:
1
3
7
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"0010"
:
{
"allRapidlyAccelerateCount"
:
"5"
,
"allSharpSlowdownCount"
:
"6"
,
"allSharpTurn"
:
"4"
,
"0010"
:
{
"allRapidlyAccelerateCount"
:
"5"
,
"allSharpSlowdownCount"
:
"6"
,
"allSharpTurn"
:
"4"
,
"dataProperty"
:
"1"
}}}
"dataProperty"
:
"1"
}}}
...
@@ -430,7 +433,7 @@ class ProtocolSimulaterService():
...
@@ -430,7 +433,7 @@ class ProtocolSimulaterService():
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"totalOil"
:
"100000"
,
"totalOil"
:
"100000"
,
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"securityData"
:
{
"securityStatus"
:
1
0
7
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"securityData"
:
{
"securityStatus"
:
1
3
7
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"0011"
:
{
"allRapidlyAccelerateCount"
:
"5"
,
"allSharpSlowdownCount"
:
"6"
,
"allSharpTurn"
:
"4"
,
"0011"
:
{
"allRapidlyAccelerateCount"
:
"5"
,
"allSharpSlowdownCount"
:
"6"
,
"allSharpTurn"
:
"4"
,
"dataProperty"
:
"1"
}}}
"dataProperty"
:
"1"
}}}
...
@@ -460,6 +463,10 @@ class ProtocolSimulaterService():
...
@@ -460,6 +463,10 @@ class ProtocolSimulaterService():
gpsObj
=
GPSReport_protocol
(
DEV_ID
=
self
.
carId
,
WATER_CODE
=
self
.
sn
)
gpsObj
=
GPSReport_protocol
(
DEV_ID
=
self
.
carId
,
WATER_CODE
=
self
.
sn
)
gpsObj
.
setLatitude
(
latitude
)
gpsObj
.
setLatitude
(
latitude
)
gpsObj
.
setLongitude
(
longtitude
)
gpsObj
.
setLongitude
(
longtitude
)
if
self
.
GPSValid
==
1
:
gpsObj
.
setGpsValid
(
1
)
elif
self
.
GPSValid
==
0
:
gpsObj
.
setGpsValid
(
0
)
gpsObj
.
setDirectionAngle
(
self
.
getDirAngle
())
gpsObj
.
setDirectionAngle
(
self
.
getDirAngle
())
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeArray
=
time
.
localtime
(
timeS
)
timeArray
=
time
.
localtime
(
timeS
)
...
@@ -473,6 +480,10 @@ class ProtocolSimulaterService():
...
@@ -473,6 +480,10 @@ class ProtocolSimulaterService():
gpsObj
=
GPSReport_protocol
(
DEV_ID
=
self
.
carId
,
WATER_CODE
=
self
.
sn
)
gpsObj
=
GPSReport_protocol
(
DEV_ID
=
self
.
carId
,
WATER_CODE
=
self
.
sn
)
gpsObj
.
setLatitude
(
latitude
)
gpsObj
.
setLatitude
(
latitude
)
gpsObj
.
setLongitude
(
longtitude
)
gpsObj
.
setLongitude
(
longtitude
)
if
self
.
GPSValid
==
1
:
gpsObj
.
setGpsValid
(
1
)
elif
self
.
GPSValid
==
0
:
gpsObj
.
setGpsValid
(
0
)
gpsObj
.
setDirectionAngle
(
self
.
getDirAngle
())
gpsObj
.
setDirectionAngle
(
self
.
getDirAngle
())
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeS
=
int
(
time
.
time
())
-
8
*
3600
timeArray
=
time
.
localtime
(
timeS
)
timeArray
=
time
.
localtime
(
timeS
)
...
...
static/js/m300Tools/m300.js
View file @
f6a8a2c6
...
@@ -18,6 +18,8 @@ function m300ProtocolManTab(e){
...
@@ -18,6 +18,8 @@ function m300ProtocolManTab(e){
$
(
location
).
attr
(
'
href
'
,
"
http://
"
+
window
.
location
.
host
+
"
/m300Tools/P_m300Protocol_view/P_GPS_m300_page
"
);
$
(
location
).
attr
(
'
href
'
,
"
http://
"
+
window
.
location
.
host
+
"
/m300Tools/P_m300Protocol_view/P_GPS_m300_page
"
);
}
else
if
(
id
==
"
P_CAN_m300_msg
"
){
}
else
if
(
id
==
"
P_CAN_m300_msg
"
){
$
(
location
).
attr
(
'
href
'
,
"
http://
"
+
window
.
location
.
host
+
"
/m300Tools/P_m300Protocol_view/P_CAN_m300_page
"
);
$
(
location
).
attr
(
'
href
'
,
"
http://
"
+
window
.
location
.
host
+
"
/m300Tools/P_m300Protocol_view/P_CAN_m300_page
"
);
}
else
if
(
id
==
"
P_alarm_m300_msg
"
){
$
(
location
).
attr
(
'
href
'
,
"
http://
"
+
window
.
location
.
host
+
"
/m300Tools/P_m300Protocol_view/P_alarm_m300_page
"
);
}
else
{
}
else
{
alert
(
id
)
alert
(
id
)
}
}
...
...
templates/m300Tools/report/P_CAN_m300_page.html
View file @
f6a8a2c6
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<option
value=
"1024"
>
加密
</option>
<option
value=
"1024"
>
加密
</option>
</select>
</select>
</div>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
心跳
消息内容:
</H3>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
OBD
消息内容:
</H3>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li><label>
时间:
</label><input
id=
"timeInfo"
type=
"text"
class=
"form-control"
value=
""
></li>
<li><label>
时间:
</label><input
id=
"timeInfo"
type=
"text"
class=
"form-control"
value=
""
></li>
<li><label>
协议类别:
</label>
<li><label>
协议类别:
</label>
...
...
templates/m300Tools/report/P_GPS_m300_page.html
View file @
f6a8a2c6
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<option
value=
"1024"
>
加密
</option>
<option
value=
"1024"
>
加密
</option>
</select>
</select>
</div>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
心跳
消息内容:
</H3>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
GPS
消息内容:
</H3>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li><label>
日期:
</label><input
id=
"dateInfo"
type=
"text"
class=
"form-control"
value=
""
></li>
<li><label>
日期:
</label><input
id=
"dateInfo"
type=
"text"
class=
"form-control"
value=
""
></li>
<li
style=
"width:495px;"
><label>
维度:
</label><sapn>
<li
style=
"width:495px;"
><label>
维度:
</label><sapn>
...
...
templates/m300Tools/report/P_alarm_m300_page.html
0 → 100644
View file @
f6a8a2c6
{% extends "m300Tools/report/P_heartBeat_m300_page.html" %}
{% block title %}Alarm_msg{% endblock %}
{% block content_1 %}
<div
id=
"container3"
style=
"width:100%;min-height:750px;float:left;_background:green;margin-top:10px;_border-top: 1px solid #eee;"
>
<div
style=
"width:100%;_background:green;padding:5px;padding-top:0px;"
>
<h3
style=
"border-bottom: 1px solid #eee;"
>
设置消息头:
</h3>
<label>
功能ID:
</label><input
id=
"FUNID"
type=
"text"
class=
"form-control"
disabled=
"disabled"
value=
"0021"
style=
"width:80px;"
>
<label>
消息序列号:
</label><input
id=
"waterCode"
type=
"text"
class=
"form-control"
value=
"1"
style=
"width:60px;"
>
<label>
设备ID:
</label><input
id=
"DEV_ID"
type=
"text"
class=
"form-control"
value=
"M202004070000"
style=
"width:150px;"
>
<label>
是否加密:
</label><select
style=
"width:100px;"
id=
"encryptionType"
class=
"form-control"
>
<option
value=
"0"
>
不加密
</option>
<option
value=
"1024"
>
加密
</option>
</select>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置报警消息内容:
</H3>
<div
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
>
<h4>
GPS报警信息
</h4>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li><label>
日期:
</label><input
id=
"dateInfo"
type=
"text"
class=
"form-control"
value=
""
></li>
<li
style=
"width:495px;"
><label>
维度:
</label><sapn>
<input
id=
"latitude"
type=
"text"
class=
"form-control"
value=
"40.22077"
>
<select
style=
"width:80px;"
id=
"latitudeType"
class=
"form-control"
>
<option
value=
"0"
>
北纬
</option>
<option
value=
"1"
>
南纬
</option></select>
</sapn></li>
<li
style=
"width:495px;"
><label>
经度:
</label><sapn>
<input
id=
"longitude"
type=
"text"
class=
"form-control"
value=
"116.23128"
>
<select
style=
"width:80px;"
id=
"longitudeType"
class=
"form-control"
>
<option
value=
"0"
>
东经
</option>
<option
value=
"1"
>
西经
</option></select>
</sapn></li>
<li><label>
定位星数:
</label><input
id=
"positionStar"
type=
"text"
class=
"form-control"
value=
"2"
></li>
<li><label>
速度:
</label><input
id=
"speed"
type=
"text"
class=
"form-control"
value=
"66.0"
></li>
<li><label>
方向角:
</label><input
id=
"direction"
type=
"text"
class=
"form-control"
value=
"55.3"
></li>
<li><label>
海拔高度:
</label><input
id=
"altitude"
type=
"text"
class=
"form-control"
value=
"11.0"
></li>
<li><label>
ACC状态:
</label><select
style=
"width:155px;"
id=
"ACCStatus"
class=
"form-control"
>
<option
value=
"0"
>
关
</option>
<option
value=
"1"
selected=
"selected"
>
开
</option></select></li>
<li><label
style=
"word-break:break-all;font-size:10px;"
>
汽车电瓶电压:
</label><input
id=
"valtage"
type=
"text"
class=
"form-control"
value=
"36.0"
></li>
<li><label
style=
"word-break:break-all;font-size:10px;"
>
汽车OBD速度:
</label><input
id=
"OBDSpeed"
type=
"text"
class=
"form-control"
value=
"66.4"
></li>
<li><label
style=
"word-break:break-all;font-size:10px;"
>
GPS定位是否有效:
</label><select
style=
"width:155px;"
id=
"valid_1"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
selected=
"selected"
>
是
</option></select></li>
<li><label
style=
"word-break:break-all;font-size:10px;"
>
车机是否处于修车模式:
</label><select
style=
"width:155px;"
id=
"valid_2"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"128"
>
是
</option></select></li>
<li><label
style=
"word-break:break-all;font-size:10px;"
>
驾驶循环标签:
</label><input
id=
"tripMark"
type=
"text"
class=
"form-control"
value=
"0"
></li>
</ul>
</div>
<div
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;margin-top:5px;"
>
<h4>
GSM主基站数据包
</h4>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li><label>
运营商类别:
</label><sapn>
<select
style=
"width:120px;"
id=
"operatorType"
class=
"form-control"
>
<option
value=
"1"
>
移动
</option>
<option
value=
"2"
>
联通
</option>
<option
value=
"3"
>
电信
</option>
</select>
</sapn></li>
<li><label>
服务器LAC:
</label><input
id=
"LAC"
type=
"text"
class=
"form-control"
value=
"1234"
></li>
<li><label
style=
"word-break:break-all;font-size:10px;"
>
服务器CellID:
</label><input
id=
"CellID"
type=
"text"
class=
"form-control"
value=
"5678"
></li>
</ul>
</div>
<div
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;margin-top:5px;"
>
<h4>
CAN状态数据包
</h4>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li
style=
"width:350px;"
><label>
状态掩码:
</label><input
style=
"width:250px;"
id=
"statusMask"
type=
"text"
class=
"form-control"
value=
"ffffffffffffffffffff"
></li>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
安全状态:
</h4>
<div
style=
"width:100%"
id=
"safeStatus"
>
<sapn><label>
ACC状态:
</label><select
style=
"width:65px;"
id=
"CAN_accStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
>
是
</option></select></sapn>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
设防撤防状态:
</label><select
style=
"width:65px;"
id=
"defenseStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"2"
>
是
</option></select></sapn>
<sapn><label>
脚刹状态:
</label><select
style=
"width:65px;"
id=
"brakeStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"4"
>
是
</option></select></sapn>
<sapn><label>
是否踩油门:
</label><select
style=
"width:65px;"
id=
"acceleratorStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"8"
>
是
</option></select></sapn>
<sapn><label>
手刹状态:
</label><select
style=
"width:65px;"
id=
"handBrakeStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"16"
>
是
</option></select></sapn>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
主驾驶安全带:
</label><select
style=
"width:65px;"
id=
"mainSafetyBelt"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"32"
>
是
</option></select></sapn>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
副驾驶安全带:
</label><select
style=
"width:65px;"
id=
"subSafetyBelt"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"64"
>
是
</option></select></sapn>
</div>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
门状态:
</h4>
<div
style=
"width:100%"
id=
"doorStatus"
>
<sapn><label>
左前门:
</label><select
style=
"width:65px;"
id=
"lfDoorStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
>
是
</option></select></sapn>
<sapn><label>
右前门:
</label><select
style=
"width:65px;"
id=
"rfDoorStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"2"
>
是
</option></select></sapn>
<sapn><label>
左后门:
</label><select
style=
"width:65px;"
id=
"lbDoorStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"4"
>
是
</option></select></sapn>
<sapn><label>
右后门:
</label><select
style=
"width:65px;"
id=
"rbDoorStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"8"
>
是
</option></select></sapn>
<sapn><label>
后备箱:
</label><select
style=
"width:65px;"
id=
"trunk"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"16"
>
是
</option></select></sapn>
<sapn><label>
发动机盖:
</label><select
style=
"width:65px;"
id=
"enginCover"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"32"
>
是
</option></select></sapn>
</div>
</li>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
锁状态:
</h4>
<div
style=
"width:100%"
id=
"lockStatus"
>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
左前门锁状态:
</label><select
style=
"width:65px;"
id=
"lfDoorLockStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
>
是
</option></select></sapn>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
右前门锁状态:
</label><select
style=
"width:65px;"
id=
"rfDoorLockStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"2"
>
是
</option></select></sapn>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
左后门锁状态:
</label><select
style=
"width:65px;"
id=
"lbDoorLockStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"4"
>
是
</option></select></sapn>
<sapn><label
style=
"word-break:break-all;font-size:10px;"
>
右后门锁状态:
</label><select
style=
"width:65px;"
id=
"rbDoorLockStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"8"
>
是
</option></select></sapn>
</div>
</li>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
窗户状态:
</h4>
<div
style=
"width:100%"
id=
"windowStatus"
>
<sapn><label
style=
"width:80px;"
>
左前窗:
</label><select
style=
"width:65px;"
id=
"lfWindowStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
右前窗:
</label><select
style=
"width:65px;"
id=
"rfWindowStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"2"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
左后窗:
</label><select
style=
"width:65px;"
id=
"lbWindowStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"4"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
右后窗:
</label><select
style=
"width:65px;"
id=
"rbWindowStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"8"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
天窗开关:
</label><select
style=
"width:65px;"
id=
"topWindowStatus"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"16"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
左转向灯:
</label><select
style=
"width:65px;"
id=
"lTurnLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"32"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
右转向灯:
</label><select
style=
"width:65px;"
id=
"rTurnLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"64"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
阅读灯:
</label><select
style=
"width:65px;"
id=
"readLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"128"
>
是
</option></select></sapn>
</div>
</li>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
灯状态:
</h4>
<div
style=
"width:100%"
id=
"lightStatus"
>
<sapn><label
style=
"width:80px;"
>
近光灯:
</label><select
style=
"width:65px;"
id=
"lowHeadlight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
远光灯:
</label><select
style=
"width:65px;"
id=
"highHeadlight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"2"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
前雾灯:
</label><select
style=
"width:65px;"
id=
"ffogLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"4"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
后雾灯:
</label><select
style=
"width:65px;"
id=
"bfogLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"8"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
危险灯:
</label><select
style=
"width:65px;"
id=
"dangerLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"16"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
倒车灯:
</label><select
style=
"width:65px;"
id=
"backCarLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"32"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
auto灯:
</label><select
style=
"width:65px;"
id=
"autoLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"64"
>
是
</option></select></sapn>
<sapn><label
style=
"width:80px;"
>
示宽灯:
</label><select
style=
"width:65px;"
id=
"widthLight"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"128"
>
是
</option></select></sapn>
</div>
</li>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
开关状态A:
</h4>
<div
style=
"width:100%"
id=
"swichStatusA"
>
<sapn><label>
机油报警:
</label><select
style=
"width:65px;"
id=
"machineOilWarning"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"1"
>
是
</option></select></sapn>
<sapn><label>
燃油报警:
</label><select
style=
"width:65px;"
id=
"oilWarning"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"2"
>
是
</option></select></sapn>
<sapn><label>
雨刷报警:
</label><select
style=
"width:65px;"
id=
"wiperWarning"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"4"
>
是
</option></select></sapn>
<sapn><label>
喇叭报警:
</label><select
style=
"width:65px;"
id=
"loudsspeakerWaring"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"8"
>
是
</option></select></sapn>
<sapn><label>
空调:
</label><select
style=
"width:65px;"
id=
"airConditionerWaring"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"16"
>
是
</option></select></sapn>
<sapn><label>
后视镜状态:
</label><select
style=
"width:65px;"
id=
"backMirrorWaring"
class=
"form-control"
>
<option
value=
"0"
>
否
</option>
<option
value=
"32"
>
是
</option></select></sapn>
</div>
</li>
<li
style=
"width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;"
><h4>
开关状态B:
</h4>
<div
style=
"width:100%"
id=
"swichStatusB"
>
<sapn><label>
档位:
</label><select
style=
"width:100px;"
id=
"gears"
class=
"form-control"
>
<option
value=
"0"
>
P档
</option>
<option
value=
"16"
>
R档
</option>
<option
value=
"32"
>
N档
</option>
<option
value=
"48"
>
D档
</option>
<option
value=
"64"
>
1档
</option>
<option
value=
"80"
>
2档
</option>
<option
value=
"96"
>
3档
</option>
<option
value=
"112"
>
4档
</option>
<option
value=
"128"
>
5档
</option>
<option
value=
"144"
>
6档
</option>
<option
value=
"160"
>
M档
</option>
<option
value=
"176"
>
S档
</option></select></sapn>
</div>
</li>
</ul>
<sapn><label>
报警类别:
</label><input
id=
"alarmType"
type=
"text"
class=
"form-control"
value=
"0001"
></sapn>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
控制:
</H3>
<div
style=
"width:100%;padding:5px;margin-top:10px;"
>
<button
type=
"button"
class=
"btn btn-primary"
id=
"sendMsgBtn"
>
发送消息
</button>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
返回信息:
</H3>
<div
style=
"width:100%;padding:5px;margin-top:10px;"
>
<textarea
id=
"showFeedback"
style=
"width:100%;padding:5px;"
rows=
"8"
></textarea>
</div>
</div>
<script>
//发送GPS数据
$
(
"
#sendMsgBtn
"
).
click
(
function
(){
var
FUNID
=
$
(
"
#FUNID
"
).
val
();
var
waterCode
=
$
(
"
#waterCode
"
).
val
();
var
DEV_ID
=
$
(
"
#DEV_ID
"
).
val
();
var
encryptionType
=
$
(
"
#encryptionType
"
).
val
();
var
dateInfo
=
$
(
"
#dateInfo
"
).
val
();
var
latitude
=
parseFloat
(
$
(
"
#latitude
"
).
val
());
var
latitudeType
=
parseInt
(
$
(
"
#latitudeType
"
).
val
());
if
(
latitudeType
==
1
){
latitude
=
latitude
+
2147483648
/
1000000
}
var
longitude
=
parseFloat
(
$
(
"
#longitude
"
).
val
());
var
longitudeType
=
parseInt
(
$
(
"
#longitudeType
"
).
val
());
if
(
longitudeType
==
1
){
longitude
=
longitude
+
2147483648
/
1000000
}
var
positionStar
=
$
(
"
#positionStar
"
).
val
();
var
speed
=
$
(
"
#speed
"
).
val
();
var
direction
=
$
(
"
#direction
"
).
val
();
var
altitude
=
$
(
"
#altitude
"
).
val
();
var
ACCStatus
=
$
(
"
#ACCStatus
"
).
val
();
var
valtage
=
$
(
"
#valtage
"
).
val
();
var
OBDSpeed
=
$
(
"
#OBDSpeed
"
).
val
();
var
valid_1
=
parseInt
(
$
(
"
#valid_1
"
).
val
());
var
valid_2
=
parseInt
(
$
(
"
#valid_2
"
).
val
());
var
valid
=
valid_1
+
valid_2
var
tripMark
=
$
(
"
#tripMark
"
).
val
();
var
data
=
{};
data
[
"
FUNID
"
]
=
FUNID
;
data
[
"
waterCode
"
]
=
waterCode
;
data
[
"
DEV_ID
"
]
=
DEV_ID
;
data
[
"
encryptionType
"
]
=
encryptionType
;
data
[
"
dateInfo
"
]
=
dateInfo
;
data
[
"
latitude
"
]
=
latitude
;
data
[
"
longitude
"
]
=
longitude
;
data
[
"
positionStar
"
]
=
positionStar
;
data
[
"
speed
"
]
=
speed
;
data
[
"
direction
"
]
=
direction
;
data
[
"
altitude
"
]
=
altitude
;
data
[
"
ACCStatus
"
]
=
ACCStatus
;
data
[
"
valtage
"
]
=
valtage
;
data
[
"
OBDSpeed
"
]
=
OBDSpeed
;
data
[
"
valid
"
]
=
valid
;
data
[
"
tripMark
"
]
=
tripMark
;
var
host
=
window
.
location
.
host
;
$
(
"
#showFeedback
"
).
val
(
""
)
$
.
ajax
({
url
:
"
http://
"
+
host
+
"
/m300Tools/P_m300Protocol_process/porcessGPSMsg
"
,
type
:
"
post
"
,
data
:
data
,
dataType
:
"
json
"
,
success
:
function
(
data
){
if
(
data
.
status
==
200
){
//window.location.reload()
var
theShow
=
"
原始数据:
"
+
data
.
msgSend
+
"
\n
"
;
theShow
=
theShow
+
"
收到数据:
"
+
data
.
result
+
"
\n
"
;
theShow
=
theShow
+
"
收到数据16进制:
"
+
data
.
rev
+
"
\n
"
;
theShow
=
theShow
+
"
解析数据:
"
+
JSON
.
stringify
(
data
.
orgRev
)
+
"
\n
"
;
$
(
"
#showFeedback
"
).
val
(
theShow
)
}
else
{
$
(
"
#showFeedback
"
).
val
(
data
.
message
)
alert
(
data
.
message
);
}
}
});
});
//设置当前时间到UTC时间输入框
(
function
(){
var
curTime
=
getCurTime
();
$
(
"
#dateInfo
"
).
val
(
curTime
);
})();
</script>
{% endblock %}
\ No newline at end of file
templates/m300Tools/report/P_heartBeat_m300_page.html
View file @
f6a8a2c6
...
@@ -39,6 +39,7 @@
...
@@ -39,6 +39,7 @@
<li
role=
"presentation"
><a
id=
"P_version_m300_msg"
{%
if
arg.path[2]=
="P_version_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
版本消息
</b></a></li>
<li
role=
"presentation"
><a
id=
"P_version_m300_msg"
{%
if
arg.path[2]=
="P_version_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
版本消息
</b></a></li>
<li
role=
"presentation"
><a
id=
"P_GPS_m300_msg"
{%
if
arg.path[2]=
="P_GPS_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
GPS消息
</b></a></li>
<li
role=
"presentation"
><a
id=
"P_GPS_m300_msg"
{%
if
arg.path[2]=
="P_GPS_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
GPS消息
</b></a></li>
<li
role=
"presentation"
><a
id=
"P_CAN_m300_msg"
{%
if
arg.path[2]=
="P_CAN_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
CAN消息
</b></a></li>
<li
role=
"presentation"
><a
id=
"P_CAN_m300_msg"
{%
if
arg.path[2]=
="P_CAN_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
CAN消息
</b></a></li>
<li
role=
"presentation"
><a
id=
"P_alarm_m300_msg"
{%
if
arg.path[2]=
="P_alarm_m300_page"
%}
class=
"link-tab"
{%
endif
%}
onclick=
"m300ProtocolManTab(this)"
>
报警消息
</b></a></li>
</ul>
</ul>
{% endblock %}
{% endblock %}
{% block content_1 %}
{% block content_1 %}
...
...
templates/m300Tools/report/P_login_m300_page.html
View file @
f6a8a2c6
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<option
value=
"1024"
>
加密
</option>
<option
value=
"1024"
>
加密
</option>
</select>
</select>
</div>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
心跳
消息内容:
</H3>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
登录
消息内容:
</H3>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<label
style=
"color:red;width:130px;"
>
登录消息无消息体...
</label>
<label
style=
"color:red;width:130px;"
>
登录消息无消息体...
</label>
</ul>
</ul>
...
...
templates/m300Tools/report/P_version_m300_page.html
View file @
f6a8a2c6
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<option
value=
"1024"
>
加密
</option>
<option
value=
"1024"
>
加密
</option>
</select>
</select>
</div>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
心跳
消息内容:
</H3>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置
版本
消息内容:
</H3>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li><label>
软件版本号:
</label><input
id=
"SWVersion"
type=
"text"
class=
"form-control"
value=
"VSTA000GV100"
></li>
<li><label>
软件版本号:
</label><input
id=
"SWVersion"
type=
"text"
class=
"form-control"
value=
"VSTA000GV100"
></li>
<li><label>
软件日期:
</label><input
id=
"SWDate"
type=
"text"
class=
"form-control"
value=
"2020-03-30"
></li>
<li><label>
软件日期:
</label><input
id=
"SWDate"
type=
"text"
class=
"form-control"
value=
"2020-03-30"
></li>
...
...
templates/protocolTools/report/GPS_protocol_page.html
View file @
f6a8a2c6
...
@@ -66,26 +66,26 @@
...
@@ -66,26 +66,26 @@
<li
style=
"width:100%;"
>
<li
style=
"width:100%;"
>
<h5><b>
状态位:
</b></h5>
<h5><b>
状态位:
</b></h5>
<label
style=
"font-size:12px;"
>
当前定位是否有效:
</label><select
id=
"isLocationValid"
class=
"form-control"
style=
"width:100px;"
>
<label
style=
"font-size:12px;"
>
当前定位是否有效:
</label><select
id=
"isLocationValid"
class=
"form-control"
style=
"width:100px;"
>
<option
value=
"1"
>
有效
</option>
<option
value=
"1
28
"
>
有效
</option>
<option
value=
"0"
>
无效
</option>
<option
value=
"0"
>
无效
</option>
</select>
</select>
<label
style=
"font-size:12px;"
>
当前定位模式:
</label><select
id=
"locationMode"
class=
"form-control"
style=
"width:170px;"
>
<label
style=
"font-size:12px;"
>
当前定位模式:
</label><select
id=
"locationMode"
class=
"form-control"
style=
"width:170px;"
>
<option
value=
"0"
>
自动模式
</option>
<option
value=
"0"
>
自动模式
</option>
<option
value=
"
2
"
>
单GPS模式
</option>
<option
value=
"
16
"
>
单GPS模式
</option>
<option
value=
"
4
"
>
单BDS模式
</option>
<option
value=
"
32
"
>
单BDS模式
</option>
<option
value=
"
6
"
>
GPS+BDS双模式
</option>
<option
value=
"
48
"
>
GPS+BDS双模式
</option>
</select>
</select>
<label
style=
"font-size:12px;"
>
定位类型:
</label><select
id=
"locationType"
class=
"form-control"
style=
"width:100px;"
>
<label
style=
"font-size:12px;"
>
定位类型:
</label><select
id=
"locationType"
class=
"form-control"
style=
"width:100px;"
>
<option
value=
"
32
"
>
2D定位
</option>
<option
value=
"
8
"
>
2D定位
</option>
<option
value=
"
48
"
>
3D定位
</option>
<option
value=
"
12
"
>
3D定位
</option>
</select>
</select>
<label
style=
"font-size:12px;"
>
统计里程模式:
</label><select
id=
"staticMileageMode"
class=
"form-control"
style=
"width:150px;"
>
<label
style=
"font-size:12px;"
>
统计里程模式:
</label><select
id=
"staticMileageMode"
class=
"form-control"
style=
"width:150px;"
>
<option
value=
"0"
>
GPS统计里程
</option>
<option
value=
"0"
>
GPS统计里程
</option>
<option
value=
"
64
"
>
OBD统计里程
</option>
<option
value=
"
2
"
>
OBD统计里程
</option>
</select>
</select>
<label
style=
"font-size:12px;"
>
车辆点熄火状态:
</label><select
id=
"fireStatus"
class=
"form-control"
style=
"width:100px;"
>
<label
style=
"font-size:12px;"
>
车辆点熄火状态:
</label><select
id=
"fireStatus"
class=
"form-control"
style=
"width:100px;"
>
<option
value=
"0"
>
熄火
</option>
<option
value=
"0"
>
熄火
</option>
<option
value=
"1
28
"
selected=
"selected"
>
点火
</option>
<option
value=
"1"
selected=
"selected"
>
点火
</option>
</select>
</select>
</li>
</li>
<li><label>
电瓶电压:
</label><input
id=
"valtage"
type=
"text"
class=
"form-control"
value=
"36.9"
></li>
<li><label>
电瓶电压:
</label><input
id=
"valtage"
type=
"text"
class=
"form-control"
value=
"36.9"
></li>
...
@@ -130,7 +130,7 @@
...
@@ -130,7 +130,7 @@
var
Vdop
=
$
(
"
#Vdop
"
).
val
();
var
Vdop
=
$
(
"
#Vdop
"
).
val
();
var
isLocationValid
=
parseInt
(
$
(
"
#isLocationValid
"
).
val
());
var
isLocationValid
=
parseInt
(
$
(
"
#isLocationValid
"
).
val
());
var
locationMode
=
parseInt
(
$
(
"
#
isLocationValid
"
).
val
());
var
locationMode
=
parseInt
(
$
(
"
#
locationMode
"
).
val
());
var
locationType
=
parseInt
(
$
(
"
#locationType
"
).
val
());
var
locationType
=
parseInt
(
$
(
"
#locationType
"
).
val
());
var
staticMileageMode
=
parseInt
(
$
(
"
#staticMileageMode
"
).
val
());
var
staticMileageMode
=
parseInt
(
$
(
"
#staticMileageMode
"
).
val
());
var
fireStatus
=
parseInt
(
$
(
"
#fireStatus
"
).
val
());
var
fireStatus
=
parseInt
(
$
(
"
#fireStatus
"
).
val
());
...
...
templates/protocolTools/report/M_carSimulater_page.html
View file @
f6a8a2c6
...
@@ -124,6 +124,7 @@
...
@@ -124,6 +124,7 @@
</h5>
</h5>
<div
id=
"event_area"
style=
"display:none;"
>
<div
id=
"event_area"
style=
"display:none;"
>
<div
style=
"margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;background:skyblue;"
>
<div
style=
"margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;background:skyblue;"
>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"insertAlarm_check"
onclick=
"eventSelect(this)"
checked
/>
终端插入报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"lowVoltage_check"
onclick=
"eventSelect(this)"
checked
/>
汽车电瓶低电压报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"lowVoltage_check"
onclick=
"eventSelect(this)"
checked
/>
汽车电瓶低电压报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"powerOff_check"
onclick=
"eventSelect(this)"
checked
/>
终端主电断电报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"powerOff_check"
onclick=
"eventSelect(this)"
checked
/>
终端主电断电报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"rapidlyAccelerateEvent_check"
onclick=
"eventSelect(this)"
checked
/>
急加速
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"rapidlyAccelerateEvent_check"
onclick=
"eventSelect(this)"
checked
/>
急加速
</label>
...
@@ -137,6 +138,7 @@
...
@@ -137,6 +138,7 @@
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"surplusOil_check"
onclick=
"eventSelect(this)"
checked
/>
剩余油量异常告警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"surplusOil_check"
onclick=
"eventSelect(this)"
checked
/>
剩余油量异常告警
</label>
</div>
</div>
<div
style=
"padding:10px;"
>
<div
style=
"padding:10px;"
>
<span
id=
"insertAlarm_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendInsertAlarmEvent(this)"
>
终端插入报警
</button></label></span>
<span
id=
"lowVoltage_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendLowVoltageEvent(this)"
>
汽车电瓶低电压报警
</button></label></span>
<span
id=
"lowVoltage_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendLowVoltageEvent(this)"
>
汽车电瓶低电压报警
</button></label></span>
<span
id=
"powerOff_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendPowerOffEvent(this)"
>
终端主电断电报警
</button></label></span>
<span
id=
"powerOff_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendPowerOffEvent(this)"
>
终端主电断电报警
</button></label></span>
<span
id=
"rapidlyAccelerateEvent_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendRapidlyAccelerateEvent(this)"
>
急加速
</button></label></span>
<span
id=
"rapidlyAccelerateEvent_button"
style=
"display:inline;"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"sendRapidlyAccelerateEvent(this)"
>
急加速
</button></label></span>
...
@@ -164,6 +166,10 @@
...
@@ -164,6 +166,10 @@
<span
style=
"margin-left:10px"
><label>
油耗(Km/L):
</label><input
style=
"width:80px;margin-right:5px;"
id=
"change_oilExpend"
type=
"text"
class=
"form-control"
value=
"10"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"changeOilExpend()"
>
改变油耗
</button></span>
<span
style=
"margin-left:10px"
><label>
油耗(Km/L):
</label><input
style=
"width:80px;margin-right:5px;"
id=
"change_oilExpend"
type=
"text"
class=
"form-control"
value=
"10"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"changeOilExpend()"
>
改变油耗
</button></span>
<span
style=
"margin-left:10px"
><label>
上报间隔(秒):
</label><input
style=
"width:80px;margin-right:5px;"
id=
"change_durTime"
type=
"text"
class=
"form-control"
value=
"5"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"changeDurTime()"
>
改变上报间隔
</button></span>
<span
style=
"margin-left:10px"
><label>
上报间隔(秒):
</label><input
style=
"width:80px;margin-right:5px;"
id=
"change_durTime"
type=
"text"
class=
"form-control"
value=
"5"
><button
type=
"button"
class=
"btn btn-primary"
onclick=
"changeDurTime()"
>
改变上报间隔
</button></span>
<span
style=
"margin-left:10px;"
><button
title=
"点击后,将会把上报的消息存到本地,不上报消息;用来模拟车机无信号的情况"
type=
"button"
class=
"btn btn-primary"
onclick=
"storeMsg()"
id=
"storeMsgBut"
>
存储上报消息
</button><label
style=
"color:red;"
id=
"storeMsgLab"
>
未存储...
</label></span>
<span
style=
"margin-left:10px;"
><button
title=
"点击后,将会把上报的消息存到本地,不上报消息;用来模拟车机无信号的情况"
type=
"button"
class=
"btn btn-primary"
onclick=
"storeMsg()"
id=
"storeMsgBut"
>
存储上报消息
</button><label
style=
"color:red;"
id=
"storeMsgLab"
>
未存储...
</label></span>
<span
style=
"margin-top:10px;display:inline-block;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:1px 10px;margin-left:10px;"
>
<label><input
name=
"GPSValie"
value=
"1"
type=
"radio"
onclick=
"changeGPSValid(this)"
checked=
"checked"
>
GPS有效
</label>
<label
style=
"margin-left:10px;color:red;"
><input
name=
"GPSValie"
value=
"0"
type=
"radio"
onclick=
"changeGPSValid(this)"
>
GPS无效
</label>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -646,7 +652,9 @@ function isShowEventArea(e){
...
@@ -646,7 +652,9 @@ function isShowEventArea(e){
//事件的选择与取消选择
//事件的选择与取消选择
function
eventSelect
(
e
){
function
eventSelect
(
e
){
if
(
$
(
e
).
is
(
'
:checked
'
)){
if
(
$
(
e
).
is
(
'
:checked
'
)){
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
lowVoltage_check
"
){
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
insertAlarm_check
"
){
$
(
"
#insertAlarm_button
"
).
css
(
"
display
"
,
"
inline
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
lowVoltage_check
"
){
$
(
"
#lowVoltage_button
"
).
css
(
"
display
"
,
"
inline
"
)
$
(
"
#lowVoltage_button
"
).
css
(
"
display
"
,
"
inline
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
powerOff_check
"
){
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
powerOff_check
"
){
$
(
"
#powerOff_button
"
).
css
(
"
display
"
,
"
inline
"
)
$
(
"
#powerOff_button
"
).
css
(
"
display
"
,
"
inline
"
)
...
@@ -670,7 +678,9 @@ function eventSelect(e){
...
@@ -670,7 +678,9 @@ function eventSelect(e){
$
(
"
#surplusOil_button
"
).
css
(
"
display
"
,
"
inline
"
)
$
(
"
#surplusOil_button
"
).
css
(
"
display
"
,
"
inline
"
)
}
}
}
else
{
}
else
{
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
lowVoltage_check
"
){
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
insertAlarm_check
"
){
$
(
"
#insertAlarm_button
"
).
css
(
"
display
"
,
"
none
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
lowVoltage_check
"
){
$
(
"
#lowVoltage_button
"
).
css
(
"
display
"
,
"
none
"
)
$
(
"
#lowVoltage_button
"
).
css
(
"
display
"
,
"
none
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
powerOff_check
"
){
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
powerOff_check
"
){
$
(
"
#powerOff_button
"
).
css
(
"
display
"
,
"
none
"
)
$
(
"
#powerOff_button
"
).
css
(
"
display
"
,
"
none
"
)
...
@@ -695,6 +705,12 @@ function eventSelect(e){
...
@@ -695,6 +705,12 @@ function eventSelect(e){
}
}
}
}
}
}
//发送终端插入报警
function
sendInsertAlarmEvent
(){
var
data
=
getPageData
()
url
=
"
/protocolTools/M_carSimulater_process/sendInsertAlarmEvent
"
;
sendjson
(
data
,
url
);
}
//发送汽车电瓶低电压报警
//发送汽车电瓶低电压报警
function
sendLowVoltageEvent
(){
function
sendLowVoltageEvent
(){
var
data
=
getPageData
()
var
data
=
getPageData
()
...
@@ -885,6 +901,20 @@ function storeMsg(){
...
@@ -885,6 +901,20 @@ function storeMsg(){
}
}
}
}
//控制GPS是否有效
function
changeGPSValid
(
e
){
var
data
=
{}
var
carId
=
$
(
"
#carId
"
).
val
()
var
GPSValid
=
$
(
e
).
val
()
data
[
"
carId
"
]
=
carId
data
[
"
GPSValid
"
]
=
GPSValid
//会话session数据
data
[
"
session
"
]
=
{}
var
sessionId
=
$
(
"
#curSession
"
).
val
()
data
[
"
session
"
][
"
sessionId
"
]
=
sessionId
url
=
"
/protocolTools/M_carSimulater_process/controlGPSValid
"
;
sendjson
(
data
,
url
);
}
</script>
</script>
{% endblock %}
{% endblock %}
</div>
</div>
...
...
templates/protocolTools/report/event_protocol_page.html
View file @
f6a8a2c6
...
@@ -293,6 +293,7 @@
...
@@ -293,6 +293,7 @@
</div>
</div>
<div
style=
"margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;background:skyblue;"
>
<div
style=
"margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;background:skyblue;"
>
<h5><b>
选择要上报的事件:
</b></h5>
<h5><b>
选择要上报的事件:
</b></h5>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0001"
onclick=
"eventSelect(this)"
/>
终端插入报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0003"
onclick=
"eventSelect(this)"
/>
汽车电瓶低电压报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0003"
onclick=
"eventSelect(this)"
/>
汽车电瓶低电压报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0004"
onclick=
"eventSelect(this)"
/>
终端主电断电报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0004"
onclick=
"eventSelect(this)"
/>
终端主电断电报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0010"
onclick=
"eventSelect(this)"
/>
点火
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0010"
onclick=
"eventSelect(this)"
/>
点火
</label>
...
@@ -310,6 +311,10 @@
...
@@ -310,6 +311,10 @@
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0037"
onclick=
"eventSelect(this)"
/>
高档低速报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"0037"
onclick=
"eventSelect(this)"
/>
高档低速报警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"004A"
onclick=
"eventSelect(this)"
/>
剩余油量异常告警
</label>
<label
style=
"padding: 0px 10px;"
><input
type=
"checkbox"
id=
"004A"
onclick=
"eventSelect(this)"
/>
剩余油量异常告警
</label>
</div>
</div>
<div
id=
"0001_area"
style=
"display:none;margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;_background:skyblue;"
>
<h5><b>
终端插入报警:
</b></h5>
<span><label>
插入时间:
</label><input
style=
"width:160px;"
id=
"insertTime"
type=
"text"
class=
"form-control"
value=
"5"
></span>
</div>
<div
id=
"0010_area"
style=
"display:none;margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;_background:skyblue;"
>
<div
id=
"0010_area"
style=
"display:none;margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;_background:skyblue;"
>
<h5><b>
点火事件:
</b></h5>
<h5><b>
点火事件:
</b></h5>
<span><label>
急加速总次数:
</label><input
style=
"width:80px;"
id=
"fire_allRapidlyAccelerateCount"
type=
"text"
class=
"form-control"
value=
"5"
></span>
<span><label>
急加速总次数:
</label><input
style=
"width:80px;"
id=
"fire_allRapidlyAccelerateCount"
type=
"text"
class=
"form-control"
value=
"5"
></span>
...
@@ -568,6 +573,9 @@ function getData(){
...
@@ -568,6 +573,9 @@ function getData(){
data
[
"
gpsInfo
"
]
=
getGPSData
();
data
[
"
gpsInfo
"
]
=
getGPSData
();
data
[
"
securityData
"
]
=
getSecurityData
()
data
[
"
securityData
"
]
=
getSecurityData
()
data
[
"
event
"
]
=
{};
data
[
"
event
"
]
=
{};
if
(
$
(
"
#0001
"
).
is
(
'
:checked
'
)){
data
[
"
event
"
][
"
0001
"
]
=
get0001
();
//获取熄火事件数据
}
if
(
$
(
"
#0003
"
).
is
(
'
:checked
'
)){
if
(
$
(
"
#0003
"
).
is
(
'
:checked
'
)){
data
[
"
event
"
][
"
0003
"
]
=
{};
//汽车电瓶低电压报警
data
[
"
event
"
][
"
0003
"
]
=
{};
//汽车电瓶低电压报警
}
}
...
@@ -610,6 +618,11 @@ function getData(){
...
@@ -610,6 +618,11 @@ function getData(){
return
data
;
return
data
;
}
}
function
get0001
(){
//获取终端插入报警事件数据
data
=
{};
data
[
"
insertTime
"
]
=
$
(
"
#insertTime
"
).
val
();
return
data
;
}
function
get0010
(){
//获取点火事件数据
function
get0010
(){
//获取点火事件数据
data
=
{};
data
=
{};
data
[
"
allRapidlyAccelerateCount
"
]
=
$
(
"
#fire_allRapidlyAccelerateCount
"
).
val
();
data
[
"
allRapidlyAccelerateCount
"
]
=
$
(
"
#fire_allRapidlyAccelerateCount
"
).
val
();
...
@@ -701,7 +714,9 @@ function isShowSecurityArea(e){
...
@@ -701,7 +714,9 @@ function isShowSecurityArea(e){
//事件多选按钮的处理事项
//事件多选按钮的处理事项
function
eventSelect
(
e
){
function
eventSelect
(
e
){
if
(
$
(
e
).
is
(
'
:checked
'
)){
if
(
$
(
e
).
is
(
'
:checked
'
)){
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0010
"
){
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0001
"
){
$
(
"
#0001_area
"
).
css
(
"
display
"
,
"
block
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0010
"
){
$
(
"
#0010_area
"
).
css
(
"
display
"
,
"
block
"
)
$
(
"
#0010_area
"
).
css
(
"
display
"
,
"
block
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0011
"
){
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0011
"
){
$
(
"
#0011_area
"
).
css
(
"
display
"
,
"
block
"
)
$
(
"
#0011_area
"
).
css
(
"
display
"
,
"
block
"
)
...
@@ -721,7 +736,9 @@ function eventSelect(e){
...
@@ -721,7 +736,9 @@ function eventSelect(e){
$
(
"
#004A_area
"
).
css
(
"
display
"
,
"
block
"
)
$
(
"
#004A_area
"
).
css
(
"
display
"
,
"
block
"
)
}
}
}
else
{
}
else
{
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0010
"
){
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0001
"
){
$
(
"
#0001_area
"
).
css
(
"
display
"
,
"
none
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0010
"
){
$
(
"
#0010_area
"
).
css
(
"
display
"
,
"
none
"
)
$
(
"
#0010_area
"
).
css
(
"
display
"
,
"
none
"
)
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0011
"
){
}
else
if
(
$
(
e
).
attr
(
"
id
"
)
==
"
0011
"
){
$
(
"
#0011_area
"
).
css
(
"
display
"
,
"
none
"
)
$
(
"
#0011_area
"
).
css
(
"
display
"
,
"
none
"
)
...
@@ -747,6 +764,7 @@ function eventSelect(e){
...
@@ -747,6 +764,7 @@ function eventSelect(e){
(
function
(){
(
function
(){
var
curTime
=
getCurTime
();
var
curTime
=
getCurTime
();
$
(
"
#UTCTime
"
).
val
(
curTime
);
$
(
"
#UTCTime
"
).
val
(
curTime
);
$
(
"
#insertTime
"
).
val
(
curTime
);
})();
})();
//设置当前时间戳到GPS信息时间戳输入框
//设置当前时间戳到GPS信息时间戳输入框
...
...
views/m300Tools/P_m300Protocol_view.py
View file @
f6a8a2c6
...
@@ -108,4 +108,18 @@ def P_CAN_m300_page():
...
@@ -108,4 +108,18 @@ def P_CAN_m300_page():
arg
=
{}
arg
=
{}
path
=
"m300Tools/report/P_CAN_m300_page.html"
path
=
"m300Tools/report/P_CAN_m300_page.html"
arg
[
"path"
]
=
reqPath
.
split
(
"/"
)
arg
[
"path"
]
=
reqPath
.
split
(
"/"
)
return
render_template
(
path
,
arg
=
arg
)
##########################################
# 【视图类型】访问OBD CAN协议页面
##########################################
@
P_m300Protocol_view
.
route
(
'/P_alarm_m300_page'
)
def
P_alarm_m300_page
():
#获取请求的路劲
url
=
request
.
url
reqPath
=
re
.
findall
(
"http://(.*)$"
,
url
)[
0
]
reqPath
=
re
.
findall
(
"/(.*)$"
,
reqPath
)[
0
]
arg
=
{}
path
=
"m300Tools/report/P_alarm_m300_page.html"
arg
[
"path"
]
=
reqPath
.
split
(
"/"
)
return
render_template
(
path
,
arg
=
arg
)
return
render_template
(
path
,
arg
=
arg
)
\ No newline at end of file
views/protocolTools/M_carSimulater_process.py
View file @
f6a8a2c6
...
@@ -395,6 +395,48 @@ def getConnects():
...
@@ -395,6 +395,48 @@ def getConnects():
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
#--------------------------------------- 发送事件逻辑 ---------------------------------------
#--------------------------------------- 发送事件逻辑 ---------------------------------------
##########################################
# 【接口类型】发送终端插入报警事件
##########################################
@
M_carSimulater_process
.
route
(
"/sendInsertAlarmEvent"
,
methods
=
[
'POST'
])
def
sendInsertAlarmEvent
():
params
=
request
.
get_data
()
params
=
json
.
loads
(
params
.
decode
(
"utf-8"
))
sessionId
=
params
[
"session"
][
"sessionId"
]
data
=
{}
if
not
sessionId
in
connects
.
keys
():
data
[
"status"
]
=
"4003"
data
[
"message"
]
=
"Error: 未启动服务,不可发送终端插入报警事件!"
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
service
=
connects
[
sessionId
][
"service"
]
try
:
jdata
=
{
"WATER_CODE"
:
"0003"
,
"DEV_ID"
:
"M121501010001"
,
"gpsInfo"
:
{
"UTCTime"
:
"2020-04-30 14:59:33"
,
"latitude"
:
"40.22077"
,
"longitude"
:
"116.23128"
,
"speed"
:
"80.8"
,
"directionAngle"
:
"80.8"
,
"elevation"
:
"2999.9"
,
"positionStar"
:
"3"
,
"Pdop"
:
"0.3"
,
"Hdop"
:
"0.4"
,
"Vdop"
:
"0.5"
,
"statusBit"
:
162
,
"valtage"
:
"36.9"
,
"OBDSpeed"
:
"60.9"
,
"engineSpeed"
:
"3000"
,
"GPSTotalMileage"
:
"12800"
,
"totalOil"
:
"100000"
,
"totalTime"
:
"2020002"
,
"GPSTimestamp"
:
"1588229973"
},
"securityData"
:
{
"securityStatus"
:
107
,
"doorStatus"
:
0
,
"lockStatus"
:
0
,
"windowStatus"
:
0
,
"lightStatus"
:
0
,
"onoffStatusA"
:
0
,
"onoffStatusB"
:
112
,
"dataByte"
:
249
},
"event"
:
{
"0001"
:
{}}}
jdata
[
"DEV_ID"
]
=
params
[
"carId"
]
obj
=
EventReport_protocol
(
data
=
jdata
)
gpsData
=
service
.
genGPSData2
()
obj
.
setGPSPkg
(
gpsData
)
obj
.
setEventType
(
"0001"
)
msg
=
obj
.
generateEventMsg
()
service
.
serviceSendMsg
(
msg
,
"发送终端插入报警事件"
)
service
.
setSn
(
service
.
getSn
()
+
1
)
data
[
"status"
]
=
"200"
data
[
"message"
]
=
"发送终端插入报警事件成功!"
except
BaseException
as
e
:
# 打印异常信息
traceback
.
print_exc
()
data
[
"status"
]
=
"4003"
data
[
"message"
]
=
"Error: 发送终端插入报警事件失败!"
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
##########################################
##########################################
# 【接口类型】发送汽车电瓶低电压事件
# 【接口类型】发送汽车电瓶低电压事件
##########################################
##########################################
...
@@ -1042,4 +1084,31 @@ def controlStoreMsg():
...
@@ -1042,4 +1084,31 @@ def controlStoreMsg():
traceback
.
print_exc
()
traceback
.
print_exc
()
data
[
"status"
]
=
"4003"
data
[
"status"
]
=
"4003"
data
[
"message"
]
=
"Error: 控制是否存储消息到本地失败!"
data
[
"message"
]
=
"Error: 控制是否存储消息到本地失败!"
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
##########################################
# 【接口类型】控制GPS 是有效还是无效
##########################################
@
M_carSimulater_process
.
route
(
"/controlGPSValid"
,
methods
=
[
'POST'
])
def
controlGPSValid
():
params
=
request
.
get_data
()
params
=
json
.
loads
(
params
.
decode
(
"utf-8"
))
sessionId
=
params
[
"session"
][
"sessionId"
]
data
=
{}
if
not
sessionId
in
connects
.
keys
():
data
[
"status"
]
=
"4003"
data
[
"message"
]
=
"Error: 未启动服务,不可设置GPS有效信息!"
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
service
=
connects
[
sessionId
][
"service"
]
try
:
GPSValid
=
int
(
params
[
"GPSValid"
])
service
.
setGPSValid
(
GPSValid
)
data
[
"status"
]
=
"200"
data
[
"message"
]
=
"设置GPS有效信息成功!"
except
BaseException
as
e
:
# 打印异常信息
traceback
.
print_exc
()
data
[
"status"
]
=
"4003"
data
[
"message"
]
=
"Error: 设置GPS有效信息失败!"
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
return
Response
(
json
.
dumps
(
data
),
mimetype
=
'application/json'
)
\ 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