Epochandler - xenobyte/INF-PRO-FHL GitHub Wiki
Epoc Wrapper
##Motivation
- Wrapper um objektorientiert arbeiten zu können, da das mitgelieferte SDK in C und dementsprechend nicht objektorientiert geschrieben
- Defizite der schlecht dokumentierten API aufheben Funktionen
- Abfragen von: ** Konzentration ** Meditation ** Frustration ** Aufregung ** Einzelwerte der 14 Elektroden ** Gyroskop Werte ** Timestamp ** Counter
Mögliche Weiterentwicklung
- expressive Fähigkeiten
- kognitive Fähigkeiten
- Profiler mit Lernen/Trainieren
- automatisches Update und Benachrichtigung (Observer)
- integrierter Server
##Aufbau
...
##Einrichtung
Bevor der EpocHandler benutzt werden kann ist wichtig dass
- Im Verzeichnis src/EpocHandler/Debug/ Die Dateien edk.dll und src/EpocHandler/Debug/edk_utils.dll vorhanden sind.
- Im src/EpocHandler/EpocHandler/lib/ Verzeichnis die Dateien edk.lib, edk_utils.lib, glut32.lib vorhanden sind.
- Im Verzeichnis src/EpocHandler/EpocHandler/include Verzeichnis die Dateien edk.h, edkErrorCode.h, EmoStateDLL.h vorhanden sind.
- In Visual Studio muss das Includeverzeichnis src/EpocHandler/EpocHandler/include für das Projekt eingestelt werden. Das geht über Rechtsklick auf das Project, dort Eigenschaften anklicken und dann KonfigurationsEigenschaften/VC++-Verzeichnisse/Includeverzeichnisse
##Verwendung
Siehe auch: DoxyGen Dokumentation in src/EpocHandler/man/index.html
Daten aktualisieren
int EpocHandler::updateData()
Rückgabewert: int : Anzahl der gesammelten Datensätze
Da es passieren kann das das 0 Daten gesammelt wurden, muss dies überprüft werden und eventuell erneut ausgeführt werden.
Wenn 0 Datensätze gesammelt wurden bleiben alte Daten gespeichert.
Daten abfragen
Enum EE_DataChannel_t: ED_COUNTER, ED_GYROX, ED_GYROY, ED_TIMESTAMP, ED_FUNC_ID, ED_FUNC_VALUE, ED_MARKER, ED_SYNC_SIGNAL, ED_AF3, ED_F7, ED_F3, ED_FC5, ED_T7, ED_P7, ED_O1, ED_O2, ED_P8, ED_T8, ED_FC6, ED_F4, ED_F8, ED_AF4
Je Key wird ein double Array mit der Größe der gesammelten Daten aus updateData() zurückgegeben.
Daten eines einzelnen Channels
double* EpocHandler::getChannelData(EE_DataChannel_t channel)
Rückgabewert: double Array der Größe von updateData
Affektive Daten
double EpocHandler::getEngagement()
Rückgabewert: double Wert der Konzentration innerhalb des update Zeitraums
double EpocHandler::getFrustration()
Rückgabewert: double Wert der Frustration innerhalb des update Zeitraums
double EpocHandler::getMeditation()
Rückgabewert: double Wert der Meditation innerhalb des update Zeitraums
double EpocHandler::getExcitment()
Rückgabewert: double Wert der Aufregung innerhalb des update Zeitraums einzeln per DataChannel Frustration, etc immer einzeln
Beispiel:
EpocHandler a;
int sampleCount = 0;
while (!(sampleCount = a.updateData()))
{
Sleep(100);
std::cout << "Fetching Data again" << std::endl;
}
double* gyrox = a.getChannelData(EE_DataChannel_t::ED_COUNTER);
double b = gyrox[0];
std::cout << a.getFrustration() << std::endl;
std::cout << a.getEngagement() << std::endl << a.getExcitment() << std::endl << a.getMeditation() << std::endl;
Was ist aufgefallen?
connect()
stellt nicht sicher das eine Verbindung besteht
add()
user benötigt zeit, funktioniert nicht wenn man es nur einmal macht