소스 검색

up stream

jiaolili 4 년 전
부모
커밋
06d349a4da
3개의 변경된 파일162개의 추가작업 그리고 42개의 파일을 삭제
  1. 49 39
      src/v2x/v2xTcpClient/data_type.h
  2. 101 1
      src/v2x/v2xTcpClient/mainwindow.cpp
  3. 12 2
      src/v2x/v2xTcpClient/mainwindow.h

+ 49 - 39
src/v2x/v2xTcpClient/data_type.h

@@ -1,54 +1,64 @@
 #ifndef DATA_TYPE_H
 #define DATA_TYPE_H
 /// cameral status, 2019-10-18
+#include <vector>
 enum DownID { StopCommand = 1, AutoPilotControl, StationCommand };
 struct VehicleStatus
 {
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
+    QString head = "'CCFF'";
+    float timeStamp = 0.0;
+    QString vin = "catarc001";
+    int carMode = 1;
+    float carSpeed=0.0;
+    float steerAngle=0.0;
+    int soc=0;
+    int carError=0;
+    int errorNum=0;
+    float lon=0.0;
+    float lat=0.0;
+    float yaw=0.0;
 };
 struct HardwareStatus
 {
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
+    QString head = "'DDFF'";
+    float timeStamp = 0.0;
+    int radarStatus = 0;
+    int radarError = 0;
+    int lidarStatus = 0;
+    int lidarError = 0;
+    int sonicStatus = 0;
+    int sonicError = 0;
+    int cameraStatus = 0;
+    int cameraError = 0;
+    int microphoneStatus = 0;
+    int microphoneError = 0;
+    int gpsStatus = 0;
+    int gpsError = 0;
+    int radarcanStatus = 0;
+    int radarcanError = 0;
+    int canStatus = 0;
+    int canError = 0;
+    int lightStatus = 2;
+    int lightError = 0;
 };
-struct ObstacleData
-{
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
-};
-struct SoftwareStatus
-{
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
-};
-struct EmergencyStop
-{
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
-};
-struct AutoPilotControl
+struct ObstacleDataUnit
 {
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
+    int ObstacleClass = 0;
+    float lon = 0.0;
+    float lat = 0.0;
 };
-struct StationCommand
+struct ObstacleData
 {
-    int cam0 = 0;
-    int cam1 = 0;
-    int cam2 = 0;
-    int cam3 = 0;
+    QString head = "'EEFF'";
+    float timeStamp = 0.0;
+    std::vector<ObstacleDataUnit> obstacles;
 };
+//struct SoftwareStatus
+//{
+//    QString head = "'FFFF'";
+//    float timeStamp = 0.0;
+
+//};
+
+
 #endif // DATA_TYPE_H

+ 101 - 1
src/v2x/v2xTcpClient/mainwindow.cpp

@@ -2,7 +2,7 @@
 #include "ui_mainwindow.h"
 
 iv::Ivlog *givlog;
-unsigned int gv2xEn = false;
+unsigned int gv2xEn = true;
 
 void ListenV2xStEn(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
 {
@@ -31,6 +31,7 @@ MainWindow::MainWindow(QWidget *parent) :
     socket=new QTcpSocket();    
     ui->lineEdit_ip->setText("47.95.196.28");
     ui->lineEdit_port->setText("12123");
+    ui->pushButton_connect->setEnabled(false);
     //连接信号槽
 
     givlog = new iv::Ivlog("v2x");
@@ -41,6 +42,14 @@ MainWindow::MainWindow(QWidget *parent) :
     iv::modulecomm::RegisterRecv("v2xStEn", ListenV2xStEn);
     mp_v2xStSend = iv::modulecomm::RegisterSend("v2xStReq",1000,1);
     shareV2xStReqMsg();
+    //heart beat,jiaolili,20210207
+    m_bEnablePlatform=false;
+    m_bIsConnect=false;
+    QTimer *timer = new QTimer(this);
+    connect(timer,SIGNAL(timeout()),SLOT(heartBeat()));
+    timer->start(1000);
+    ///////////////////////////////////////////
+
 }
 
 MainWindow::~MainWindow()
@@ -48,6 +57,32 @@ MainWindow::~MainWindow()
     delete this->socket;
     delete ui;
 }
+void MainWindow::heartBeat()
+{
+    if(gv2xEn) {
+        if(!m_bEnablePlatform) {
+            connectPlatform();
+        }
+        if(m_bIsConnect) {
+            upDataStream();
+        } else {
+            connectPlatform();
+        }
+
+    } else {
+        if(m_bEnablePlatform) {
+            disconnectPlatform();
+        }
+    }
+    m_bEnablePlatform = gv2xEn;
+}
+void MainWindow::upDataStream()
+{
+//    upVehicleStatus();
+//    upHardwareStatus();
+//   upObstacleDataStatus();
+    upSoftwareStatus();
+}
 void MainWindow::socket_Read_Data()
 {
     QByteArray buffer;
@@ -206,7 +241,40 @@ void MainWindow::socket_Disconnected()
     ui->pushButton_connect->setText("connect");
     ui->textEdit_messages->insertPlainText("服务器消息:Disconnected");
 }
+void MainWindow::connectPlatform()
+{
+    QString IP;
+    int port;
+    //获取IP地址
+    IP = ui->lineEdit_ip->text();
+    //获取端口号
+    port = ui->lineEdit_port->text().toInt();
+    ui->textEdit_messages->setText("");
+    ui->textEdit_messages->insertPlainText("正在连接"+ui->lineEdit_ip->text()+":"+ui->lineEdit_port->text()+"\n");
+    //取消已有的连接
+    socket->abort();
+    //连接服务器
+    socket->connectToHost(IP, port);
+    //等待连接成功
+    if(!socket->waitForConnected(30000)) {
+        ui->textEdit_messages->insertPlainText("连接失败\n");
+        return;
+    }
+    m_bIsConnect = true;
+    ui->textEdit_messages->insertPlainText("连接成功\n");
+    //修改按键文字
+    ui->pushButton_connect->setText("disconnect");
+}
 
+void MainWindow::disconnectPlatform()
+{
+    //断开连接
+    ui->textEdit_messages->setText("断开连接\n");
+    socket->disconnectFromHost();
+    //修改按键文字
+    ui->pushButton_connect->setText("connect");
+    m_bIsConnect=false;
+}
 void MainWindow::on_pushButton_connect_clicked()
 {
     if(ui->pushButton_connect->text() == tr("connect"))
@@ -302,3 +370,35 @@ void MainWindow::shareV2xStReqMsg()
 //    socket->write(bytes);
 //}
 
+void MainWindow::upVehicleStatus()
+{
+    QString time_stamp=getTimeStamp();
+    QString test="['CCFF',"+time_stamp+",'catarc001',1,0,0,100,0,0,0,0,0]";
+    //QByteArray bytes = test.toUtf8();
+    QByteArray bytes = test.toLatin1();
+    socket->write(bytes);
+}
+void MainWindow::upHardwareStatus()
+{
+    QString time_stamp=getTimeStamp();
+    QString test="['DDFF',"+time_stamp+",[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[[0,0],[0,0]],[2,0]]";
+    //QByteArray bytes = test.toUtf8();
+    QByteArray bytes = test.toLatin1();
+    socket->write(bytes);
+}
+void MainWindow::upObstacleDataStatus()
+{
+    QString time_stamp=getTimeStamp();
+    QString test="['EEFF',"+time_stamp+",[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]";
+    //QByteArray bytes = test.toUtf8();
+    QByteArray bytes = test.toLatin1();
+    socket->write(bytes);
+}
+void MainWindow::upSoftwareStatus()
+{
+    QString time_stamp=getTimeStamp();
+    QString test="['FFFF',"+time_stamp+",[1,10,1,10,1,10,1,10],[0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0]]";
+    //QByteArray bytes = test.toUtf8();
+    QByteArray bytes = test.toLatin1();
+    socket->write(bytes);
+}

+ 12 - 2
src/v2x/v2xTcpClient/mainwindow.h

@@ -13,7 +13,7 @@
 #include "v2x.pb.h"
 #include "modulecomm.h"
 #include "ivlog.h"
-
+#include <QTimer>
 namespace Ui {
 class MainWindow;
 }
@@ -38,13 +38,20 @@ public:
     void ProStationCommand(QString str);
     bool checkVehicle(QString str);
     int getDownStreamId(QString str);
+    void upVehicleStatus();
+    void upHardwareStatus();
+    void upObstacleDataStatus();
+    void upSoftwareStatus();
+    void upDataStream();
 private slots:
 
     void socket_Read_Data();
     void socket_Disconnected();
     void on_pushButton_connect_clicked();
     void on_textEdit_messages_textChanged();
-
+    void heartBeat();
+    void connectPlatform();
+    void disconnectPlatform();
 private:
     Ui::MainWindow *ui;
     QTcpSocket *socket;
@@ -52,6 +59,9 @@ private:
     void * mp_v2xStSend;
     void shareV2xStReqMsg();
     void shareV2xProtoMsg(iv::v2x::v2x msgV2xProto);
+private:
+    bool m_bEnablePlatform;
+    bool m_bIsConnect;
 
 };
 #endif // MAINWINDOW_H