From 03a05501800d2c02bca1c05ca6f7080d715aba23 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 18 九月 2020 15:41:50 +0800
Subject: [PATCH] 坐标
---
lib/src/main/cpp/master/comm_if.cpp | 89 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 87 insertions(+), 2 deletions(-)
diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp
index 0468b02..7ffd67d 100644
--- a/lib/src/main/cpp/master/comm_if.cpp
+++ b/lib/src/main/cpp/master/comm_if.cpp
@@ -39,6 +39,7 @@
#define ID_MS_MAP 0x8006
#define ID_MS_ROAD_MAP 0x8014
#define ID_MS_ROAD_MAP2 0x8013
+#define ID_MS_SCHEME 0x8017
#define ID_SM_READ_CAR 0x0007
#define ID_MS_CAR 0x8007
@@ -1263,6 +1264,90 @@
break;
}
+ case ID_MS_SCHEME: {
+ Document doc;
+ doc.Parse(value);
+ if (!doc.HasParseError()) {
+ DEBUG("寮�濮嬭В鏋愯矾鑰冩柟妗�");
+ vector<scheme_t> schemes;
+
+ if (doc.HasMember("scheme")) {
+ const Value &a = doc["scheme"];
+
+ for (Value::ConstValueIterator itr = a.Begin();
+ itr != a.End(); ++itr) {
+ scheme_t scheme;
+ if (itr->HasMember("name")) {
+ const Value &s = (*itr)["name"];
+ scheme.name = s.GetString();
+ }
+ if (itr->HasMember("crossing_active")) {
+ const Value &a2 = (*itr)["crossing_active"];
+
+ for (Value::ConstValueIterator itr2 = a2.Begin();
+ itr2 != a2.End(); ++itr2) {
+ crossing_active_t act;
+
+ if (itr2->HasMember("road")) {
+ const Value &s = (*itr2)["road"];
+ act.road_id = s.GetInt();
+ }
+ if (itr2->HasMember("idx")) {
+ const Value &s = (*itr2)["idx"];
+ act.index = s.GetInt();
+ }
+ if (itr2->HasMember("active")) {
+ const Value &s = (*itr2)["active"];
+ act.active = s.GetInt();
+ }
+
+ scheme.crossingActive.push_back(act);
+ }
+ }
+ if (itr->HasMember("trigger_line")) {
+ const Value &a2 = (*itr)["trigger_line"];
+
+ for (Value::ConstValueIterator itr2 = a2.Begin();
+ itr2 != a2.End(); ++itr2) {
+ trigger_line_t ins;
+
+ if (itr2->HasMember("x_y")) {
+ const Value &a3 = (*itr2)["x_y"];
+ if (a3.IsArray()) {
+ PointF point;
+ int n = 0;
+ for (Value::ConstValueIterator itr3 = a3.Begin();
+ itr3 != a3.End(); ++itr3) {
+ if (n == 0) {
+ point.X = (*itr3).GetDouble();
+ n = 1;
+ } else if (n == 1) {
+ point.Y = (*itr3).GetDouble();
+ ins.points.push_back(point);
+ n = 0;
+ }
+ }
+ }
+ }
+ if (itr2->HasMember("road")) {
+ const Value &s = (*itr2)["road"];
+ ins.road = s.GetInt();
+ }
+ if (itr2->HasMember("type")) {
+ const Value &s = (*itr2)["type"];
+ ins.active = s.GetInt();
+ }
+
+ scheme.triggerLines.push_back(ins);
+ }
+ }
+ schemes.push_back(scheme);
+ }
+ }
+ SetRoadExamScheme(schemes);
+ }
+ break;
+ }
case ID_MS_MAP: {
Document doc;
doc.Parse(value);
@@ -1471,7 +1556,7 @@
break;
}
case ID_MS_SENSOR_CFG: {
- Document doc;
+ /*Document doc;
doc.Parse(value);
if (!doc.HasParseError()) {
const Value &a = doc.GetArray();
@@ -1500,7 +1585,7 @@
SetSensorCfg(sensor, n);
delete []sensor;
}
- }
+ }*/
break;
}
case ID_MS_START_EXAM: {
--
Gitblit v1.8.0