Stap 4: Stap 4: gebaar controle armband.
Transmissie-gegevensfunctie aan de Myo
In dit project gebruikten we een macbook met het werkende systeem van OSX El Capitan de gegevens te verzenden naar de Intel Edison via UDP-berichten. Hiervoor, we gedownload de SDK Myo in https://developer.thalmic.com/downloadshttps://developer.thalmic.com/downloads en compileer het Hallo-
Myo.xcodeproj -project in thesamples map van de SDK.
In dit voorbeeld wijzigen we het codebestand voor Hallo-myo.cpp in de afdrukken () functie van de DataCollectorclass. In deze rol hebben we toegang tot de naam van het geactiveerde gebaar op dat moment in Myo. Met deze gegevens in de hand wij opgemaakt van de UDP-berichten en via het netwerk verzonden.
Het bestand toevoegen de volgende code begint met de verklaring van variabelen en opneming van bibliotheken:
#include <arpa/inet.h>#include <sys/socket.h>#include <unistd.h>// here goes the ip address of the Intel Ediso #define SERVER "192.168.1.101" #define BUFLEN 1024 /// here goes the port that are you using #define PORT 21567</p><p>void die(char *s) { perror(s); exit(1); } struct sockaddr_in si_other; int s, i, slen=sizeof(si_other); char buf[BUFLEN]; char message[BUFLEN];
Daarna voegen we de code om te ontdekken het gebaar gedetecteerd, formaat en stuur het bericht naar de Python-code die wordt uitgevoerd in de Intel Edison.
if(poseString == "fist") { std::string action = "STOP_MOVE"; std::cout << action << "; " << lastCommand; lastCommand = action; if (sendto(s, action.c_str(), strlen(action.c_str()) , 0 , (struct sockaddr *) &si_other, slen)==-1) { die("sendto()"); } } else if(poseString == "fingersSpread") { std::string action = "MOVE_FORWARD"; std::cout << action << "; " << lastCommand; lastCommand = action;</p><p> if (sendto(s, action.c_str(), strlen(action.c_str()) , 0 , (struct sockaddr *) &si_other, slen)==-1) { die("sendto()"); } } // there is more code in the .cpp file</p>
Vervang gewoon de code in de functie print() door de code in MyoSdkSenderFunction.cpp bestand.