|
@@ -2,6 +2,9 @@
|
|
|
|
|
|
#include <iostream>
|
|
#include <iostream>
|
|
|
|
|
|
|
|
+
|
|
|
|
+static ivscheduler * givs;
|
|
|
|
+
|
|
static QMutex gMutexGPSIMU;
|
|
static QMutex gMutexGPSIMU;
|
|
|
|
|
|
static iv::gps::gpsimu ggpsimu;
|
|
static iv::gps::gpsimu ggpsimu;
|
|
@@ -26,7 +29,7 @@ void Listengpsimu(const char * strdata,const unsigned int nSize,const unsigned i
|
|
iv::gps::gpsimu xgpsimu;
|
|
iv::gps::gpsimu xgpsimu;
|
|
if(!xgpsimu.ParseFromArray(strdata,nSize))
|
|
if(!xgpsimu.ParseFromArray(strdata,nSize))
|
|
{
|
|
{
|
|
- std::cout<<"ListenRaw Parse error."<<std::endl;
|
|
|
|
|
|
+ std::cout<<"Listengpsimu Parse error."<<std::endl;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
(void)&index;
|
|
(void)&index;
|
|
@@ -39,10 +42,32 @@ void Listengpsimu(const char * strdata,const unsigned int nSize,const unsigned i
|
|
gMutexGPSIMU.unlock();
|
|
gMutexGPSIMU.unlock();
|
|
}
|
|
}
|
|
|
|
|
|
-ivscheduler::ivscheduler(std::string strmemname)
|
|
|
|
|
|
+void Listenscheduler(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
|
|
+{
|
|
|
|
+// ggpsimu->UpdateGPSIMU(strdata,nSize);
|
|
|
|
+
|
|
|
|
+ iv::scheduler pscheduler;
|
|
|
|
+ if(!pscheduler.ParseFromArray(strdata,nSize))
|
|
|
|
+ {
|
|
|
|
+ std::cout<<"Listenscheduler Parse error."<<std::endl;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ (void)&index;
|
|
|
|
+ (void)dt;
|
|
|
|
+ (void)strmemname;
|
|
|
|
+
|
|
|
|
+ givs->setscheduler(&pscheduler);
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+ivscheduler::ivscheduler(std::string strmemname,std::string strschedulername)
|
|
{
|
|
{
|
|
|
|
+ givs = this;
|
|
mstrmemname = strmemname;
|
|
mstrmemname = strmemname;
|
|
|
|
+ mstrschedulername = strschedulername;
|
|
iv::modulecomm::RegisterRecv(mstrmemname.data(),Listengpsimu);
|
|
iv::modulecomm::RegisterRecv(mstrmemname.data(),Listengpsimu);
|
|
|
|
+ iv::modulecomm::RegisterRecv(mstrschedulername.data(),Listenscheduler);
|
|
mpadst = iv::modulecomm::RegisterSend("xodrreq",1000,1);
|
|
mpadst = iv::modulecomm::RegisterSend("xodrreq",1000,1);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -80,12 +105,14 @@ void ivscheduler::run()
|
|
mnLastSendObj = QDateTime::currentMSecsSinceEpoch();
|
|
mnLastSendObj = QDateTime::currentMSecsSinceEpoch();
|
|
SendObj(mfLonObj,mfLatObj);
|
|
SendObj(mfLonObj,mfLatObj);
|
|
mnstep = 1;
|
|
mnstep = 1;
|
|
|
|
+ emit updatestep(mnstep);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case 1:
|
|
case 1:
|
|
if(IsVehicleMoving(&xgpsimu))
|
|
if(IsVehicleMoving(&xgpsimu))
|
|
{
|
|
{
|
|
mnstep = 2;
|
|
mnstep = 2;
|
|
|
|
+ emit updatestep(mnstep);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -100,6 +127,7 @@ void ivscheduler::run()
|
|
{
|
|
{
|
|
mnArrivingTime = QDateTime::currentMSecsSinceEpoch();
|
|
mnArrivingTime = QDateTime::currentMSecsSinceEpoch();
|
|
mnstep = 3;
|
|
mnstep = 3;
|
|
|
|
+ emit updatestep(mnstep);
|
|
}
|
|
}
|
|
//Decide Vechicle Running.
|
|
//Decide Vechicle Running.
|
|
break;
|
|
break;
|
|
@@ -108,6 +136,7 @@ void ivscheduler::run()
|
|
{
|
|
{
|
|
mnArrivingTime = QDateTime::currentMSecsSinceEpoch();
|
|
mnArrivingTime = QDateTime::currentMSecsSinceEpoch();
|
|
mnstep = 3;
|
|
mnstep = 3;
|
|
|
|
+ emit updatestep(mnstep);
|
|
}
|
|
}
|
|
//Decide Vehiclde Arrive End Point;
|
|
//Decide Vehiclde Arrive End Point;
|
|
break;
|
|
break;
|
|
@@ -117,12 +146,14 @@ void ivscheduler::run()
|
|
if((QDateTime::currentMSecsSinceEpoch() - mnArrivingTime)>= (pscheduler_unit->mstopsecond()*1000) )
|
|
if((QDateTime::currentMSecsSinceEpoch() - mnArrivingTime)>= (pscheduler_unit->mstopsecond()*1000) )
|
|
{
|
|
{
|
|
mnstep = 4;
|
|
mnstep = 4;
|
|
|
|
+ emit updatestep(mnstep);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//Count Stop Time;
|
|
//Count Stop Time;
|
|
break;
|
|
break;
|
|
case 4:
|
|
case 4:
|
|
mnstep = 0;
|
|
mnstep = 0;
|
|
|
|
+ emit updatestep(mnstep);
|
|
mnprocess++;
|
|
mnprocess++;
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
@@ -147,11 +178,13 @@ void ivscheduler::run()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void ivscheduler::setscheduler(iv::scheduler *pscheduler, int ncyclecount)
|
|
|
|
|
|
+void ivscheduler::setscheduler(iv::scheduler *pscheduler)
|
|
{
|
|
{
|
|
mMutex.lock();
|
|
mMutex.lock();
|
|
- mpscheduler = pscheduler;
|
|
|
|
- mncyclecount = ncyclecount;
|
|
|
|
|
|
+ if(mpscheduler != 0)delete mpscheduler;
|
|
|
|
+ mpscheduler = new iv::scheduler;
|
|
|
|
+ mpscheduler->CopyFrom(*pscheduler);
|
|
|
|
+ mncyclecount = pscheduler->mcyble();
|
|
mncycle = 0;
|
|
mncycle = 0;
|
|
mnprocess = 0;
|
|
mnprocess = 0;
|
|
mnstep = 0;
|
|
mnstep = 0;
|