debug keyboard, fied communication pb on XBee
authorMjolnir <thomas.pietrzak@inria.fr>
Thu, 20 Aug 2015 16:06:17 +0000 (18:06 +0200)
committerMjolnir <thomas.pietrzak@inria.fr>
Thu, 20 Aug 2015 16:06:17 +0000 (18:06 +0200)
ArduinoKeyboard/ArduinoKeyboard.ino
Library/LivingKeyboard.cpp
Library/LivingKeyboard.h
Test/mainwindow.cpp
Test/mainwindow.h
Test/mainwindow.ui

index 3c6fc3d6cb83f1a4b6658cc3c0ec5056ab8a1c70..b720004c11d793eef5664cb7c0acf0654485944f 100644 (file)
@@ -48,7 +48,7 @@ void setup()
   init_motors();
 
   //Communication
-  Serial.begin(115200);
+  Serial.begin(9600);
 }
 
 void loop()
index 06be01d2a31b9aacbd327abbb22064f3606c7d41..a401f8190fb91f6d0edb080d4c5d33537512e5bd 100644 (file)
@@ -1,11 +1,11 @@
 #include "LivingKeyboard.h"
 
-LivingKeyboard::LivingKeyboard()
-: serialPort(new QSerialPort(port)), connected(false), posX(0), posY(0), toolUp(false)
+LivingKeyboard::LivingKeyboard(QString port)
+: serialPort(new QSerialPort(port)), connected(false)
 {
     if(serialPort->open(QIODevice::ReadWrite))
     {
-        serialPort->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);
+        serialPort->setBaudRate(QSerialPort::Baud9600,QSerialPort::AllDirections);
         serialPort->setDataBits(QSerialPort::Data8);
         serialPort->setParity(QSerialPort::NoParity);
         serialPort->setStopBits(QSerialPort::TwoStop);
index 681034b05bed09fb713330b4d06daaff2fa5c216..43db051c9043ad49bcd1bfedba5ceb07b82ef436 100644 (file)
@@ -8,7 +8,7 @@
 class LivingKeyboard
 {
     public:
-        LivingKeyboard();
+        LivingKeyboard(QString port);
 
         ~LivingKeyboard();
 
index a46af7e299aa0bfb4887b2c7710e5db37f44388f..e11121047441a0f0e1f20eae20500e331b7b614d 100644 (file)
@@ -7,17 +7,30 @@ MainWindow::MainWindow(QWidget *parent)
 : QMainWindow(parent), ui(new Ui::MainWindow)
 {
     ui->setupUi(this);
-    qDebug("Start test");
+    qDebug("Connect mouse");
     try
     {
-        mouse = new XYPlotter("ttyUSB1");
-        connect(ui->movebutton, SIGNAL(clicked()), this, SLOT(moveMouse()));
-        ui->movebutton->setEnabled(true);
+        mouse = new XYPlotter("ttyUSB3");
+        connect(ui->mousebutton, SIGNAL(clicked()), this, SLOT(moveMouse()));
+        ui->mousebutton->setEnabled(true);
     }
     catch (ErrorMessage e)
     {
         mouse = NULL;
-        qDebug(e.what());
+        qDebug() << QString(e.what());
+    }
+    qDebug() << "Connect keyboard";
+    try
+    {
+        keyboard = new LivingKeyboard("ttyUSB2");
+        connect(ui->keyboardbutton, SIGNAL(clicked()), this, SLOT(translateKeyboard()));
+        connect(ui->rotation, SIGNAL(valueChanged(int)), this, SLOT(rotateKeyboard(int)));
+        ui->keyboardbutton->setEnabled(true);
+    }
+    catch (ErrorMessage e)
+    {
+        keyboard = NULL;
+        qDebug() << QString(e.what());
     }
 }
 
@@ -28,6 +41,8 @@ MainWindow::~MainWindow()
         mouse->moveTo(0, 0, false);
         delete mouse;
     }
+    if (keyboard)
+        delete keyboard;
     delete ui;
 }
 
@@ -39,3 +54,28 @@ void MainWindow::moveMouse()
     if (mouse)
         mouse->moveTo(x, y, toolup);
 }
+
+void MainWindow::translateKeyboard()
+{
+    unsigned int distance = ui->translation->value();
+    if (keyboard)
+    {
+        qDebug() << "translate keyboard " << QString::number(distance);
+        if (distance > 0)
+            keyboard->translation(LivingKeyboard::FORWARD, distance);
+        else
+            keyboard->translation(LivingKeyboard::BACKWARD, distance);
+    }
+}
+
+void MainWindow::rotateKeyboard(int angle)
+{
+    if (keyboard)
+    {
+        qDebug() << "rotate keyboard " << QString::number(angle);
+        if (angle > 0)
+            keyboard->rotation(LivingKeyboard::RIGHT, angle);
+        else
+            keyboard->rotation(LivingKeyboard::LEFT, angle);
+    }
+}
index a180b49934d9f24cdf81aaa7bf67f1ddf04097b1..e9d82e94c4d966b44c431d9aec9265ad0fa64c68 100644 (file)
@@ -4,6 +4,7 @@
 #include <QMainWindow>
 
 #include <XYPlotter.h>
+#include <LivingKeyboard.h>
 #include <QDebug>
 
 namespace Ui {
@@ -20,10 +21,13 @@ class MainWindow : public QMainWindow
 
     public slots:
         void moveMouse();
+        void translateKeyboard();
+        void rotateKeyboard(int angle);
 
     private:
         Ui::MainWindow *ui;
         XYPlotter *mouse;
+        LivingKeyboard *keyboard;
 };
 
 #endif // MAINWINDOW_H
index 61aa35ef63878e6e38b9f601fd9fd121cc130e7c..e1b32a7e042d8df308df1707632df0c17ae6579a 100644 (file)
@@ -7,33 +7,73 @@
     <x>0</x>
     <y>0</y>
     <width>400</width>
-    <height>300</height>
+    <height>388</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>MainWindow</string>
   </property>
   <widget class="QWidget" name="centralWidget">
-   <layout class="QGridLayout" name="gridLayout">
-    <item row="0" column="0">
-     <widget class="QLabel" name="label">
-      <property name="text">
-       <string>X</string>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <widget class="QGroupBox" name="groupBox">
+      <property name="title">
+       <string>Mouse</string>
       </property>
+      <layout class="QFormLayout" name="formLayout">
+       <item row="0" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>X</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QSpinBox" name="xvalue">
+         <property name="maximum">
+          <number>2000</number>
+         </property>
+         <property name="singleStep">
+          <number>100</number>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>Y</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QSpinBox" name="yvalue">
+         <property name="maximum">
+          <number>2000</number>
+         </property>
+         <property name="singleStep">
+          <number>100</number>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="QCheckBox" name="toolupvalue">
+         <property name="text">
+          <string>Tool Up</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>Z</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
      </widget>
     </item>
-    <item row="0" column="1">
-     <widget class="QSpinBox" name="xvalue">
-      <property name="maximum">
-       <number>2000</number>
-      </property>
-      <property name="singleStep">
-       <number>100</number>
-      </property>
-     </widget>
-    </item>
-    <item row="3" column="0" colspan="2">
-     <widget class="QPushButton" name="movebutton">
+    <item>
+     <widget class="QPushButton" name="mousebutton">
       <property name="enabled">
        <bool>false</bool>
       </property>
       </property>
      </widget>
     </item>
-    <item row="1" column="1">
-     <widget class="QSpinBox" name="yvalue">
-      <property name="maximum">
-       <number>2000</number>
+    <item>
+     <spacer name="verticalSpacer">
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
       </property>
-      <property name="singleStep">
-       <number>100</number>
+      <property name="sizeHint" stdset="0">
+       <size>
+        <width>20</width>
+        <height>40</height>
+       </size>
       </property>
-     </widget>
+     </spacer>
     </item>
-    <item row="1" column="0">
-     <widget class="QLabel" name="label_2">
-      <property name="text">
-       <string>Y</string>
+    <item>
+     <widget class="QGroupBox" name="groupBox_2">
+      <property name="title">
+       <string>Keyboard</string>
       </property>
+      <layout class="QFormLayout" name="formLayout_2">
+       <property name="fieldGrowthPolicy">
+        <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+       </property>
+       <item row="0" column="0">
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>Tilt</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QSlider" name="rotation">
+         <property name="minimum">
+          <number>-180</number>
+         </property>
+         <property name="maximum">
+          <number>180</number>
+         </property>
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>Translation$</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QSpinBox" name="translation">
+         <property name="minimum">
+          <number>-100</number>
+         </property>
+         <property name="maximum">
+          <number>100</number>
+         </property>
+         <property name="singleStep">
+          <number>10</number>
+         </property>
+        </widget>
+       </item>
+      </layout>
      </widget>
     </item>
-    <item row="2" column="0">
-     <widget class="QLabel" name="label_3">
-      <property name="text">
-       <string>Z</string>
+    <item>
+     <widget class="QPushButton" name="keyboardbutton">
+      <property name="enabled">
+       <bool>false</bool>
       </property>
-     </widget>
-    </item>
-    <item row="2" column="1">
-     <widget class="QCheckBox" name="toolupvalue">
       <property name="text">
-       <string>Tool Up</string>
+       <string>Move</string>
       </property>
      </widget>
     </item>
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
+ <tabstops>
+  <tabstop>xvalue</tabstop>
+  <tabstop>yvalue</tabstop>
+  <tabstop>toolupvalue</tabstop>
+  <tabstop>mousebutton</tabstop>
+  <tabstop>rotation</tabstop>
+  <tabstop>translation</tabstop>
+  <tabstop>keyboardbutton</tabstop>
+ </tabstops>
  <resources/>
  <connections/>
 </ui>