Jelajahi Sumber

modify obu module

sunjiacheng 2 tahun lalu
induk
melakukan
2162026f58

+ 30 - 0
src/v2x/obuUdpClient/obu.json

@@ -0,0 +1,30 @@
+{
+	“LightsState”:L,
+	“ LightsInfo”:
+	[
+		{
+			“function”:M,
+			” LightsColor”:N, 
+			“ RemainingTime”:P
+		}
+	]
+}
+
+{
+	"Timestamp":"time",
+	"Obj_List":"String",
+	[
+		{
+			"ID":"String",
+			"PtcType":int,
+			"VehL":double,
+			"VehW":double,
+			"VehH":double,
+			"PtcLon":double,
+			"PtcLat":double,
+			"PtcEle":double,
+			"PtcSpeed":double,
+			"PtcHeading":double			
+		}
+	]
+}

+ 41 - 17
src/v2x/obuUdpClient/udpreciver.cpp

@@ -42,7 +42,7 @@ void UdpReciver::readDatagrams()
 
 void UdpReciver::ReceiveDecode(QByteArray &data)
 {
-    static int BATH_LENTH = 31;
+    static int BATH_LENTH = 10;
     // 防包太大
     if (data.size() > 2048) {
         //qDebug() << "size too large";
@@ -52,11 +52,10 @@ void UdpReciver::ReceiveDecode(QByteArray &data)
     char first;
     char second;
     // 寻找报文开头
-    while (data.size() >= BATH_LENTH) {
+    while (data.size() >= 10) {
         while (1) {
             first = data[0];
-            second = data[1];
-            if (first == '#' && second == '#') {
+            if (first == 0x7E) {
                 break;
             }
             // 删除一个字符
@@ -64,19 +63,44 @@ void UdpReciver::ReceiveDecode(QByteArray &data)
             if (data.size() < BATH_LENTH)
                 return;
         }
-        int high = data.at(22);
-        int low = data.at(23);
-        int dataLen = (high << 8) | low;
-        //qDebug() << "dataLen:" << dataLen;
-        // 长度不对
-        if ((dataLen + sizeof(packageDataHead)) > data.size()) {
-            //qDebug() << "message len error";
-            return;
+
+
+        QJsonObject object;
+        object = QJsonDocument::fromJson(data).object();
+    QByteArray jsonData();
+        if (object.contains("member")) {
+            QJsonArray array = object.value("member").toArray();
+            qDebug() << array[0].toString();
+            qDebug() << array[1].toString();
+            qDebug() << array[2].toString();
+        }
+
+        int jsonSize = data[3]<<8 | data[4];
+
+        if(data[1] == 0x02) //LightsInfo
+        {
+
         }
-        QByteArray temp = data.left(sizeof(packageDataHead) + dataLen + 1);
-        //queue_mutex.lock();
-        readData.enqueue(temp);
-        //queue_mutex.unlock();
-        data.remove(0, sizeof(packageDataHead) + dataLen + 1);//need check,20210915,jiaolili
+        else if(data[1] == 0x04)
+        {
+
+        }
+
+
+
+//        int high = data.at(22);
+//        int low = data.at(23);
+//        int dataLen = (high << 8) | low;
+//        //qDebug() << "dataLen:" << dataLen;
+//        // 长度不对
+//        if ((dataLen + sizeof(packageDataHead)) > data.size()) {
+//            //qDebug() << "message len error";
+//            return;
+//        }
+//        QByteArray temp = data.left(sizeof(packageDataHead) + dataLen + 1);
+//        //queue_mutex.lock();
+//        readData.enqueue(temp);
+//        //queue_mutex.unlock();
+//        data.remove(0, sizeof(packageDataHead) + dataLen + 1);//need check,20210915,jiaolili
     }
 }

+ 2 - 0
src/v2x/obuUdpClient/udpreciver.h

@@ -2,6 +2,8 @@
 #define UDPRECIVER_H
 
 #include <QUdpSocket>
+#include <QFile>
+#include <QJsonDocument>
 #include <QThread>
 class UdpReciver : public QObject
 {