diff options
Diffstat (limited to 'tracker-hatire')
| -rw-r--r-- | tracker-hatire/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | tracker-hatire/ftnoir_hatcontrols.ui | 120 | ||||
| -rw-r--r-- | tracker-hatire/ftnoir_tracker_hat.cpp | 102 | ||||
| -rw-r--r-- | tracker-hatire/ftnoir_tracker_hat.h | 33 | ||||
| -rw-r--r-- | tracker-hatire/ftnoir_tracker_hat_dialog.cpp | 14 | ||||
| -rw-r--r-- | tracker-hatire/ftnoir_tracker_hat_dialog.h | 4 | ||||
| -rw-r--r-- | tracker-hatire/ftnoir_tracker_hat_settings.h | 4 | ||||
| -rw-r--r-- | tracker-hatire/lang/nl_NL.ts | 127 | ||||
| -rw-r--r-- | tracker-hatire/lang/ru_RU.ts | 127 | ||||
| -rw-r--r-- | tracker-hatire/lang/stub.ts | 127 | ||||
| -rw-r--r-- | tracker-hatire/lang/zh_CN.ts | 353 | ||||
| -rw-r--r-- | tracker-hatire/thread.cpp | 72 | ||||
| -rw-r--r-- | tracker-hatire/thread.hpp | 13 |
13 files changed, 538 insertions, 565 deletions
diff --git a/tracker-hatire/CMakeLists.txt b/tracker-hatire/CMakeLists.txt index 39431724..01dd52b9 100644 --- a/tracker-hatire/CMakeLists.txt +++ b/tracker-hatire/CMakeLists.txt @@ -1,5 +1,8 @@ if(Qt5SerialPort_FOUND) otr_module(tracker-hatire) - target_link_libraries(opentrack-tracker-hatire ${Qt5SerialPort_LIBRARIES}) - target_include_directories(opentrack-tracker-hatire SYSTEM PUBLIC ${Qt5SerialPort_INCLUDE_DIRS}) + target_link_libraries(${self} ${Qt5SerialPort_LIBRARIES}) + target_include_directories(${self} SYSTEM PUBLIC ${Qt5SerialPort_INCLUDE_DIRS}) + if (WIN32 OR APPLE) + otr_install_lib(Qt5::SerialPort .) + endif() endif() diff --git a/tracker-hatire/ftnoir_hatcontrols.ui b/tracker-hatire/ftnoir_hatcontrols.ui index 8b07e42e..758d8e51 100644 --- a/tracker-hatire/ftnoir_hatcontrols.ui +++ b/tracker-hatire/ftnoir_hatcontrols.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>389</width> - <height>528</height> + <height>497</height> </rect> </property> <property name="minimumSize"> @@ -103,7 +103,7 @@ <bool>false</bool> </property> <property name="sizeAdjustPolicy"> - <enum>QComboBox::AdjustToMinimumContentsLength</enum> + <enum>QComboBox::AdjustToContents</enum> </property> <property name="modelColumn"> <number>0</number> @@ -129,38 +129,6 @@ </property> </widget> </item> - <item row="1" column="1"> - <widget class="QCheckBox" name="serial_bug_workaround"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> - <horstretch>6</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Buggy serial port uses too much CPU</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_6"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>3</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>65536</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Workaround</string> - </property> - </widget> - </item> </layout> </widget> </item> @@ -1048,7 +1016,7 @@ p, li { white-space: pre-wrap; } </size> </property> <property name="toolTip"> - <string><html><head/><body><p>Indicate at OpenTrack speed sketch FPS to adjust CPU </p></body></html></string> + <string><html><head/><body><p>Indicate at opentrack speed sketch FPS to adjust CPU </p></body></html></string> </property> <property name="minimum"> <number>10</number> @@ -1168,16 +1136,6 @@ p, li { white-space: pre-wrap; } <string>Serial Parameters</string> </property> <layout class="QGridLayout" name="gridLayout_8"> - <item row="0" column="1"> - <widget class="QComboBox" name="QCB_Serial_baudRate"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> <item row="3" column="1"> <widget class="QComboBox" name="QCB_Serial_stopBits"> <property name="sizePolicy"> @@ -1195,6 +1153,13 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> + <item row="0" column="0"> + <widget class="QLabel" name="baudRateLabel"> + <property name="text"> + <string>BaudRate:</string> + </property> + </widget> + </item> <item row="2" column="1"> <widget class="QComboBox" name="QCB_Serial_parity"> <property name="sizePolicy"> @@ -1205,13 +1170,10 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item row="4" column="1"> - <widget class="QComboBox" name="QCB_Serial_flowControl"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <item row="1" column="0"> + <widget class="QLabel" name="dataBitsLabel"> + <property name="text"> + <string>Data bits</string> </property> </widget> </item> @@ -1222,6 +1184,16 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> + <item row="0" column="1"> + <widget class="QComboBox" name="QCB_Serial_baudRate"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> <item row="2" column="0"> <widget class="QLabel" name="parityLabel"> <property name="text"> @@ -1229,15 +1201,18 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item row="0" column="0"> - <widget class="QLabel" name="baudRateLabel"> - <property name="text"> - <string>BaudRate:</string> + <item row="1" column="1"> + <widget class="QComboBox" name="QCB_Serial_dataBits"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QComboBox" name="QCB_Serial_dataBits"> + <item row="4" column="1"> + <widget class="QComboBox" name="QCB_Serial_flowControl"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> @@ -1246,10 +1221,23 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="dataBitsLabel"> + <item row="5" column="0"> + <widget class="QLabel" name="label_6"> <property name="text"> - <string>Data bits</string> + <string>DTR</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QCheckBox" name="QCB_Serial_dtr"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> </property> </widget> </item> @@ -1403,6 +1391,7 @@ p, li { white-space: pre-wrap; } </layout> </widget> <tabstops> + <tabstop>tabWidget</tabstop> <tabstop>cbSerialPort</tabstop> <tabstop>btnZero</tabstop> <tabstop>btnReset</tabstop> @@ -1425,24 +1414,27 @@ p, li { white-space: pre-wrap; } <tabstop>cb_z</tabstop> <tabstop>chkInvertZ</tabstop> <tabstop>le_cmd_init</tabstop> + <tabstop>spb_BeforeInit</tabstop> <tabstop>le_cmd_start</tabstop> + <tabstop>spb_BeforeStart</tabstop> <tabstop>spb_AfterStart</tabstop> <tabstop>le_cmd_stop</tabstop> <tabstop>le_cmd_center</tabstop> <tabstop>le_cmd_zero</tabstop> - <tabstop>le_cmd_reset</tabstop> <tabstop>spb_Fps</tabstop> + <tabstop>le_cmd_reset</tabstop> <tabstop>cb_Endian</tabstop> <tabstop>QCB_Serial_baudRate</tabstop> <tabstop>QCB_Serial_dataBits</tabstop> <tabstop>QCB_Serial_parity</tabstop> <tabstop>QCB_Serial_stopBits</tabstop> <tabstop>QCB_Serial_flowControl</tabstop> + <tabstop>QCB_Serial_dtr</tabstop> + <tabstop>btn_icone</tabstop> + <tabstop>chkEnableLogging</tabstop> <tabstop>lineSend</tabstop> <tabstop>btnSend</tabstop> <tabstop>pteINFO</tabstop> - <tabstop>tabWidget</tabstop> - <tabstop>btn_icone</tabstop> </tabstops> <resources> <include location="ftnoir_hat.qrc"/> diff --git a/tracker-hatire/ftnoir_tracker_hat.cpp b/tracker-hatire/ftnoir_tracker_hat.cpp index e8da968f..9948c30e 100644 --- a/tracker-hatire/ftnoir_tracker_hat.cpp +++ b/tracker-hatire/ftnoir_tracker_hat.cpp @@ -10,27 +10,20 @@ */ #include <QDebug> #include "ftnoir_tracker_hat.h" +#include "compat/math.hpp" #include <algorithm> hatire::hatire() { - HAT.Rot[0]=0; - HAT.Rot[1]=0; - HAT.Rot[2]=0; - HAT.Trans[0]=0; - HAT.Trans[1]=0; - HAT.Trans[2]=0; - - Begin.append((char) 0xAA); - Begin.append((char) 0xAA); - End.append((char) 0x55); - End.append((char) 0x55); -} -hatire::~hatire() -{ + Begin.append((unsigned char) 0xAA); + Begin.append((unsigned char) 0xAA); + End.append((unsigned char) 0x55); + End.append((unsigned char) 0x55); } +hatire::~hatire() = default; + //send RESET to Arduino void hatire::reset() { @@ -43,27 +36,27 @@ void hatire::get_info( int *tps ) *tps=frame_cnt; frame_cnt=0; } -void hatire::start_tracker(QFrame*) +module_status hatire::start_tracker(QFrame*) { - CptError=0; - frame_cnt=0; + CptError=0; + frame_cnt=0; t.Log("Starting Tracker"); serial_result ret = t.init_serial_port(); + t.start(); + switch (ret.code) { case result_ok: - break; + return status_ok(); case result_error: - QMessageBox::warning(0, tr("Error"), ret.error, QMessageBox::Ok,QMessageBox::NoButton); - break; + return error(ret.error); case result_open_error: - QMessageBox::warning(0, tr("Error"), tr("Unable to open ComPort: %1").arg(ret.error), QMessageBox::Ok,QMessageBox::NoButton); - break; + return error(tr("Unable to open ComPort: %1").arg(ret.error)); + default: + return error(tr("Unknown error")); } - - t.start(); } void hatire::serial_info() @@ -106,70 +99,49 @@ void hatire::data(double *data) if (ArduinoData.Code <= 1000) HAT = ArduinoData; - else - emit t.serial_debug_info(data_read.mid(4,24)) ; + data_read.remove(0, 30); } else { + CptError++; // resync frame - int index = data_read.indexOf(Begin, 1); + const int index = data_read.indexOf(Begin, 1); if (index == -1) - { - index = data_read.length(); - } - - if (data_read.length() != 0) - { - emit t.serial_debug_info(data_read.mid(0,index)); - + data_read.clear(); + else data_read.remove(0, index); - - CptError++; - - qDebug() << QTime::currentTime() << "hatire resync stream" << "index" << index << "remaining" << data_read.size(); - } } } } if (CptError > 50) { - emit t.serial_debug_info("Can't find HAT frame"); - CptError=0; - } + qDebug() << "Can't find HAT frame"; + CptError=0; + } - // Need to handle this differently in opentrack as opposed to tracknoir - //if (new_frame) { - // in open track always populate the data, it seems opentrack always gives us a zeroed data structure to populate with pose data. - // if we have no new data, we don't populate it and so 0 pose gets handed back which is wrong. By always running the code below, if we - // have no new data, we will just give it the previous pose data which is the best thing we can do really. + for (unsigned k = 0; k < 3; k++) + HAT.Rot[k] = std::clamp(HAT.Rot[k], -180.f, 180.f); const struct { + double& place; + float input; bool enable; bool sign; - float input; - double& place; } spec[] = { - { s.EnableX, s.InvertX, HAT.Trans[s.XAxis], data[TX] }, - { s.EnableY, s.InvertY, HAT.Trans[s.YAxis], data[TY] }, - { s.EnableZ, s.InvertZ, HAT.Trans[s.ZAxis], data[TZ] }, - { s.EnableYaw, s.InvertYaw, HAT.Rot[s.YawAxis], data[Yaw] }, - { s.EnablePitch, s.InvertPitch, HAT.Rot[s.PitchAxis], data[Pitch] }, - { s.EnableRoll, s.InvertRoll, HAT.Rot[s.RollAxis], data[Roll] }, + { data[TX], HAT.Trans[s.XAxis], s.EnableX, s.InvertX, }, + { data[TY], HAT.Trans[s.YAxis], s.EnableY, s.InvertY, }, + { data[TZ], HAT.Trans[s.ZAxis], s.EnableZ, s.InvertZ, }, + { data[Yaw], HAT.Rot[s.YawAxis], s.EnableYaw, s.InvertYaw }, + { data[Pitch], HAT.Rot[s.PitchAxis], s.EnablePitch, s.InvertPitch }, + { data[Roll], HAT.Rot[s.RollAxis], s.EnableRoll, s.InvertRoll }, }; - for (unsigned i = 0; i < sizeof(spec) / sizeof(*spec); i++) - { - auto& k = spec[i]; - k.place = (k.sign ? -1.f : 1.f) * (k.enable ? k.input : 0.f); - } - - // For debug - //data->x=dataRead.length(); - //data->y=CptError; + for (auto& k : spec) + k.place = (k.sign ? -1 : 1) * (k.enable ? (double)k.input : 0); } #include "ftnoir_tracker_hat_dialog.h" diff --git a/tracker-hatire/ftnoir_tracker_hat.h b/tracker-hatire/ftnoir_tracker_hat.h index 9876414f..16e39c7d 100644 --- a/tracker-hatire/ftnoir_tracker_hat.h +++ b/tracker-hatire/ftnoir_tracker_hat.h @@ -1,17 +1,17 @@ #pragma once #include "thread.hpp" -#include "api/plugin-support.hpp" +#include "api/plugin-api.hpp" #include "ftnoir_tracker_hat_settings.h" #include "ftnoir_arduino_type.h" +#include <atomic> + #include <QObject> -#include <QPalette> -#include <QtGui> #include <QByteArray> #include <QMessageBox> -#include <QtSerialPort/QSerialPort> -#include <QtSerialPort/QSerialPortInfo> +#include <QSerialPort> +#include <QSerialPortInfo> #include <QSettings> class hatire : public QObject, public ITracker @@ -20,34 +20,35 @@ class hatire : public QObject, public ITracker public: hatire(); - ~hatire(); + ~hatire() override; - void start_tracker(QFrame*); - void data(double *data); + module_status start_tracker(QFrame*) override; + void data(double *data) override; //void center(); //bool notifyZeroed(); void reset(); - void get_info( int *tps ); + void get_info(int *tps); void serial_info(); void send_serial_command(const QByteArray& x); hatire_thread t; + private: - TArduinoData ArduinoData, HAT; + TArduinoData ArduinoData {}, HAT {}; QByteArray Begin; QByteArray End; TrackerSettings s; - int frame_cnt; - - volatile int CptError; + int frame_cnt = 0; - static inline QByteArray to_latin1(const QString& str) { return str.toLatin1(); } + std::atomic<int> CptError { 0 }; }; class hatire_metadata : public Metadata { - QString name() { return QString(QCoreApplication::translate("hatire_metadata", "Hatire Arduino")); } - QIcon icon() { return QIcon(":/images/hat.png"); } + Q_OBJECT + + QString name() override { return tr("Hatire Arduino"); } + QIcon icon() override { return QIcon(":/images/hat.png"); } }; diff --git a/tracker-hatire/ftnoir_tracker_hat_dialog.cpp b/tracker-hatire/ftnoir_tracker_hat_dialog.cpp index 6fb17361..7cede5ca 100644 --- a/tracker-hatire/ftnoir_tracker_hat_dialog.cpp +++ b/tracker-hatire/ftnoir_tracker_hat_dialog.cpp @@ -32,6 +32,10 @@ dialog_hatire::dialog_hatire() : theTracker(nullptr), timer(this) ui.QCB_Serial_baudRate->addItem(QLatin1String("38400"),QSerialPort::Baud38400); ui.QCB_Serial_baudRate->addItem(QLatin1String("57600"),QSerialPort:: Baud57600); ui.QCB_Serial_baudRate->addItem(QLatin1String("115200"),QSerialPort::Baud115200); + ui.QCB_Serial_baudRate->addItem(QLatin1String("230400"),(QSerialPort::BaudRate)230400); + ui.QCB_Serial_baudRate->addItem(QLatin1String("250000"),(QSerialPort::BaudRate)250000); + ui.QCB_Serial_baudRate->addItem(QLatin1String("500000"),(QSerialPort::BaudRate)500000); + ui.QCB_Serial_baudRate->addItem(QLatin1String("1000000"),(QSerialPort::BaudRate)1000000); ui.QCB_Serial_dataBits->clear(); ui.QCB_Serial_dataBits->addItem(QLatin1String("5"), QSerialPort::Data5); @@ -91,6 +95,7 @@ dialog_hatire::dialog_hatire() : theTracker(nullptr), timer(this) tie_setting(s.DelaySeq, ui.spb_AfterStart); tie_setting(s.BigEndian, ui.cb_Endian); + tie_setting(s.pDTR, ui.QCB_Serial_dtr); tie_setting(s.pBaudRate, ui.QCB_Serial_baudRate); tie_setting(s.pDataBits, ui.QCB_Serial_dataBits); @@ -98,8 +103,6 @@ dialog_hatire::dialog_hatire() : theTracker(nullptr), timer(this) tie_setting(s.pParity, ui.QCB_Serial_parity); tie_setting(s.pStopBits, ui.QCB_Serial_stopBits); - tie_setting(s.serial_bug_workaround, ui.serial_bug_workaround); - tie_setting(s.QSerialPortName, ui.cbSerialPort); connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); @@ -118,8 +121,7 @@ dialog_hatire::dialog_hatire() : theTracker(nullptr), timer(this) //connect(ui.lineSend,SIGNAL(keyPressEvent),this,SLOT(on_lineSend_returnPressed()) ); } -dialog_hatire::~dialog_hatire() { -} +dialog_hatire::~dialog_hatire() = default; void dialog_hatire::Initialize(QWidget *parent) { @@ -180,8 +182,8 @@ void dialog_hatire::poll_tracker_info() int frame_cnt; theTracker->get_info(&frame_cnt); - ui.lab_vtps->setText(QString::number(frame_cnt*(1000/last_time.elapsed()))); - last_time.restart(); + ui.lab_vtps->setText(QString::number(frame_cnt*(1000/last_time.elapsed_ms()))); + last_time.start(); } } diff --git a/tracker-hatire/ftnoir_tracker_hat_dialog.h b/tracker-hatire/ftnoir_tracker_hat_dialog.h index 7577445c..c578f22f 100644 --- a/tracker-hatire/ftnoir_tracker_hat_dialog.h +++ b/tracker-hatire/ftnoir_tracker_hat_dialog.h @@ -1,12 +1,12 @@ #pragma once #include "api/plugin-api.hpp" +#include "compat/timer.hpp" #include "ftnoir_tracker_hat_settings.h" #include "ftnoir_tracker_hat.h" #include "ui_ftnoir_hatcontrols.h" #include <QObject> #include <QWidget> -#include <QTime> #include <QTimer> #include <QMessageBox> #include <QMetaType> @@ -25,7 +25,7 @@ public: private: Ui::UIHATControls ui; hatire *theTracker; - QTime last_time; + Timer last_time; public slots: void WriteMsgInfo(const QByteArray &MsgInfo); diff --git a/tracker-hatire/ftnoir_tracker_hat_settings.h b/tracker-hatire/ftnoir_tracker_hat_settings.h index 7e9f7244..b17042c7 100644 --- a/tracker-hatire/ftnoir_tracker_hat_settings.h +++ b/tracker-hatire/ftnoir_tracker_hat_settings.h @@ -22,7 +22,7 @@ struct TrackerSettings : opts value<int> DelayInit, DelayStart, DelaySeq; - value<bool> BigEndian, EnableLogging, serial_bug_workaround; + value<bool> BigEndian, EnableLogging, pDTR; value<QString> QSerialPortName; @@ -63,7 +63,7 @@ struct TrackerSettings : opts DelaySeq(b, "after-start-delay", 0), BigEndian(b, "is-big-endian", false), EnableLogging(b, "enable-logging", false), - serial_bug_workaround(b, "serial-bug-workaround", false), + pDTR(b, "data-terminal-ready", false), QSerialPortName(b, "serial-port-name", ""), pBaudRate(b, "baud-rate", QSerialPort::Baud115200), pDataBits(b, "data-bits", QSerialPort::Data8), diff --git a/tracker-hatire/lang/nl_NL.ts b/tracker-hatire/lang/nl_NL.ts index 79db6426..af8cbd2c 100644 --- a/tracker-hatire/lang/nl_NL.ts +++ b/tracker-hatire/lang/nl_NL.ts @@ -4,251 +4,170 @@ <context> <name>UIHATControls</name> <message> - <location filename="../ftnoir_hatcontrols.ui" line="+29"/> <source>Head Arduino Tracker settings FaceTrackNoIR</source> <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+58"/> <source>Serial port</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> - <source>Buggy serial port uses too much CPU</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Workaround</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <location line="+819"/> <source>Zero</source> <translation type="unfinished"></translation> </message> <message> - <location line="-803"/> - <location line="+764"/> <source>Reset</source> <translation type="unfinished"></translation> </message> <message> - <location line="-757"/> <source>Axis Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> - <location line="+217"/> - <location line="+47"/> - <location line="+63"/> - <location line="+63"/> - <location line="+91"/> <source>Associate Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-477"/> - <location line="+390"/> - <location line="+91"/> <source>RotX</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> - <location line="+390"/> - <location line="+91"/> <source>RotY</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> - <location line="+390"/> - <location line="+91"/> <source>RotZ</source> <translation type="unfinished"></translation> </message> <message> - <location line="-467"/> - <location line="+19"/> - <location line="+39"/> - <location line="+159"/> - <location line="+173"/> - <location line="+22"/> <source>Enable Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-374"/> <source>Pitch:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Enable</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> <source>Yaw:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Invert</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Y:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> - <location line="+35"/> - <location line="+22"/> - <location line="+110"/> - <location line="+50"/> - <location line="+104"/> <source>Invert Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-299"/> <source>X:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+61"/> - <location line="+47"/> - <location line="+63"/> <source>X</source> <translation type="unfinished"></translation> </message> <message> - <location line="-105"/> - <location line="+47"/> - <location line="+63"/> <source>Y</source> <translation type="unfinished"></translation> </message> <message> - <location line="-105"/> - <location line="+47"/> - <location line="+63"/> <source>Z</source> <translation type="unfinished"></translation> </message> <message> - <location line="-49"/> <source>Roll:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+85"/> <source>Z:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+126"/> <source>Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="+16"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> <source>Trame per seconde</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>tps</source> <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> <source>Info:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> <source>HAT STOPPED</source> <translation type="unfinished"></translation> </message> <message> - <location line="+30"/> <source>Command</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> <source>Arduino Commands</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> <source>Init</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Start</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Start send sequence</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Initialising Arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Stop send sequence</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Center</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Stop</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Command for read Center Gyro arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Reset Arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Command for reset Center Gyro arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -258,17 +177,14 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> <source>Endian</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> - <source><html><head/><body><p>Indicate at OpenTrack speed sketch FPS to adjust CPU </p></body></html></source> + <source><html><head/><body><p>Indicate at opentrack speed sketch FPS to adjust CPU </p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -277,7 +193,6 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -286,12 +201,10 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Delay</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -300,47 +213,38 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Delay after startup</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> <source>Serial Parameters</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Flow control</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> <source>Stop bits</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Parity</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>BaudRate:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> <source>Data bits</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> <source>About</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -350,40 +254,37 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+48"/> <source>Version 1.0.0</source> <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Send</source> <translation type="unfinished"></translation> </message> <message> - <location line="+29"/> <source>Disable when not in use, will have a performance impact</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Enable logging to diagnostic file</source> <translation type="unfinished"></translation> </message> + <message> + <source>DTR</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>dialog_hatire</name> <message> - <location filename="../ftnoir_tracker_hat_dialog.cpp" line="+20"/> <source>Version %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+198"/> <source>HAT START</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>HAT STOPPED</source> <translation type="unfinished"></translation> </message> @@ -391,21 +292,17 @@ p, li { white-space: pre-wrap; } <context> <name>hatire</name> <message> - <location filename="../ftnoir_tracker_hat.cpp" line="+59"/> - <location line="+3"/> - <source>Error</source> + <source>Unable to open ComPort: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> - <source>Unable to open ComPort: %1</source> + <source>Unknown error</source> <translation type="unfinished"></translation> </message> </context> <context> <name>hatire_metadata</name> <message> - <location filename="../ftnoir_tracker_hat.h" line="+51"/> <source>Hatire Arduino</source> <translation type="unfinished"></translation> </message> @@ -413,52 +310,42 @@ p, li { white-space: pre-wrap; } <context> <name>hatire_thread</name> <message> - <location filename="../thread.cpp" line="+27"/> <source>Timeout during writing command</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> <source>COM port not open</source> <translation type="unfinished"></translation> </message> <message> - <location line="+111"/> <source>Setting serial port name</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Opening serial port</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Port Open</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> <source>Port Parameters set</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Raising DTR</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> <source>Raising RTS</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> <source>Waiting on init</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> <source>Port setup, waiting for HAT frames to process</source> <translation type="unfinished"></translation> </message> diff --git a/tracker-hatire/lang/ru_RU.ts b/tracker-hatire/lang/ru_RU.ts index c230cabd..16052702 100644 --- a/tracker-hatire/lang/ru_RU.ts +++ b/tracker-hatire/lang/ru_RU.ts @@ -4,251 +4,170 @@ <context> <name>UIHATControls</name> <message> - <location filename="../ftnoir_hatcontrols.ui" line="+29"/> <source>Head Arduino Tracker settings FaceTrackNoIR</source> <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+58"/> <source>Serial port</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> - <source>Buggy serial port uses too much CPU</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Workaround</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <location line="+819"/> <source>Zero</source> <translation type="unfinished"></translation> </message> <message> - <location line="-803"/> - <location line="+764"/> <source>Reset</source> <translation type="unfinished"></translation> </message> <message> - <location line="-757"/> <source>Axis Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> - <location line="+217"/> - <location line="+47"/> - <location line="+63"/> - <location line="+63"/> - <location line="+91"/> <source>Associate Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-477"/> - <location line="+390"/> - <location line="+91"/> <source>RotX</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> - <location line="+390"/> - <location line="+91"/> <source>RotY</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> - <location line="+390"/> - <location line="+91"/> <source>RotZ</source> <translation type="unfinished"></translation> </message> <message> - <location line="-467"/> - <location line="+19"/> - <location line="+39"/> - <location line="+159"/> - <location line="+173"/> - <location line="+22"/> <source>Enable Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-374"/> <source>Pitch:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Enable</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> <source>Yaw:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Invert</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Y:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> - <location line="+35"/> - <location line="+22"/> - <location line="+110"/> - <location line="+50"/> - <location line="+104"/> <source>Invert Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-299"/> <source>X:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+61"/> - <location line="+47"/> - <location line="+63"/> <source>X</source> <translation type="unfinished"></translation> </message> <message> - <location line="-105"/> - <location line="+47"/> - <location line="+63"/> <source>Y</source> <translation type="unfinished"></translation> </message> <message> - <location line="-105"/> - <location line="+47"/> - <location line="+63"/> <source>Z</source> <translation type="unfinished"></translation> </message> <message> - <location line="-49"/> <source>Roll:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+85"/> <source>Z:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+126"/> <source>Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="+16"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> <source>Trame per seconde</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>tps</source> <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> <source>Info:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> <source>HAT STOPPED</source> <translation type="unfinished"></translation> </message> <message> - <location line="+30"/> <source>Command</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> <source>Arduino Commands</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> <source>Init</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Start</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Start send sequence</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Initialising Arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Stop send sequence</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Center</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Stop</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Command for read Center Gyro arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Reset Arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Command for reset Center Gyro arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -258,17 +177,14 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> <source>Endian</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> - <source><html><head/><body><p>Indicate at OpenTrack speed sketch FPS to adjust CPU </p></body></html></source> + <source><html><head/><body><p>Indicate at opentrack speed sketch FPS to adjust CPU </p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -277,7 +193,6 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -286,12 +201,10 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Delay</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -300,47 +213,38 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Delay after startup</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> <source>Serial Parameters</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Flow control</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> <source>Stop bits</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Parity</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>BaudRate:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> <source>Data bits</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> <source>About</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -350,40 +254,37 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+48"/> <source>Version 1.0.0</source> <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Send</source> <translation type="unfinished"></translation> </message> <message> - <location line="+29"/> <source>Disable when not in use, will have a performance impact</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Enable logging to diagnostic file</source> <translation type="unfinished"></translation> </message> + <message> + <source>DTR</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>dialog_hatire</name> <message> - <location filename="../ftnoir_tracker_hat_dialog.cpp" line="+20"/> <source>Version %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+198"/> <source>HAT START</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>HAT STOPPED</source> <translation type="unfinished"></translation> </message> @@ -391,21 +292,17 @@ p, li { white-space: pre-wrap; } <context> <name>hatire</name> <message> - <location filename="../ftnoir_tracker_hat.cpp" line="+59"/> - <location line="+3"/> - <source>Error</source> + <source>Unable to open ComPort: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> - <source>Unable to open ComPort: %1</source> + <source>Unknown error</source> <translation type="unfinished"></translation> </message> </context> <context> <name>hatire_metadata</name> <message> - <location filename="../ftnoir_tracker_hat.h" line="+51"/> <source>Hatire Arduino</source> <translation type="unfinished"></translation> </message> @@ -413,52 +310,42 @@ p, li { white-space: pre-wrap; } <context> <name>hatire_thread</name> <message> - <location filename="../thread.cpp" line="+27"/> <source>Timeout during writing command</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> <source>COM port not open</source> <translation type="unfinished"></translation> </message> <message> - <location line="+111"/> <source>Setting serial port name</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Opening serial port</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Port Open</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> <source>Port Parameters set</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Raising DTR</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> <source>Raising RTS</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> <source>Waiting on init</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> <source>Port setup, waiting for HAT frames to process</source> <translation type="unfinished"></translation> </message> diff --git a/tracker-hatire/lang/stub.ts b/tracker-hatire/lang/stub.ts index e8a55345..90c8e616 100644 --- a/tracker-hatire/lang/stub.ts +++ b/tracker-hatire/lang/stub.ts @@ -4,251 +4,170 @@ <context> <name>UIHATControls</name> <message> - <location filename="../ftnoir_hatcontrols.ui" line="+29"/> <source>Head Arduino Tracker settings FaceTrackNoIR</source> <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> - <location line="+58"/> <source>Serial port</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> - <source>Buggy serial port uses too much CPU</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Workaround</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <location line="+819"/> <source>Zero</source> <translation type="unfinished"></translation> </message> <message> - <location line="-803"/> - <location line="+764"/> <source>Reset</source> <translation type="unfinished"></translation> </message> <message> - <location line="-757"/> <source>Axis Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> - <location line="+217"/> - <location line="+47"/> - <location line="+63"/> - <location line="+63"/> - <location line="+91"/> <source>Associate Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-477"/> - <location line="+390"/> - <location line="+91"/> <source>RotX</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> - <location line="+390"/> - <location line="+91"/> <source>RotY</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> - <location line="+390"/> - <location line="+91"/> <source>RotZ</source> <translation type="unfinished"></translation> </message> <message> - <location line="-467"/> - <location line="+19"/> - <location line="+39"/> - <location line="+159"/> - <location line="+173"/> - <location line="+22"/> <source>Enable Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-374"/> <source>Pitch:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Enable</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> <source>Yaw:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Invert</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Y:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> - <location line="+35"/> - <location line="+22"/> - <location line="+110"/> - <location line="+50"/> - <location line="+104"/> <source>Invert Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="-299"/> <source>X:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+61"/> - <location line="+47"/> - <location line="+63"/> <source>X</source> <translation type="unfinished"></translation> </message> <message> - <location line="-105"/> - <location line="+47"/> - <location line="+63"/> <source>Y</source> <translation type="unfinished"></translation> </message> <message> - <location line="-105"/> - <location line="+47"/> - <location line="+63"/> <source>Z</source> <translation type="unfinished"></translation> </message> <message> - <location line="-49"/> <source>Roll:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+85"/> <source>Z:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+126"/> <source>Axis</source> <translation type="unfinished"></translation> </message> <message> - <location line="+16"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> <source>Trame per seconde</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>tps</source> <translation type="unfinished"></translation> </message> <message> - <location line="+41"/> <source>Info:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> <source>HAT STOPPED</source> <translation type="unfinished"></translation> </message> <message> - <location line="+30"/> <source>Command</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> <source>Arduino Commands</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> <source>Init</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Start</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Start send sequence</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Initialising Arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Stop send sequence</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Center</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Stop</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Command for read Center Gyro arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Command for Reset Arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Command for reset Center Gyro arduino</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -258,17 +177,14 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> <source>Endian</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> - <source><html><head/><body><p>Indicate at OpenTrack speed sketch FPS to adjust CPU </p></body></html></source> + <source><html><head/><body><p>Indicate at opentrack speed sketch FPS to adjust CPU </p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -277,7 +193,6 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -286,12 +201,10 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Delay</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -300,47 +213,38 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Delay after startup</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> <source>Serial Parameters</source> <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> <source>Flow control</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> <source>Stop bits</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>Parity</source> <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> <source>BaudRate:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> <source>Data bits</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> <source>About</source> <translation type="unfinished"></translation> </message> <message> - <location line="+6"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -350,40 +254,37 @@ p, li { white-space: pre-wrap; } <translation type="unfinished"></translation> </message> <message> - <location line="+48"/> <source>Version 1.0.0</source> <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> <source>Send</source> <translation type="unfinished"></translation> </message> <message> - <location line="+29"/> <source>Disable when not in use, will have a performance impact</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Enable logging to diagnostic file</source> <translation type="unfinished"></translation> </message> + <message> + <source>DTR</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>dialog_hatire</name> <message> - <location filename="../ftnoir_tracker_hat_dialog.cpp" line="+20"/> <source>Version %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+198"/> <source>HAT START</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>HAT STOPPED</source> <translation type="unfinished"></translation> </message> @@ -391,21 +292,17 @@ p, li { white-space: pre-wrap; } <context> <name>hatire</name> <message> - <location filename="../ftnoir_tracker_hat.cpp" line="+59"/> - <location line="+3"/> - <source>Error</source> + <source>Unable to open ComPort: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+0"/> - <source>Unable to open ComPort: %1</source> + <source>Unknown error</source> <translation type="unfinished"></translation> </message> </context> <context> <name>hatire_metadata</name> <message> - <location filename="../ftnoir_tracker_hat.h" line="+51"/> <source>Hatire Arduino</source> <translation type="unfinished"></translation> </message> @@ -413,52 +310,42 @@ p, li { white-space: pre-wrap; } <context> <name>hatire_thread</name> <message> - <location filename="../thread.cpp" line="+27"/> <source>Timeout during writing command</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> <source>COM port not open</source> <translation type="unfinished"></translation> </message> <message> - <location line="+111"/> <source>Setting serial port name</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Opening serial port</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> <source>Port Open</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> <source>Port Parameters set</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> <source>Raising DTR</source> <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> <source>Raising RTS</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> <source>Waiting on init</source> <translation type="unfinished"></translation> </message> <message> - <location line="+17"/> <source>Port setup, waiting for HAT frames to process</source> <translation type="unfinished"></translation> </message> diff --git a/tracker-hatire/lang/zh_CN.ts b/tracker-hatire/lang/zh_CN.ts new file mode 100644 index 00000000..d80cfa28 --- /dev/null +++ b/tracker-hatire/lang/zh_CN.ts @@ -0,0 +1,353 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="zh_CN"> +<context> + <name>UIHATControls</name> + <message> + <source>Head Arduino Tracker settings FaceTrackNoIR</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>General</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Serial port</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Zero</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Axis Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Associate Axis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>RotX</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>RotY</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>RotZ</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable Axis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pitch:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Yaw:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Invert</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Y:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Invert Axis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>X:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>X</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Z</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Roll:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Z:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Axis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Trame per seconde</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>tps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Info:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>HAT STOPPED</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Arduino Commands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Init</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command for Start send sequence</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command for Initialising Arduino</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command for Stop send sequence</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command for read Center Gyro arduino</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command for Reset Arduino</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Command for reset Center Gyro arduino</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Little or Big Endian for <span style=" font-family:'Arial,Geneva,Helvetica,sans-serif'; font-size:medium; color:#000000;">the serialization of byte order</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial,Geneva,Helvetica,sans-serif'; font-size:medium; color:#000000;">Arduino is LittleEndian ( unchecked)</span></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Endian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><html><head/><body><p>Indicate at opentrack speed sketch FPS to adjust CPU </p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Delay before Init command in ms</span></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Delay after Init command in ms</span></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delay</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Delay after Start Command in ms</span></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delay after startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Serial Parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Flow control</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stop bits</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Parity</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>BaudRate:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Data bits</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>About</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">FTNoIR HAT Plugin<br />by FuraX49</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://hatire.sourceforge.net/"><span style=" font-size:8pt; font-weight:600; text-decoration: underline; color:#0000ff;">Manual (external)</span></a></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Version 1.0.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Send</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable when not in use, will have a performance impact</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable logging to diagnostic file</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>DTR</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>dialog_hatire</name> + <message> + <source>Version %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>HAT START</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>HAT STOPPED</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>hatire</name> + <message> + <source>Unable to open ComPort: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unknown error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>hatire_metadata</name> + <message> + <source>Hatire Arduino</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>hatire_thread</name> + <message> + <source>Timeout during writing command</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>COM port not open</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Setting serial port name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Opening serial port</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port Parameters set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Raising DTR</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Raising RTS</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Waiting on init</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port setup, waiting for HAT frames to process</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/tracker-hatire/thread.cpp b/tracker-hatire/thread.cpp index fa09e5da..7d61a90a 100644 --- a/tracker-hatire/thread.cpp +++ b/tracker-hatire/thread.cpp @@ -1,12 +1,15 @@ #include "thread.hpp" +#include "compat/base-path.hpp" #include "compat/sleep.hpp" + #include <utility> +#include <cstring> #include <QTextStream> #include <QTime> -#include <QDebug> +#include <QByteArray> -#include <cstring> +#include <QDebug> void hatire_thread::sendcmd_impl(const QByteArray &cmd) { @@ -24,7 +27,7 @@ void hatire_thread::sendcmd_impl(const QByteArray &cmd) Log(logMess); com_port.write(cmd); if (!com_port.waitForBytesWritten(1000)) { - emit serial_debug_info_str(tr("Timeout during writing command")); + serial_debug_info_str(tr("Timeout during writing command")); } else { Msg.append("\r\n"); @@ -42,7 +45,7 @@ void hatire_thread::sendcmd_impl(const QByteArray &cmd) emit serial_debug_info(Msg); #endif } else { - emit serial_debug_info_str(tr("COM port not open")); + serial_debug_info_str(tr("COM port not open")); } } #endif @@ -52,7 +55,7 @@ struct Diag final : public QFile { Diag() { - setFileName(QCoreApplication::applicationDirPath() + "/HATDiagnostics.txt"); + setFileName(OPENTRACK_BASE_PATH + "/HATDiagnostics.txt"); } }; @@ -68,7 +71,7 @@ void hatire_thread::Log(const QString& message) { QTextStream out(&flDiagnostics); QString milliSeconds; - milliSeconds = QString("%1").arg(QTime::currentTime().msec(), 3, 10, QChar('0')); + milliSeconds = QStringLiteral("%1").arg(QTime::currentTime().msec(), 3, 10, QChar('0')); // We have a file out << QTime::currentTime().toString() << "." << milliSeconds << ": " << message << "\r\n"; flDiagnostics.close(); @@ -88,8 +91,6 @@ hatire_thread::~hatire_thread() hatire_thread::hatire_thread() { - data_read.reserve(65536); - connect(this, &QThread::finished, this, &hatire_thread::teardown_serial, Qt::DirectConnection); connect(this, &hatire_thread::init_serial_port, this, &hatire_thread::init_serial_port_impl, Qt::QueuedConnection); connect(this, &hatire_thread::serial_info, this, &hatire_thread::serial_info_impl, Qt::QueuedConnection); @@ -110,7 +111,7 @@ void hatire_thread::teardown_serial() { QByteArray msg; Log("Tracker shut down"); - com_port.write(to_latin1(s.CmdStop)); + com_port.write(s.CmdStop->toUtf8()); if (!com_port.waitForBytesWritten(1000)) { emit serial_debug_info("TimeOut in writing CMD"); @@ -119,12 +120,13 @@ void hatire_thread::teardown_serial() { msg.append("\r\n"); msg.append("SEND '"); - msg.append(s.CmdStop); + msg.append(s.CmdStop->toUtf8()); msg.append("'\r\n"); } emit serial_debug_info(msg); - disconnect(&com_port, SIGNAL(readyRead()), nullptr, nullptr); + // XXX does this make any sense? -sh 20180703 + //disconnect(&com_port, SIGNAL(readyRead()), nullptr, nullptr); com_port.close(); } } @@ -135,8 +137,8 @@ void hatire_thread::run() com_port.setFileName(HATIRE_DEBUG_LOGFILE); com_port.open(QIODevice::ReadOnly); - read_timer.start(10); connect(&read_timer, &QTimer::timeout, this, &hatire_thread::on_serial_read, Qt::DirectConnection); + read_timer.start(5); #endif (void) exec(); @@ -147,7 +149,7 @@ void hatire_thread::run() void hatire_thread::serial_debug_info_str(const QString& str) { - serial_debug_info(str.toUtf8()); + emit serial_debug_info(str.toLatin1()); } serial_result hatire_thread::init_serial_port_impl() @@ -166,8 +168,8 @@ serial_result hatire_thread::init_serial_port_impl() && com_port.setParity((QSerialPort::Parity)s.pParity) && com_port.setStopBits((QSerialPort::StopBits)s.pStopBits) && com_port.setFlowControl((QSerialPort::FlowControl)s.pFlowControl) + && com_port.setDataTerminalReady(s.pDTR) && com_port.clear(QSerialPort::AllDirections) - && com_port.setDataErrorPolicy(QSerialPort::IgnorePolicy) ) { Log(tr("Port Parameters set")); @@ -199,7 +201,7 @@ serial_result hatire_thread::init_serial_port_impl() } Log(tr("Waiting on init")); qDebug() << QTime::currentTime() << " HAT send INIT "; - sendcmd_str(s.CmdInit); + emit sendcmd_str(s.CmdInit); // Wait init MPU sequence for (int i = 1; i <= s.DelayStart; i+=50) { @@ -207,7 +209,7 @@ serial_result hatire_thread::init_serial_port_impl() } // Send START cmd to IMU qDebug() << QTime::currentTime() << " HAT send START "; - sendcmd_str(s.CmdStart); + emit sendcmd_str(s.CmdStart); // Wait start MPU sequence for (int i = 1; i <=s.DelaySeq; i+=50) @@ -240,13 +242,13 @@ void hatire_thread::serial_info_impl() if (com_port.isOpen()) { msg.append("\r\n"); - msg.append(com_port.portName()); + msg.append(com_port.portName().toUtf8()); msg.append("\r\n"); msg.append("BAUDRATE :"); - msg.append(QString::number(com_port.baudRate())); + msg.append(QString::number(com_port.baudRate()).toLatin1()); msg.append("\r\n"); msg.append("DataBits :"); - msg.append(QString::number(com_port.dataBits())); + msg.append(QString::number(com_port.dataBits()).toLatin1()); msg.append("\r\n"); msg.append("Parity :"); @@ -271,7 +273,6 @@ void hatire_thread::serial_info_impl() switch (com_port.stopBits()) { - msg.append(QString::number(com_port.stopBits())); case 1: msg.append("1 stop bit."); break; case 2: msg.append("2 stop bits."); @@ -303,34 +304,27 @@ void hatire_thread::serial_info_impl() void hatire_thread::on_serial_read() { + const int sz = (int)com_port.read(buf, sizeof(buf)); + + if (sz > 0) { QMutexLocker lck(&data_mtx); -#ifndef HATIRE_DEBUG_LOGFILE - data_read += com_port.readAll(); -#else - QByteArray tmp = com_port.read(30); - data_read += tmp; - if (tmp.length() == 0 && read_timer.isActive()) - { - qDebug() << "eof"; - read_timer.stop(); - } -#endif + data_read.append(buf, sz); } - - stat.input(timer.elapsed_ms()); - timer.start(); - - if (throttle_timer.elapsed_ms() >= 3000) +#if defined HATIRE_DEBUG_LOGFILE + else { - throttle_timer.start(); - qDebug() << "stat:" << "avg" << stat.avg() << "stddev" << stat.stddev(); + qDebug() << "eof"; + read_timer.stop(); } +#endif - if (s.serial_bug_workaround) + if (sz <= 0) { // qt can fire QSerialPort::readyRead() needlessly, causing a busy loop. // see https://github.com/opentrack/opentrack/issues/327#issuecomment-207941003 + + // this probably happens with flaky BT/usb-to-serial converters (?) constexpr int hz = 90; constexpr int ms = 1000/hz; portable::sleep(ms); diff --git a/tracker-hatire/thread.hpp b/tracker-hatire/thread.hpp index 38b5c5dd..f6bd8d49 100644 --- a/tracker-hatire/thread.hpp +++ b/tracker-hatire/thread.hpp @@ -1,18 +1,15 @@ #pragma once +#include "ftnoir_arduino_type.h" #include "ftnoir_tracker_hat_settings.h" #include <QSerialPort> -#include <QByteArray> #include <QThread> #include <QMutex> #include <QFile> #include <QCoreApplication> -#include "api/variance.hpp" -#include "compat/timer.hpp" - enum results { result_ok, @@ -20,7 +17,7 @@ enum results result_error, }; -//#define HATIRE_DEBUG_LOGFILE "d:/putty-hatire.log" +//#define HATIRE_DEBUG_LOGFILE "c:/users/sthalik/test-random" #ifdef HATIRE_DEBUG_LOGFILE # include <QFile> @@ -33,7 +30,7 @@ struct serial_result serial_result(results code, const QString& error) : error(error), code(code) {} QString error; - results code; + results code { result_error }; }; class hatire_thread : public QThread @@ -50,11 +47,9 @@ class hatire_thread : public QThread QByteArray data_read; serial_t com_port; TrackerSettings s; - variance stat; - Timer timer, throttle_timer; + char buf[1024]; void run() override; - static inline QByteArray to_latin1(const QString& str) { return str.toLatin1(); } void serial_debug_info_str(const QString& str); |
