|
@@ -30,6 +30,8 @@ void MainWindow::LoadAPI()
|
|
|
LogiIsConnected =(LogiIsConnectedFunction)xlib.resolve("LogiIsConnected");
|
|
|
LogiGetState =(LogiGetStateFunction)xlib.resolve("LogiGetState");
|
|
|
LogiSteeringShutdown =(LogiSteeringShutdownFunction)xlib.resolve("LogiSteeringShutdown");
|
|
|
+ LogiPlayConstantForce =(LogiPlayConstantForceFunction)xlib.resolve("LogiPlayConstantForce");
|
|
|
+ LogiStopConstantForce =(LogiStopConstantForceFunction)xlib.resolve("LogiStopConstantForce");
|
|
|
|
|
|
if((LogiSteeringInitialize == NULL)||(LogiIsConnected == NULL)||(LogiGetState == NULL)||(LogiSteeringShutdown == NULL))
|
|
|
{
|
|
@@ -43,14 +45,50 @@ void MainWindow::LoadAPI()
|
|
|
|
|
|
int MainWindow::GetWheelAccBrake(double & angle,double & acc, double & brake)
|
|
|
{
|
|
|
- if((LogiUpdate())&&(LogiIsConnected(1)))
|
|
|
+// if(LogiIsConnected(0))
|
|
|
+// {
|
|
|
+// std::cout<<"connected. "<<std::endl;
|
|
|
+// }
|
|
|
+// if(LogiUpdate())
|
|
|
+// {
|
|
|
+// std::cout<<" update. "<<std::endl;
|
|
|
+// }
|
|
|
+ if((LogiUpdate())&&(LogiIsConnected(0)))
|
|
|
{
|
|
|
- DIJOYSTATE2* wheel = LogiGetState(1);
|
|
|
+ DIJOYSTATE2* wheel = LogiGetState(0);
|
|
|
angle = wheel->lX;
|
|
|
acc = wheel->lY;
|
|
|
brake = wheel->lRz;
|
|
|
+ if(angle>100)
|
|
|
+ {
|
|
|
+ int force;
|
|
|
+ if(angle>3000)force = 30;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ force = angle*30/3000;
|
|
|
+ }
|
|
|
+ LogiPlayConstantForce(0,force);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(angle<-100)
|
|
|
+ {
|
|
|
+ int force;
|
|
|
+ if(angle<-3000)force = -30;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ force = angle*30/3000;
|
|
|
+ }
|
|
|
+ LogiPlayConstantForce(0,force);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ LogiStopConstantForce(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
@@ -62,7 +100,12 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
|
|
|
LoadAPI();
|
|
|
|
|
|
- LogiSteeringInitialize(true);
|
|
|
+ bool bStart = LogiSteeringInitialize(false);
|
|
|
+ std::cout<<" init. "<<bStart<<std::endl;
|
|
|
+
|
|
|
+ QTimer * timer = new QTimer(this);
|
|
|
+ connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));
|
|
|
+ timer->start(100);
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
@@ -70,3 +113,15 @@ MainWindow::~MainWindow()
|
|
|
delete ui;
|
|
|
}
|
|
|
|
|
|
+void MainWindow::onTimer()
|
|
|
+{
|
|
|
+ double angle,acc,brake;
|
|
|
+ if(GetWheelAccBrake(angle,acc,brake) == 0)
|
|
|
+ {
|
|
|
+ char strout[1000];
|
|
|
+ snprintf(strout,1000,"angle:%f\nacc:%f\nbrake:%f",angle,acc,brake);
|
|
|
+ ui->plainTextEdit->setPlainText(strout);
|
|
|
+// std::cout<<" angle: "<<angle<<" acc: "<<acc<<" brake:"<<brake<<std::endl;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|