From c64da51ae481dfc2a25e5a6e39bb94f22d65428a Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期五, 10 一月 2020 13:33:09 +0800 Subject: [PATCH] s --- lib/src/main/cpp/master/comm_if.cpp | 95 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 93 insertions(+), 2 deletions(-) diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp index 5301d23..ee203d4 100644 --- a/lib/src/main/cpp/master/comm_if.cpp +++ b/lib/src/main/cpp/master/comm_if.cpp @@ -14,8 +14,10 @@ #include <string> #include <iostream> +#include <vector> using namespace rapidjson; +using namespace std; #define ID_SM_NDK_START 0x0001 #define ID_SM_REQ_RTK_PLAT_CFG 0x0002 @@ -33,7 +35,7 @@ #define ID_SM_EXAM_STATUS 0x0009 #define ID_SM_GPS_BRIEF 0x000A #define ID_SM_RTK_BRIEF 0x000B -#define ID_SM_EXAM_BRIEF 0x000B +#define ID_SM_EXAM_BRIEF 0x000C void MA_NdkStart(void) { @@ -113,6 +115,88 @@ void MA_ReadSensor(void) { SendMsgToMainProc(ID_SM_READ_SENSOR_CFG, NULL); +} + +void MA_SendExamStatus(int start, int errorCode) +{ + StringBuffer sb; + Writer<StringBuffer> writer(sb); + + writer.StartObject(); + + writer.Key("exam"); + writer.Int(start); + writer.Key("error"); + writer.Int(errorCode); + + writer.EndObject(); + + SendMsgToMainProc(ID_SM_EXAM_STATUS, sb.GetString()); +} + +void MA_SendGpsBrief(const struct gpsBrief *brief) +{ + StringBuffer sb; + Writer<StringBuffer> writer(sb); + + writer.StartObject(); + + writer.Key("utc"); + writer.String(brief->utc); + writer.Key("sat_num"); + writer.Int(brief->sat_num); + writer.Key("qf"); + writer.Int(brief->qf); + writer.Key("latitude"); + writer.Double(brief->latitude); + writer.Key("longitude"); + writer.Double(brief->longitude); + writer.Key("altitude"); + writer.Double(brief->altitude); + writer.Key("speed"); + writer.Double(brief->speed); + + writer.EndObject(); + + SendMsgToMainProc(ID_SM_GPS_BRIEF, sb.GetString()); +} + +void MA_SendRtkBrief(const struct rtkBrief *brief) +{ + char a[2] = {brief->coord_x_dir, 0}; + char b[2] = {brief->coord_y_dir, 0}; + + StringBuffer sb; + Writer<StringBuffer> writer(sb); + + writer.StartObject(); + + writer.Key("utc"); + writer.String(brief->utc); + writer.Key("qf"); + writer.Int(brief->qf); + writer.Key("coord_x"); + writer.Double(brief->coord_x); + writer.Key("coord_x_dir"); + writer.String(a); + writer.Key("coord_y"); + writer.Double(brief->coord_y); + writer.Key("coord_y_dir"); + writer.String(b); + writer.Key("heading"); + writer.Double(brief->heading); + writer.Key("pitch"); + writer.Double(brief->pitch); + writer.Key("roll"); + writer.Double(brief->roll); + writer.EndObject(); + + SendMsgToMainProc(ID_SM_RTK_BRIEF, sb.GetString()); +} + +void MA_SendExamWrong(vector<int>&err) +{ + } void MA_MainProcMsgEntry(int cmd, const char *value) @@ -367,7 +451,14 @@ break; } case ID_MS_START_EXAM: { - + Document doc; + doc.Parse(value); + if (!doc.HasParseError()) { + if (doc.HasMember("exam")) { + Value& s = doc["exam"]; + StartDriverExam(s.GetInt()); + } + } break; } default:break; -- Gitblit v1.8.0