|
@@ -151,7 +151,7 @@ void MainWindow::on_pushButton_connect_clicked()
|
|
|
|
|
|
//获取IP地址
|
|
|
IP = ui->lineEdit_ip->text();
|
|
|
- //获取端口号
|
|
|
+ //获取端口号qDebug("%x ",sendBuf);
|
|
|
port = ui->lineEdit_port->text().toInt();
|
|
|
ui->textEdit_messages->setText("");
|
|
|
ui->textEdit_messages->insertPlainText("正在连接"+ui->lineEdit_ip->text()+":"+ui->lineEdit_port->text()+"\n");
|
|
@@ -203,6 +203,23 @@ void MainWindow::socket_Read_Data()
|
|
|
}
|
|
|
void MainWindow::upVehicleStatus()
|
|
|
{
|
|
|
+ static int counter = 0;
|
|
|
+ static char *sendBuf = new char[10000];
|
|
|
+ int lenHead = sizeof(UpdatePackHead)/sizeof(unsigned char);
|
|
|
+ int lenLocation = sizeof(LocationData)/sizeof(unsigned char);
|
|
|
+ int lenDecision = sizeof(DecisionData)/sizeof(unsigned char);
|
|
|
+ int lenVehPerfData = sizeof(VehiclePerfData)/sizeof(unsigned char);
|
|
|
+ int lenVehStData = sizeof(VehicleStData)/sizeof(unsigned char);
|
|
|
+ int lenComponsData = sizeof(ComponsData)/sizeof(unsigned char);
|
|
|
+ int lenHeadData = sizeof(DataHead)/sizeof(unsigned char);
|
|
|
+ int lenLocStart = lenHead + lenHeadData;
|
|
|
+ int lenDecStart = lenLocStart + lenHeadData + lenLocation * 10;
|
|
|
+ int lenVPeStart = lenDecStart + lenHeadData + lenDecision * 10;
|
|
|
+ int lenVStStart = lenVPeStart + lenHeadData + lenVehPerfData * 10;
|
|
|
+ int lenComStart = lenVStStart + lenHeadData + lenVehStData;
|
|
|
+ int length = (lenLocation + lenDecision + lenVehPerfData) * 10 + lenVehStData \
|
|
|
+ + lenComponsData + lenHead + lenHeadData * 5;
|
|
|
+
|
|
|
QByteArray time_stamp=getTimeStamp().toLatin1();
|
|
|
memcpy(upPack.timeStamp, time_stamp.data(), sizeof(upPack.timeStamp));
|
|
|
int tmp = mflon * 10000000;
|
|
@@ -218,61 +235,92 @@ void MainWindow::upVehicleStatus()
|
|
|
tmp = (int)(mfEpsAngle/500.0 + 250);
|
|
|
mdecision.epsAngleL = tmp & 0xFF;
|
|
|
mdecision.epsAngleH = tmp>>8 & 0xFF;
|
|
|
- tmp = (int)mfspeed * 100;
|
|
|
+ tmp = (int)mfspeed;
|
|
|
mvehPerfData.speedL = tmp & 0xFF;
|
|
|
mvehPerfData.speedH = tmp>>8 & 0xFF;
|
|
|
- tmp = (int)(mfAcc * 100 / 980);
|
|
|
- mvehPerfData.hAccL = tmp & 0xFF;
|
|
|
- mvehPerfData.hAccH = tmp>>8 & 0xFF;
|
|
|
- tmp = -1 * mvehPerfData.vAccL;
|
|
|
- mvehPerfData.vAccL = tmp & 0xFF; //临时
|
|
|
- mvehPerfData.vAccH = tmp>>8 & 0xFF; //临时
|
|
|
+
|
|
|
+ tmp = (int)(mfAccH) * 100 % 490 + 490;
|
|
|
+ mvehPerfData.vAccL = tmp & 0xFF;
|
|
|
+ mvehPerfData.vAccH = tmp>>8 & 0xFF;
|
|
|
+ tmp = (int)(mfAccV) * 100 % 490 + 490;
|
|
|
+ mvehPerfData.hAccL = tmp & 0xFF; //临时
|
|
|
+ mvehPerfData.hAccH = tmp>>8 & 0xFF; //临时
|
|
|
tmp = (int)mfheading*80;
|
|
|
mvehPerfData.headingL0 = tmp & 0xFF;
|
|
|
mvehPerfData.headingL1 = tmp>>8 & 0xFF;
|
|
|
mvehPerfData.headingH0 = tmp>>16 & 0xFF;
|
|
|
mvehPerfData.headingH1 = tmp>>24 & 0xFF;
|
|
|
- mvehStData.ctrlMode = 1;
|
|
|
- mvehStData.meilageL0 = 0xE3;
|
|
|
- mvehStData.meilageL1 = 0xFF;
|
|
|
- mvehStData.meilageH0 = 0;
|
|
|
- mvehStData.meilageH1 = 0;
|
|
|
- mcomponsData.ADSysSt = 1;
|
|
|
-// char str[10000];
|
|
|
-// memcpy(str,mlocation,sizeof(LocationData));
|
|
|
- char *sendBuf = new char[1000];
|
|
|
- int length = 0;
|
|
|
- int lenHead = sizeof(UpdatePack)/sizeof(unsigned char);
|
|
|
- int lenLocation = sizeof(mlocation)/sizeof(unsigned char);
|
|
|
- int lenDecision = sizeof(mdecision)/sizeof(unsigned char);
|
|
|
- int lenVehPerfData = sizeof(mvehPerfData)/sizeof(unsigned char);
|
|
|
- int lenVehStData = sizeof(mvehStData)/sizeof(unsigned char);
|
|
|
- int lenComponsData = sizeof(mcomponsData)/sizeof(unsigned char);
|
|
|
- length = lenLocation + lenDecision + lenVehPerfData + lenVehStData +lenComponsData;
|
|
|
- upPack.dataSizeH = length>>8 & 0xFF;
|
|
|
- upPack.dataSizeL = length & 0xFF;
|
|
|
- memcpy(sendBuf,&upPack,lenHead);
|
|
|
- length = lenHead;
|
|
|
- memcpy(sendBuf+length,&mlocation,lenLocation);
|
|
|
- length = length + lenLocation;
|
|
|
- memcpy(sendBuf+length,&mdecision,lenDecision);
|
|
|
- length = length + lenDecision;
|
|
|
- memcpy(sendBuf+length,&mvehPerfData,lenVehPerfData);
|
|
|
- length = length + lenVehPerfData;
|
|
|
- memcpy(sendBuf+length,&mvehStData,lenVehStData);
|
|
|
- length = length + lenVehStData;
|
|
|
- memcpy(sendBuf+length,&mcomponsData,lenComponsData);
|
|
|
- length = length + lenComponsData;
|
|
|
-
|
|
|
- socket->write(sendBuf,length);
|
|
|
- if(!socket->waitForBytesWritten(3000))
|
|
|
+ if(counter == 0)
|
|
|
{
|
|
|
- qDebug()<<"realtimeinfo send error";
|
|
|
+ upPack.dataSizeH = (length - lenHead)>>8 & 0xFF;
|
|
|
+ upPack.dataSizeL = (length - lenHead)& 0xFF;
|
|
|
+ memcpy(sendBuf,&upPack,lenHead);
|
|
|
+ DataHead head;
|
|
|
+ int dataSize = 0;
|
|
|
+
|
|
|
+ dataSize = 80;
|
|
|
+ head.msgSig = 2;
|
|
|
+ head.msgRate = 10;
|
|
|
+ head.msgSizeH = dataSize >> 8 & 0xFF;
|
|
|
+ head.msgSizeL = dataSize & 0xFF;
|
|
|
+ memcpy(sendBuf + lenLocStart - lenHeadData,&head, lenHeadData);
|
|
|
+
|
|
|
+ dataSize = 220;
|
|
|
+ head.msgSig = 3;
|
|
|
+ head.msgRate = 10;
|
|
|
+ head.msgSizeH = dataSize >> 8 & 0xFF;
|
|
|
+ head.msgSizeL = dataSize & 0xFF;
|
|
|
+ memcpy(sendBuf + lenDecStart - lenHeadData,&head, lenHeadData);
|
|
|
+
|
|
|
+ dataSize = 160;
|
|
|
+ head.msgSig = 4;
|
|
|
+ head.msgRate = 10;
|
|
|
+ head.msgSizeH = dataSize >> 8 & 0xFF;
|
|
|
+ head.msgSizeL = dataSize & 0xFF;
|
|
|
+ memcpy(sendBuf + lenVPeStart - lenHeadData,&head, lenHeadData);
|
|
|
+
|
|
|
+ dataSize = 24;
|
|
|
+ head.msgSig = 5;
|
|
|
+ head.msgRate = 1;
|
|
|
+ head.msgSizeH = dataSize >> 8 & 0xFF;
|
|
|
+ head.msgSizeL = dataSize & 0xFF;
|
|
|
+ memcpy(sendBuf + lenVStStart - lenHeadData,&head, lenHeadData);
|
|
|
+
|
|
|
+ dataSize = 11;
|
|
|
+ head.msgSig = 10;
|
|
|
+ head.msgRate = 1;
|
|
|
+ head.msgSizeH = dataSize >> 8 & 0xFF;
|
|
|
+ head.msgSizeL = dataSize & 0xFF;
|
|
|
+ memcpy(sendBuf + lenComStart - lenHeadData, &head, lenHeadData);
|
|
|
+ }
|
|
|
+
|
|
|
+ memcpy(sendBuf+lenLocStart + lenLocation * counter, &mlocation,lenLocation);
|
|
|
+ memcpy(sendBuf+lenDecStart + lenDecision * counter,&mdecision,lenDecision);
|
|
|
+ memcpy(sendBuf+lenVPeStart + lenVehPerfData * counter,&mvehPerfData,lenVehPerfData);
|
|
|
+ counter++;
|
|
|
+ if(counter == 10)
|
|
|
+ {
|
|
|
+ mvehStData.ctrlMode = 1;
|
|
|
+ mvehStData.meilageL0 = 0xE3;
|
|
|
+ mvehStData.meilageL1 = 0xFF;
|
|
|
+ mvehStData.meilageH0 = 0;
|
|
|
+ mvehStData.meilageH1 = 0;
|
|
|
+ mcomponsData.ADSysSt = 1;
|
|
|
+ memcpy(sendBuf+lenVStStart, &mvehStData, lenVehStData);
|
|
|
+ memcpy(sendBuf+lenComStart, &mcomponsData, lenComponsData);
|
|
|
+ socket->write(sendBuf,length);
|
|
|
+ if(!socket->waitForBytesWritten(3000))
|
|
|
+ {
|
|
|
+ qDebug()<<"realtimeinfo send error";
|
|
|
+ }
|
|
|
+ qDebug()<<QDateTime::currentDateTimeUtc() <<"lon"<<QString::number(mflon,10,7) \
|
|
|
+ <<"lat"<<QString::number(mflat,10,7)<<"eps"<<mfEpsAngle <<"speed"<<mfspeed \
|
|
|
+ <<"Hacc"<<mfAccH<<"Vacc"<<mfAccV<<"heading"<<mfheading<<"length" \
|
|
|
+ <<length<<"dataSize"<<length-lenHead;
|
|
|
+
|
|
|
+ counter = 0;
|
|
|
}
|
|
|
- //debug
|
|
|
|
|
|
- qDebug()<<QDateTime::currentDateTimeUtc() <<"lon"<<mflon<<"lat"<<mflat<<"eps"<<mfEpsAngle \
|
|
|
- <<"speed"<<mfspeed<<"acc"<<mfAcc<<"heading"<<mfheading;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -307,7 +355,7 @@ void MainWindow::UpdateChassis(const char *strdata, const unsigned int nSize, co
|
|
|
void MainWindow::UpdateGPSIMU(const char * strdata,const unsigned int nSize,const unsigned int index,\
|
|
|
const QDateTime * dt,const char * strmemname)
|
|
|
{
|
|
|
-
|
|
|
+ double accX,accY;
|
|
|
iv::gps::gpsimu xgpsimu;
|
|
|
if(!xgpsimu.ParseFromArray(strdata,nSize))
|
|
|
{
|
|
@@ -326,6 +374,15 @@ void MainWindow::UpdateGPSIMU(const char * strdata,const unsigned int nSize,cons
|
|
|
mpdata.vel_D = xgpsimu.vd(); //地向速度,单位(米/秒)
|
|
|
mpdata.vel_E = xgpsimu.ve(); //东向速度,单位(米/秒)
|
|
|
mpdata.vel_N = xgpsimu.vn(); //北向速度,单位(米/秒)
|
|
|
+ if(xgpsimu.has_acce_x())
|
|
|
+ {
|
|
|
+ mfAccH = xgpsimu.acce_x();
|
|
|
+ }
|
|
|
+ if(xgpsimu.has_acce_y())
|
|
|
+ {
|
|
|
+ mfAccV = xgpsimu.acce_y();
|
|
|
+ }
|
|
|
+// mfAcc = (float)sqrt(pow(accX,2)+pow(accY,2));
|
|
|
|
|
|
// mfspeed = sqrt(pow(data->vel_E,2)+pow(data->vel_N,2)) * 3.6; //double pow(double x, double y) 返回 x 的 y 次幂,即 xy。
|
|
|
mistGPS = 0;
|