From: Thomas Pietrzak Date: Sat, 8 Sep 2012 15:08:51 +0000 (+0000) Subject: Initial import ANGULARPOSITION, complete DeltaTimeJND X-Git-Url: https://git.thomaspietrzak.com/?a=commitdiff_plain;h=fd2a32a838ccfb08046734fc02f6e884c56f3f22;p=tactonexperiment.git Initial import ANGULARPOSITION, complete DeltaTimeJND git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@95 47cf9a05-e0a8-4ed5-9e9b-101a649bc004 --- diff --git a/AngularPosition/AngularPosition.cpp b/AngularPosition/AngularPosition.cpp new file mode 100644 index 0000000..dd0af13 --- /dev/null +++ b/AngularPosition/AngularPosition.cpp @@ -0,0 +1,21 @@ +#include "AngularPosition.h" + +AngularPosition::AngularPosition(QWidget *parent, Qt::WFlags flags) +: QMainWindow(parent, flags) +{ + setupUi(this); + + connect(_start, SIGNAL(pressed()), this, SLOT(start())); +} + +AngularPosition::~AngularPosition() +{ + +} + +void AngularPosition::start() +{ + w.init(_user->text(), _repetitions->value(), _nbdirections->value(), _frequency->value(), _duration->value()); + w.show(); + hide(); +} \ No newline at end of file diff --git a/AngularPosition/AngularPosition.h b/AngularPosition/AngularPosition.h new file mode 100644 index 0000000..c7ae1f3 --- /dev/null +++ b/AngularPosition/AngularPosition.h @@ -0,0 +1,23 @@ +#ifndef ANGULARPOSITION_H +#define ANGULARPOSITION_H + +#include +#include "ui_AngularPosition.h" +#include "AnswerPosition.h" + +class AngularPosition : public QMainWindow, Ui::AngularPositionClass +{ + Q_OBJECT + + public: + AngularPosition(QWidget *parent = 0, Qt::WFlags flags = 0); + ~AngularPosition(); + + public slots: + void start(); + + private: + AnswerPosition w; +}; + +#endif // ANGULARPOSITION_H diff --git a/AngularPosition/AngularPosition.qrc b/AngularPosition/AngularPosition.qrc new file mode 100644 index 0000000..77401d4 --- /dev/null +++ b/AngularPosition/AngularPosition.qrc @@ -0,0 +1,4 @@ + + + + diff --git a/AngularPosition/AngularPosition.ui b/AngularPosition/AngularPosition.ui new file mode 100644 index 0000000..6836a69 --- /dev/null +++ b/AngularPosition/AngularPosition.ui @@ -0,0 +1,130 @@ + + + AngularPositionClass + + + + 0 + 0 + 209 + 173 + + + + AngularPosition + + + + + + + + + User + + + + + + + + + + Repetitions + + + + + + + 1 + + + 100 + + + 5 + + + + + + + Nb direction + + + + + + + 1 + + + 100 + + + 1 + + + + + + + Frequency + + + + + + + 1 + + + 500 + + + 50 + + + 300 + + + + + + + Duration + + + + + + + 10000 + + + 100 + + + 500 + + + + + + + + + Start + + + + + + + + + + + + diff --git a/AngularPosition/AngularPosition.vcxproj b/AngularPosition/AngularPosition.vcxproj new file mode 100644 index 0000000..918be85 --- /dev/null +++ b/AngularPosition/AngularPosition.vcxproj @@ -0,0 +1,175 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {002CBB10-B3C0-490E-BB15-02827293648A} + Qt4VSv1.0 + + + + Application + + + Application + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + + + AllRules.ruleset + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + + + + _USE_MATH_DEFINES;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories) + Disabled + ProgramDatabase + MultiThreadedDebugDLL + false + + + Windows + $(OutDir)\$(ProjectName).exe + $(QTDIR)\lib;%(AdditionalLibraryDirectories) + true + TactonPlayerd.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies) + + + + + _USE_MATH_DEFINES;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories) + + + MultiThreadedDLL + false + + + Windows + $(OutDir)\$(ProjectName).exe + $(QTDIR)\lib;%(AdditionalLibraryDirectories) + false + TactonPlayer.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies) + + + + + + + true + + + true + + + + + + + + + true + + + true + + + + + + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing AngularPosition.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing AngularPosition.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + + + + + Document + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + + + + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing AnswerPosition.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing AnswerPosition.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + + + + + + + Document + %(FullPath);%(AdditionalInputs) + Rcc%27ing %(Identity)... + .\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs) + "$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp + %(FullPath);%(AdditionalInputs) + Rcc%27ing %(Identity)... + .\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs) + "$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp + + + + + Document + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + + + + + + + + + + \ No newline at end of file diff --git a/AngularPosition/AngularPosition.vcxproj.filters b/AngularPosition/AngularPosition.vcxproj.filters new file mode 100644 index 0000000..ac6ec03 --- /dev/null +++ b/AngularPosition/AngularPosition.vcxproj.filters @@ -0,0 +1,88 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;cxx;c;def + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h + + + {99349809-55BA-4b9d-BF79-8FDBB0286EB3} + ui + + + {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} + qrc;* + false + + + {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} + moc;h;cpp + False + + + {5110b38d-56b8-45cc-841c-3475460ae78d} + cpp;moc + False + + + {f2f7d241-3950-4152-9f50-b5e9a2da41d4} + cpp;moc + False + + + + + Source Files + + + Source Files + + + Generated Files\Debug + + + Generated Files\Release + + + Generated Files + + + Source Files + + + Generated Files\Debug + + + Generated Files\Release + + + + + Header Files + + + Form Files + + + Resource Files + + + Form Files + + + Header Files + + + + + Generated Files + + + Generated Files + + + \ No newline at end of file diff --git a/AngularPosition/AnswerAngularPosition.ui b/AngularPosition/AnswerAngularPosition.ui new file mode 100644 index 0000000..1e1a80d --- /dev/null +++ b/AngularPosition/AnswerAngularPosition.ui @@ -0,0 +1,1198 @@ + + + AnswerPosition + + + + 0 + 0 + 800 + 296 + + + + MainWindow + + + + + 800 + 0 + + + + + + + QLayout::SetDefaultConstraint + + + 1 + + + + + + 20 + 20 + + + + + 2 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 15 + 16777215 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 63 + 63 + + + + + + + 127 + 0 + 0 + + + + + + + 170 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 63 + 63 + + + + + + + 127 + 0 + 0 + + + + + + + 170 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 127 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 63 + 63 + + + + + + + 127 + 0 + 0 + + + + + + + 170 + 0 + 0 + + + + + + + 127 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 127 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 63 + 63 + + + + + + + 127 + 0 + 0 + + + + + + + 170 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 63 + 63 + + + + + + + 127 + 0 + 0 + + + + + + + 170 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 127 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 127 + 127 + + + + + + + 255 + 63 + 63 + + + + + + + 127 + 0 + 0 + + + + + + + 170 + 0 + 0 + + + + + + + 127 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 127 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 0 + 0 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + + + + + + + + + + 0 + 100 + + + + + 20 + + + + OK + + + + + + + 0 + + + + + + + + + diff --git a/AngularPosition/AnswerPosition.cpp b/AngularPosition/AnswerPosition.cpp new file mode 100644 index 0000000..091592c --- /dev/null +++ b/AngularPosition/AnswerPosition.cpp @@ -0,0 +1,178 @@ +#include "AnswerPosition.h" + +#include +#include +#include +#include +#include + +AnswerPosition::AnswerPosition(QWidget *parent, Qt::WFlags flags) +:QMainWindow(parent, flags), _currentdirection(-1), _currenttrial(0) +{ + try + { + _player = new TactonPlayer("COM4"); + } + catch (...) + { + _player = NULL; + qDebug() << "No wristband found"; + } + + setupUi(this); + + _grid->setSpacing(0); + + _a0->setStyleSheet("background-color: red;"); + _a1->setStyleSheet("background-color: lightgrey;"); + _a2->setStyleSheet("background-color: green;"); + _a3->setStyleSheet("background-color: lightgrey;"); + _a4->setStyleSheet("background-color: red;"); + _a5->setStyleSheet("background-color: lightgrey;"); + _a6->setStyleSheet("background-color: green;"); + _a7->setStyleSheet("background-color: lightgrey;"); + _a8->setStyleSheet("background-color: red;"); + _a9->setStyleSheet("background-color: lightgrey;"); + _a10->setStyleSheet("background-color: green;"); + _a11->setStyleSheet("background-color: lightgrey;"); + _a12->setStyleSheet("background-color: red;"); + _a13->setStyleSheet("background-color: lightgrey;"); + _a14->setStyleSheet("background-color: green;"); + _a15->setStyleSheet("background-color: lightgrey;"); + + _group.addButton(_a0, 0); + _group.addButton(_a1, 1); + _group.addButton(_a2, 2); + _group.addButton(_a3, 3); + _group.addButton(_a4, 4); + _group.addButton(_a5, 5); + _group.addButton(_a6, 6); + _group.addButton(_a7, 7); + _group.addButton(_a8, 8); + _group.addButton(_a9, 9); + _group.addButton(_a10, 10); + _group.addButton(_a11, 11); + _group.addButton(_a12, 12); + _group.addButton(_a13, 13); + _group.addButton(_a14, 14); + _group.addButton(_a15, 15); + + _ok->setEnabled(false); + QObject::connect(_ok, SIGNAL(pressed()), this, SLOT(answer())); + QObject::connect(&_group, SIGNAL(buttonClicked(int)), this, SLOT(selectDirection(int))); +} + + +AnswerPosition::~AnswerPosition() +{ + if (_logfile) + fclose(_logfile); + + if (_player) + delete _player; +} + +void AnswerPosition::init(QString user, int repetitions, int nbdirections, int frequency, int duration) +{ + _duration = duration; + + //create log file + QString date = QDate::currentDate().toString("yyyy-MM-dd") + "-" + QTime::currentTime().toString("HH-mm-ss"); + QString logfilename = user + "-" + QString::number(repetitions) + "-" + QString::number(nbdirections) + "-" + date + ".csv"; + _logfile = fopen(logfilename.toStdString().c_str(), "w"); + qDebug() << "log: " << logfilename; + if (_logfile) + fprintf(_logfile, "Degrees,Direction,Answer,Error\n"); + + _player->setFrequency(frequency); + + //generate the block + // /!\ currently we only manage 1 direction + for (int i = 0 ; i < repetitions ; i++) + { + QList temp; + //generate the block + for (int j = 0 ; j < 16 ; j++) + temp.push_back(j); + //shuffle + for (int j = 0; j < temp.count(); j++) + temp.swap(j, (rand() % (temp.count() - j)) + j); + //add the block to the trial + _trials.append(temp); + } + _progress->setMaximum(_trials.size()); + + runTrial(); +} + +void AnswerPosition::selectDirection(int buttonId) +{ + _ok->setEnabled(true); + _currentdirection = buttonId; +} + +void AnswerPosition::runTrial() +{ + setAngle((_trials.at(_currenttrial) * 90) / 4); + QTimer::singleShot(_duration, this, SLOT(stop())); +} + +void AnswerPosition::answer() +{ + if (_logfile) + fprintf(_logfile, "%d,%d,%d\n", (_trials.at(_currenttrial) * 90) / 4, _trials.at(_currenttrial), _currentdirection, _trials.at(_currenttrial) == _currentdirection); + + QAbstractButton* checked = _group.checkedButton(); + if (checked) + { + _group.setExclusive(false); + checked->setChecked(false); + _group.setExclusive(true); + } + _ok->setEnabled(false); + + _currenttrial++; + _progress->setValue(_currenttrial); + + if (_currenttrial >= _trials.size()) + { + for (int i = 0 ; i < 16 ; i++) + _group.button(i)->setEnabled(false); + if (_logfile) + { + fclose(_logfile); + _logfile = NULL; + } + return; + } + + runTrial(); +} + + +void AnswerPosition::setAngle(int angle) +{ + unsigned char amplitudes[4]; + memset(amplitudes, 0, 4); + +// angle = 90; + + //vertical + if (angle < 180) + amplitudes[1] = 255 * sin(angle * M_PI / 180.0); + else + amplitudes[3] = - 255 * sin(angle * M_PI / 180.0); + + //horizontal + if (angle < 90 ||angle > 270) + amplitudes[0] = 255 * cos(angle * M_PI / 180.0); + else + amplitudes[2] = - 255 * cos(angle * M_PI / 180.0); + + _player->setAmplitudes(4, amplitudes); +} + +void AnswerPosition::stop() +{ + _player->stop(); +} \ No newline at end of file diff --git a/AngularPosition/AnswerPosition.h b/AngularPosition/AnswerPosition.h new file mode 100644 index 0000000..2d8e93f --- /dev/null +++ b/AngularPosition/AnswerPosition.h @@ -0,0 +1,43 @@ +#ifndef __ANSWERPOSITION__ +#define __ANSWERPOSITION__ + +#include +#include "ui_AnswerAngularPosition.h" +#include + +#include + +class AnswerPosition : public QMainWindow, public Ui::AnswerPosition +{ + Q_OBJECT + + public: + AnswerPosition(QWidget *parent = 0, Qt::WFlags flags = 0); + ~AnswerPosition(); + + void init(QString user, int repetitions, int nbdirections, int frequency, int duration); + + public slots: + void selectDirection(int buttonId); + void stop(); + void answer(); + + protected: + + void runTrial(); + void setAngle(int angle); + + int _duration; + + int _currentdirection; + QButtonGroup _group; + + FILE *_logfile; + + QList _trials; + int _currenttrial; + + TactonPlayer *_player; +}; + +#endif diff --git a/AngularPosition/main.cpp b/AngularPosition/main.cpp new file mode 100644 index 0000000..70a6b9a --- /dev/null +++ b/AngularPosition/main.cpp @@ -0,0 +1,10 @@ +#include "AngularPosition.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + AngularPosition w; + w.show(); + return a.exec(); +} diff --git a/DeltaTimeJND/AnswerDeltaTime.cpp b/DeltaTimeJND/AnswerDeltaTime.cpp new file mode 100644 index 0000000..f00afa5 --- /dev/null +++ b/DeltaTimeJND/AnswerDeltaTime.cpp @@ -0,0 +1,286 @@ +#include "AnswerDeltaTime.h" + +#include +#include + +#include +#include + +AnswerDeltaTime::AnswerDeltaTime(QWidget *parent) +: QMainWindow(parent), _logfile(NULL), _goodanswer(-1), _currentconfig(0) +{ + try + { + _tactonPlayer = new TactonPlayer("COM4"); + } + catch (...) + { + qDebug() << "No wristband found"; + } + + //init the window + setupUi(this); +// this->layout()->setSizeConstraint(QLayout::SetFixedSize); + + for (int i = 0 ; i < 4 ; i++) + { + _currenttest[i] = 1.0; + _jnd[i] = 0.0; + } + + //init buttons + QObject::connect(_first, SIGNAL(clicked()), this, SLOT(answer())); + QObject::connect(_second, SIGNAL(clicked()), this, SLOT(answer())); + QObject::connect(_third, SIGNAL(clicked()), this, SLOT(answer())); +} + +AnswerDeltaTime::~AnswerDeltaTime() +{ + if (_logfile) + fclose(_logfile); + if (_logfile2) + fclose(_logfile2); + //reset the wristband + delete _tactonPlayer; + + //delete _animation; +} + +void AnswerDeltaTime::init(QString user, int frequency, int timegap, int duration, double delta, int reversals) +{ + //two vibrators alone + _configurations[0][0] = 0; + _configurations[0][1] = 90; + //between the same vibrators + _configurations[1][0] = 30; + _configurations[1][1] = 60; + //using two different vibrators each + _configurations[2][0] = 45; + _configurations[2][1] = 225; + //using two vibrators each, with one in common + _configurations[3][0] = 45; + _configurations[3][1] = 315; + + _reversals = reversals; + _frequency = frequency; + _delta = delta; + + _animation = new QTimeLine(duration, this); + _animation->setFrameRange(0, duration/timegap); +// _animation->setUpdateInterval(timegap); + connect(_animation, SIGNAL(frameChanged(int)), this, SLOT(playTest(int))); + connect(_animation, SIGNAL(finished()), this, SLOT(stop())); + + //create log file + QString date = QDate::currentDate().toString("yyyy-MM-dd") + "-" + QTime::currentTime().toString("HH-mm-ss"); + QString logfilename = user + "-" + date + "-answers"; + if (_logfile = fopen(logfilename.toStdString().c_str(), "w")) + fprintf(_logfile, "Angle1,Angle2,Duration,Interval,GoodAnswer,UserAnswer,Error\n"); + logfilename = user + "-" + date + "-jnd"; + if (_logfile2 = fopen(logfilename.toStdString().c_str(), "w")) + fprintf(_logfile2, "A1,A2,JND\n"); + + for (int i = 0 ; i < 4 ; i++) + { + _currenttest[i] = 1.0; + _configfinished[i] = false; + } + + unsigned char amp[] = {0, 0, 0, 0}; + _tactonPlayer->setAmplitudes(4, amp); + _tactonPlayer->setFrequency(frequency); + + runTrial(); +} + +void AnswerDeltaTime::setAngle(int angle) +{ + unsigned char amplitudes[4]; + memset(amplitudes, 0, 4); + + //vertical + if (angle < 180) + amplitudes[1] = 255 * sin(angle * M_PI / 180.0); + else + amplitudes[3] = - 255 * sin(angle * M_PI / 180.0); + + //horizontal + if (angle < 90 || angle > 270) + amplitudes[0] = 255 * cos(angle * M_PI / 180.0); + else + amplitudes[2] = - 255 * cos(angle * M_PI / 180.0); + + _tactonPlayer->setAmplitudes(4, amplitudes); +} + +void AnswerDeltaTime::playTest(int frame) +{ + qDebug() << "f" << frame << "\n"; + setAngle(_configurations[_currentconfig][frame % 2]); +} + +void AnswerDeltaTime::playOther() +{ + unsigned char amplitudes[4] = {0, 0, 0, 0}; + + switch(_currentconfig) + { + case 0 : case 1: + amplitudes[0] = amplitudes[1] = 255; + break; + case 2: + amplitudes[0] = amplitudes[1] = amplitudes[2] = amplitudes[3] = 255; + break; + case 3: + amplitudes[0] = amplitudes[1] = amplitudes[3] = 255; + break; + } + + _tactonPlayer->setAmplitudes(4, amplitudes); + + QTimer::singleShot(_animation->duration(), this, SLOT(stop())); +} + +void AnswerDeltaTime::stop() +{ + unsigned char amp[] = {0, 0, 0, 0}; + _tactonPlayer->setAmplitudes(4, amp); +} + +void AnswerDeltaTime::answer() +{ + QPushButton *button = (QPushButton *)sender(); + int rep; + if (button->objectName() == "_first") + rep = 0; + else if (button->objectName() == "_second") + rep = 1; + else if (button->objectName() == "_third") + rep = 2; + + log(rep); + + static int rev[4] = {0, 0, 0, 0}; + + static bool newblock[4] = {true, true, true, true}; + static bool lastval[4]; + bool val = rep == _goodanswer; + + //reversal + if (!newblock[_currentconfig] && val != lastval[_currentconfig]) + { + rev[_currentconfig]++; + _jnd[_currentconfig] += _currenttest[_currentconfig] / _reversals; + + //if enough reversals the side is done + if (rev[_currentconfig] >= _reversals) + { + log2(); + _configfinished[_currentconfig] = true; + } + //new reversal, but side not finished + else + { + //good answer: reduce the gap + if (val) + { + _currenttest[_currentconfig] -= _delta; + if (_currenttest[_currentconfig] < 0.0) + _currenttest[_currentconfig] = 0.0; + } + //wrong answer: increase the gap + else + { + _currenttest[_currentconfig] += _delta; + if (_currenttest[_currentconfig] > 1.0) + _currenttest[_currentconfig] = 1.0; + } + } + } + //no reversal + else + { + newblock[_currentconfig] = false; + //good answer: reduce the gap + if (val) + { + _currenttest[_currentconfig] -= _delta; + if (_currenttest[_currentconfig] < 0.0) + _currenttest[_currentconfig] = 0.0; + } + //wrong answer: increase the gap + else + { + _currenttest[_currentconfig] += _delta; + if (_currenttest[_currentconfig] > 1.0) + _currenttest[_currentconfig] = 1.0; + } + } + lastval[_currentconfig] = val; + + bool finished = true; + //search for the next side + for (int i = 0 ; i < 4 ; i++) + { + _currentconfig = (_currentconfig + 1) % 4; + if (!_configfinished[_currentconfig]) + { + finished = false; + break; + } + } + + if (finished) + { + _first->setEnabled(false); + _second->setEnabled(false); + _third->setEnabled(false); + _label->setText("Finished!"); + return; + } + + runTrial(); +} + +void AnswerDeltaTime::log(int answer) const +{ + if (_logfile == NULL) + return; + fprintf(_logfile, "%d,%d,%0.2f,%d,%d,%d,%d\n", + _configurations[_currentconfig][0], _configurations[_currentconfig][1], _animation->duration(), _currenttest[_currentconfig], _goodanswer, answer, _goodanswer == answer); +} + +void AnswerDeltaTime::log2() const +{ + if (_logfile2 == NULL) + return; + fprintf(_logfile2, "%d,%d,%0.2f\n", _configurations[_currentconfig][0], _configurations[_currentconfig][1], _jnd[_currentconfig]); +} + +void AnswerDeltaTime::runTrial() +{ + _goodanswer = rand() % 3; + + qDebug() << "good: " << _goodanswer << "\n"; + _animation->setFrameRange(0, _animation->duration()/_currenttest[_currentconfig]); + + + switch(_goodanswer) + { + case 0: + QTimer::singleShot(500, _animation, SLOT(start())); + QTimer::singleShot(1500 + _animation->duration(), this, SLOT(playOther())); + QTimer::singleShot(2500 + 2 * _animation->duration(), this, SLOT(playOther())); + break; + case 1: + QTimer::singleShot(500, this, SLOT(playOther())); + QTimer::singleShot(1500 + _animation->duration(), _animation, SLOT(start())); + QTimer::singleShot(2500 + 2 * _animation->duration(), this, SLOT(playOther())); + break; + case 2: + QTimer::singleShot(500, this, SLOT(playOther())); + QTimer::singleShot(1500 + _animation->duration(), this, SLOT(playOther())); + QTimer::singleShot(2500 + 2 * _animation->duration(), _animation, SLOT(start())); + break; + } +} diff --git a/DeltaTimeJND/AnswerDeltaTime.h b/DeltaTimeJND/AnswerDeltaTime.h new file mode 100644 index 0000000..5bf220b --- /dev/null +++ b/DeltaTimeJND/AnswerDeltaTime.h @@ -0,0 +1,64 @@ +#ifndef ANSWERDELTATIME_H +#define ANSWERDELTATIME_H + +#include +#include +#include "ui_AnswerDeltaTime.h" + +#include + +class AnswerDeltaTime : public QMainWindow, Ui::AnswerWindow +{ + Q_OBJECT + + public: + AnswerDeltaTime(QWidget *parent); + ~AnswerDeltaTime(); + + void init(QString user, int frequency, int timegap, int duration, double delta, int reversals); + + private: + //log the answers + void log(int answer) const; + //log the JND values + void log2() const; + + void runTrial(); + void setAngle(int angle); + + FILE *_logfile, *_logfile2; + TactonPlayer *_tactonPlayer; + + //parameters + int _configurations[4][2]; //4 configurations of 2 angles + int _frequency; + int _reversals; + double _delta; + + //exp status + int _goodanswer; + //current value for each configuration + int _currenttest[4]; + //which configs are finished? + bool _configfinished[4]; + //id of the config currently being tested + int _currentconfig; + + //results + double _jnd[4]; + + //manage alternation between 2 vibrations + QTimeLine *_animation; + + private slots: + //play 2 vibrations + void playTest(int frame); + //play 1 vibration + void playOther(); + //stop vibrations + void stop(); + //click on answer button + void answer(); +}; + +#endif // ANSWERDELTATIME_H diff --git a/DeltaTimeJND/AnswerDeltaTime.ui b/DeltaTimeJND/AnswerDeltaTime.ui new file mode 100644 index 0000000..056831b --- /dev/null +++ b/DeltaTimeJND/AnswerDeltaTime.ui @@ -0,0 +1,96 @@ + + + AnswerWindow + + + + 0 + 0 + 505 + 159 + + + + Experiment + + + + + + + + 20 + + + + Quelle vibration est la plus forte ? + + + Qt::AlignCenter + + + + + + + + + + 0 + 100 + + + + + 20 + + + + Première + + + + + + + + 0 + 100 + + + + + 20 + + + + Deuxième + + + + + + + + 0 + 100 + + + + + 20 + + + + Troisième + + + + + + + + + + + diff --git a/DeltaTimeJND/DeltaTimeJND.cpp b/DeltaTimeJND/DeltaTimeJND.cpp index 703e619..01a099e 100644 --- a/DeltaTimeJND/DeltaTimeJND.cpp +++ b/DeltaTimeJND/DeltaTimeJND.cpp @@ -1,12 +1,21 @@ #include "DeltaTimeJND.h" DeltaTimeJND::DeltaTimeJND(QWidget *parent, Qt::WFlags flags) - : QMainWindow(parent, flags) +: QMainWindow(parent, flags), w(this) { - ui.setupUi(this); + setupUi(this); + + connect(_start, SIGNAL(pressed()), SLOT(startExperiment())); } DeltaTimeJND::~DeltaTimeJND() { } + +void DeltaTimeJND::startExperiment() +{ + w.init(_user->text(), _frequency->value(), _starttimegap->value(), _duration->value(), _delta->value(), _reversals->value()); + w.show(); + this->hide(); +} diff --git a/DeltaTimeJND/DeltaTimeJND.h b/DeltaTimeJND/DeltaTimeJND.h index 9ca7248..6ec8e73 100644 --- a/DeltaTimeJND/DeltaTimeJND.h +++ b/DeltaTimeJND/DeltaTimeJND.h @@ -4,16 +4,21 @@ #include #include "ui_deltatimejnd.h" -class DeltaTimeJND : public QMainWindow +#include "AnswerDeltaTime.h" + +class DeltaTimeJND : public QMainWindow, Ui::DeltaTimeJNDClass { Q_OBJECT -public: - DeltaTimeJND(QWidget *parent = 0, Qt::WFlags flags = 0); - ~DeltaTimeJND(); + public: + DeltaTimeJND(QWidget *parent = 0, Qt::WFlags flags = 0); + ~DeltaTimeJND(); + + private: + AnswerDeltaTime w; -private: - Ui::DeltaTimeJNDClass ui; + private slots: + void startExperiment(); }; #endif // DELTATIMEJND_H diff --git a/DeltaTimeJND/DeltaTimeJND.vcxproj b/DeltaTimeJND/DeltaTimeJND.vcxproj index 4830aeb..fc2dc66 100644 --- a/DeltaTimeJND/DeltaTimeJND.vcxproj +++ b/DeltaTimeJND/DeltaTimeJND.vcxproj @@ -12,7 +12,7 @@ {2AEA0C75-E45A-4992-9DB3-20CA8169F47F} - Qt4VS + Qt4VSv1.0 @@ -39,12 +39,137 @@ AllRules.ruleset + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ - + + + _USE_MATH_DEFINES;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories) + Disabled + ProgramDatabase + MultiThreadedDebugDLL + false + + + Windows + $(OutDir)\$(ProjectName).exe + $(QTDIR)\lib;%(AdditionalLibraryDirectories) + true + TactonPlayerd.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies) + + + + _USE_MATH_DEFINES;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories) + + + MultiThreadedDLL + false + + + Windows + $(OutDir)\$(ProjectName).exe + $(QTDIR)\lib;%(AdditionalLibraryDirectories) + false + TactonPlayer.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies) + + + + + + + true + + + true + + + + + + + + + true + + + true + + + + + + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing DeltaTimeJND.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing DeltaTimeJND.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + + + + + Document + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + + + + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing AnswerDeltaTime.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + $(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing AnswerDeltaTime.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_USE_MATH_DEFINES -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" + + + + + + + Document + %(FullPath);%(AdditionalInputs) + Rcc%27ing %(Identity)... + .\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs) + "$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp + %(FullPath);%(AdditionalInputs) + Rcc%27ing %(Identity)... + .\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs) + "$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp + + + + Document + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + $(QTDIR)\bin\uic.exe;%(AdditionalInputs) + Uic%27ing %(Identity)... + .\GeneratedFiles\ui_%(Filename).h;%(Outputs) + "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + + + + + \ No newline at end of file diff --git a/DeltaTimeJND/deltatimejnd.ui b/DeltaTimeJND/deltatimejnd.ui index 4cfb199..b6f909a 100644 --- a/DeltaTimeJND/deltatimejnd.ui +++ b/DeltaTimeJND/deltatimejnd.ui @@ -1,29 +1,150 @@ - + + DeltaTimeJNDClass - - - DeltaTimeJNDClass - - + + - 0 - 0 - 600 - 400 + 0 + 0 + 235 + 199 - + DeltaTimeJND - - - - + + + + + + + + User + + + + + + + + + + Frequency + + + + + + + 1 + + + 500 + + + 50 + + + 300 + + + + + + + Start time gap + + + + + + + 10000 + + + 100 + + + 200 + + + + + + + Delta + + + + + + + 1.000000000000000 + + + 0.010000000000000 + + + 0.100000000000000 + + + + + + + Reversals + + + + + + + 1 + + + 100 + + + 10 + + + + + + + Duration + + + + + + + 5000 + + + 100 + + + 1000 + + + + + + + + + Start + + + + + - - + - + - + diff --git a/LocationsJND/AnswerLocationJND.cpp b/LocationsJND/AnswerLocationJND.cpp index 1d46c18..8143289 100644 --- a/LocationsJND/AnswerLocationJND.cpp +++ b/LocationsJND/AnswerLocationJND.cpp @@ -7,8 +7,7 @@ #include AnswerLocationJND::AnswerLocationJND(QWidget *parent, Qt::WFlags flags) -:QMainWindow(parent, flags), -_logfile(NULL), _tactonPlayer("COM4"), _goodanswer(-1) +:QMainWindow(parent, flags), _logfile(NULL), _tactonPlayer("COM4"), _goodanswer(-1) { //init the window setupUi(this); @@ -29,6 +28,8 @@ AnswerLocationJND::~AnswerLocationJND() { if (_logfile) fclose(_logfile); + if (_logfile2) + fclose(_logfile2); //reset the wristband _tactonPlayer.stop(); } @@ -227,4 +228,4 @@ void AnswerLocationJND::runTrial() unsigned int AnswerLocationJND::testValue(unsigned int value, double db) const { return static_cast(value / pow(10.0, db / 20.0)); -} \ No newline at end of file +} diff --git a/LocationsJND/locationsjnd.ui b/LocationsJND/locationsjnd.ui index 560b550..4bc7b03 100644 --- a/LocationsJND/locationsjnd.ui +++ b/LocationsJND/locationsjnd.ui @@ -120,7 +120,7 @@ 0.010000000000000 - 0.050000000000000 + 0.020000000000000 diff --git a/Tactons Detection/Tactons Detection.vcxproj b/Tactons Detection/Tactons Detection.vcxproj index fb7a808..f206d4a 100644 --- a/Tactons Detection/Tactons Detection.vcxproj +++ b/Tactons Detection/Tactons Detection.vcxproj @@ -44,7 +44,7 @@ - UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;QT_DLL;%(PreprocessorDefinitions) .\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -61,7 +61,7 @@ - UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_DLL;%(PreprocessorDefinitions) .\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories) @@ -104,11 +104,11 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonsdetection.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonsdetection.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." @@ -129,11 +129,11 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." @@ -169,7 +169,7 @@ - + \ No newline at end of file diff --git a/Tactons Experiment.sdf b/Tactons Experiment.sdf index 1bd03a9..3dc0c7d 100644 Binary files a/Tactons Experiment.sdf and b/Tactons Experiment.sdf differ diff --git a/Tactons Experiment.sln b/Tactons Experiment.sln index ce529ed..728a917 100644 --- a/Tactons Experiment.sln +++ b/Tactons Experiment.sln @@ -11,6 +11,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactons Detection", "Tacton EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocationsJND", "LocationsJND\LocationsJND.vcxproj", "{9B8D15C2-0F04-4BCE-A3A4-211FCAB1C503}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DeltaTimeJND", "DeltaTimeJND\DeltaTimeJND.vcxproj", "{2AEA0C75-E45A-4992-9DB3-20CA8169F47F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AngularPosition", "AngularPosition\AngularPosition.vcxproj", "{002CBB10-B3C0-490E-BB15-02827293648A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -37,6 +41,14 @@ Global {9B8D15C2-0F04-4BCE-A3A4-211FCAB1C503}.Debug|Win32.Build.0 = Debug|Win32 {9B8D15C2-0F04-4BCE-A3A4-211FCAB1C503}.Release|Win32.ActiveCfg = Release|Win32 {9B8D15C2-0F04-4BCE-A3A4-211FCAB1C503}.Release|Win32.Build.0 = Release|Win32 + {2AEA0C75-E45A-4992-9DB3-20CA8169F47F}.Debug|Win32.ActiveCfg = Debug|Win32 + {2AEA0C75-E45A-4992-9DB3-20CA8169F47F}.Debug|Win32.Build.0 = Debug|Win32 + {2AEA0C75-E45A-4992-9DB3-20CA8169F47F}.Release|Win32.ActiveCfg = Release|Win32 + {2AEA0C75-E45A-4992-9DB3-20CA8169F47F}.Release|Win32.Build.0 = Release|Win32 + {002CBB10-B3C0-490E-BB15-02827293648A}.Debug|Win32.ActiveCfg = Debug|Win32 + {002CBB10-B3C0-490E-BB15-02827293648A}.Debug|Win32.Build.0 = Debug|Win32 + {002CBB10-B3C0-490E-BB15-02827293648A}.Release|Win32.ActiveCfg = Release|Win32 + {002CBB10-B3C0-490E-BB15-02827293648A}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tactons Experiment.suo b/Tactons Experiment.suo index 4086475..25b1c94 100644 Binary files a/Tactons Experiment.suo and b/Tactons Experiment.suo differ diff --git a/Tactons Experiment/Tactons Experiment.vcxproj b/Tactons Experiment/Tactons Experiment.vcxproj index e26b635..ccde704 100644 --- a/Tactons Experiment/Tactons Experiment.vcxproj +++ b/Tactons Experiment/Tactons Experiment.vcxproj @@ -48,7 +48,7 @@ - UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;QT_DLL;%(PreprocessorDefinitions) .\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -65,7 +65,7 @@ - UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_DLL;%(PreprocessorDefinitions) .\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories) @@ -102,11 +102,11 @@ $(QTDIR)\bin\moc.exe;%(FullPath);%(AdditionalInputs) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." $(QTDIR)\bin\moc.exe;%(FullPath);%(AdditionalInputs) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." @@ -153,11 +153,11 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." @@ -166,7 +166,7 @@ - + \ No newline at end of file diff --git a/Tactons patterns/Tactons patterns.vcxproj b/Tactons patterns/Tactons patterns.vcxproj index f379766..a1a0709 100644 --- a/Tactons patterns/Tactons patterns.vcxproj +++ b/Tactons patterns/Tactons patterns.vcxproj @@ -44,7 +44,7 @@ - UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;QT_DLL;%(PreprocessorDefinitions) .\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -61,7 +61,7 @@ - UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_DLL;%(PreprocessorDefinitions) .\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories) @@ -104,11 +104,11 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonspatterns.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonspatterns.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." @@ -129,11 +129,11 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_DLL "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." @@ -169,7 +169,7 @@ - + \ No newline at end of file