|
@@ -28,11 +28,39 @@ MainWindow::MainWindow(QWidget *parent) :
|
|
|
ui(new Ui::MainWindow)
|
|
|
{
|
|
|
ui->setupUi(this);
|
|
|
- socket=new QTcpSocket();
|
|
|
- ui->lineEdit_ip->setText("47.95.196.28");
|
|
|
- ui->lineEdit_port->setText("12123");
|
|
|
- //连接信号槽
|
|
|
|
|
|
+ //Start Get init param
|
|
|
+ QString strpath = QCoreApplication::applicationDirPath();
|
|
|
+ qDebug()<<strpath;
|
|
|
+ strpath = strpath + "/v2xTcpClient.xml";
|
|
|
+
|
|
|
+ iv::xmlparam::Xmlparam xp(strpath.toStdString());
|
|
|
+
|
|
|
+ std::string strCarVIN = xp.GetParam("carVIN","catarc001");
|
|
|
+ std::string strHostIP = xp.GetParam("hostIP","47.95.196.28");
|
|
|
+ std::string strHostPort = xp.GetParam("hostPort","12123");
|
|
|
+ std::string strStationCount = xp.GetParam("stationCount","20");
|
|
|
+ int count = std::stoi(strStationCount,nullptr,10);
|
|
|
+ stationGps location;
|
|
|
+ for(int i = 0; i < count; i++)
|
|
|
+ {
|
|
|
+ std::string strLatName = "lat" + std::to_string(i);
|
|
|
+ std::string strLonName = "lon" + std::to_string(i);
|
|
|
+ std::cout<<strLatName<<strLonName<<std::endl;
|
|
|
+ std::string strLatValue = xp.GetParam(strLatName,"0");
|
|
|
+ std::string strLonValue = xp.GetParam(strLonName,"0");
|
|
|
+
|
|
|
+ location.lat = std::stof(strLatValue,0);
|
|
|
+ location.lon = std::stof(strLonValue,0);
|
|
|
+ mstationGps.append(location);
|
|
|
+ }//END get init param
|
|
|
+
|
|
|
+ socket=new QTcpSocket();
|
|
|
+ ui->lineEdit_ip->setText(QString::fromStdString(strHostIP));
|
|
|
+ ui->lineEdit_port->setText(QString::fromStdString(strHostPort));
|
|
|
+ ui->pushButton_connect->setEnabled(false);
|
|
|
+
|
|
|
+ //连接信号槽
|
|
|
givlog = new iv::Ivlog("v2x");
|
|
|
connect(socket, &QTcpSocket::readyRead, this, &MainWindow::socket_Read_Data);
|
|
|
connect(socket, &QTcpSocket::disconnected, this, &MainWindow::socket_Disconnected);
|
|
@@ -41,6 +69,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 +84,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;
|
|
@@ -139,8 +201,8 @@ void MainWindow::ProAutoPilotControl(QStringList list)
|
|
|
msgV2xProto.add_stationid(stationId);
|
|
|
|
|
|
stGps=msgV2xProto.add_stgps();
|
|
|
- stGps->set_lat(0);
|
|
|
- stGps->set_lon(0);
|
|
|
+ stGps->set_lat(mstationGps.at(i-4).lat);
|
|
|
+ stGps->set_lon(mstationGps.at(i-4).lon);
|
|
|
ui->textEdit_messages->insertPlainText("服务器消息:car station has "+list[i]+"\n");
|
|
|
}
|
|
|
} else {
|
|
@@ -206,7 +268,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 +397,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);
|
|
|
+}
|