Difference between revisions of "Rock Paper Scissors"
Alexalspach (Talk | contribs) (→Message ID) |
Alexalspach (Talk | contribs) (→Data) |
||
Line 18: | Line 18: | ||
====Data==== | ====Data==== | ||
− | Integer: | + | Integer: 1, 10, 11 or 12 (4 bytes) |
====Data==== | ====Data==== |
Revision as of 12:05, 20 November 2012
Contents |
Rock, Paper, Scissors Commander for KIST
There are two EXEs to command the Home, Rock, Paper and Scissors positions for the Allegro Hand via TCP/IP connection to the AHAS controller
This controller is KIST specific.
To execute these motions, the following integer TCP/IP messages are sent:
0: Ready
1: Rock
2: Paper
3. Scissors
Port
6150
Message ID
1 (2 bytes)
Data
Integer: 1, 10, 11 or 12 (4 bytes)
Data
(1 byte)
Sampling Time
1000Hz, 1000us
Keyboard Input
tcpip_sendMessage.cpp
// kaiTest.cpp : Defines the entry point for the console application. // //#include "stdafx.h" #ifdef WIN32 #include "kai/kai.h" #else #include "kai/kai.h" #endif #include <stdio.h> #ifdef WIN32 #include <conio.h> #endif #include <string> #include <iostream> using namespace std; #include <queue> bool bTCP = true; unsigned int hExtension = -1; // rProtocol #ifdef WIN32 //#include "../../../RoboticsLab/RoboticsLab/dev/include/rProtocol/rProtocol.h" #else //#include "../../../RoboticsLab/include/rProtocol/rProtocol.h" #endif /* notice //////////////////////////////////// 1. Set include path : In the place that there is a Kai header file. ex) #include "kai.h" 2. Create a Class instance ex) mySocket sock; 3. Define kaiMsg ex) kaiMsg msg; start! //////////////////////////////////// */ class mySocket : public kaiSocket { public: mySocket(){} ~mySocket(){} protected: virtual void onMessage(kaiMsg& msg) { printf("msg id:%d, msg size:%d\n", msg.id(), msg.size()); } virtual void onSend(int len) { printf("send message: %d\n", len); } }; int main(int argc, char* argv[]) { bool bRun = true; mySocket sock; kaiMsgID id = 0; kaiMsg msg; msg.allocateMemory(); int cmd = -1; //if(argc!=2) //{ // printf("ERROR: You must input just one integer argument\n0: Ready\n1: Rock\n2: Paper\n3: Scissors\n\n"); // _getch(); // return 0; //} ////parse input //std::string s = argv[1]; //sscanf(s.c_str(), "%i", &cmd); //i is 10 after this //printf("%i",cmd); kaiInitialize(); if(bTCP) sock.create(true, kaiON_MESSAGE|kaiON_SEND); else sock.create(false, kaiON_MESSAGE|kaiON_SEND); if (kaiSUCCESS == sock.connect("127.0.0.1", 6150))//sock.connect("192.168.1.98", 5150); { sock.setBlockingMode(kaiNON_BLOCKING_SOCKET); } else { printf("[ERROR] failed to connect to the server application.\n"); bRun = false; } while (bRun) { if(bTCP && sock.isValid()) { if (kaiFAIL == sock.recv()) { printf("[ERROR] connection was closed.\n"); break; } } { int cmd = -1; if (_kbhit()) cmd = _getch(); switch (cmd) { case '0': { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 1; // msg << is send stream msg << motion;//argv[1]; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Ready\n"<<std::endl; } break; case '1': { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 10; // msg << is send stream msg << motion; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Rock\n"<<std::endl; } break; case '2': { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 11; // msg << is send stream msg << motion;//argv[1]; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Paper\n"<<std::endl; } break; case '3': { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 12; // msg << is send stream msg << motion;//argv[1]; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Scissor\n"<<std::endl; } break; case 'q': sock.close(); bRun = false; break; //default: } } } printf("Press Enter to quit.\n"); getchar(); return 0; }
Command Argument
File:Tcpip sendMessage wArg.zip
tcpip_sendMessage.cpp
// kaiTest.cpp : Defines the entry point for the console application. // //#include "stdafx.h" #ifdef WIN32 #include "kai/kai.h" #else #include "kai/kai.h" #endif #include <stdio.h> #ifdef WIN32 #include <conio.h> #endif #include <string> #include <iostream> using namespace std; #include <queue> bool bTCP = true; unsigned int hExtension = -1; // rProtocol #ifdef WIN32 //#include "../../../RoboticsLab/RoboticsLab/dev/include/rProtocol/rProtocol.h" #else //#include "../../../RoboticsLab/include/rProtocol/rProtocol.h" #endif /* notice //////////////////////////////////// 1. Set include path : In the place that there is a Kai header file. ex) #include "kai.h" 2. Create a Class instance ex) mySocket sock; 3. Define kaiMsg ex) kaiMsg msg; start! //////////////////////////////////// */ class mySocket : public kaiSocket { public: mySocket(){} ~mySocket(){} protected: virtual void onMessage(kaiMsg& msg) { printf("msg id:%d, msg size:%d\n", msg.id(), msg.size()); } virtual void onSend(int len) { printf("send message: %d\n", len); } }; int main(int argc, char* argv[]) { bool bRun = true; mySocket sock; kaiMsgID id = 0; kaiMsg msg; msg.allocateMemory(); int cmd = -1; if(argc!=2) { printf("ERROR: You must input just one integer argument\n0: Ready\n1: Rock\n2: Paper\n3: Scissors\n\n"); _getch(); return 0; } //parse input std::string s = argv[1]; sscanf(s.c_str(), "%i", &cmd); //i is 10 after this printf("%i",cmd); kaiInitialize(); if(bTCP) sock.create(true, kaiON_MESSAGE|kaiON_SEND); else sock.create(false, kaiON_MESSAGE|kaiON_SEND); if (kaiSUCCESS == sock.connect("127.0.0.1", 6150))//sock.connect("192.168.1.98", 5150); { sock.setBlockingMode(kaiNON_BLOCKING_SOCKET); } else { printf("[ERROR] failed to connect to the server application.\n"); bRun = false; } //while (bRun) //{ //if(bTCP && sock.isValid()) //{ // if (kaiFAIL == sock.recv()) // { // printf("[ERROR] connection was closed.\n"); // getchar(); // return 0; // } //} { //int cmd = -1; //if (_kbhit()) // cmd = _getch(); switch (cmd) { case 0: { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 1; // msg << is send stream msg << motion;//argv[1]; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Ready\n"<<std::endl; } break; case 1: { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 10; // msg << is send stream msg << motion; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Rock\n"<<std::endl; } break; case 2: { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 11; // msg << is send stream msg << motion;//argv[1]; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Paper\n"<<std::endl; } break; case 3: { kaiMsg msg; // define kaiMsg msg.allocateMemory(); msg.reset(); msg.begin(); //int armID; //armID = 1; int motion = 12; // msg << is send stream msg << motion;//argv[1]; cout << "\n" << motion; msg.id(1); // set the msg's id (message packet ID) msg.end(); // end message sock.send(msg); // Instance send msg std::cout<<"Scissor\n"<<std::endl; } break; case 'q': sock.close(); bRun = false; break; //default: } } //} printf("Press Enter to quit.\n"); //getchar(); return 0; }
RPS Controller
File:Control ERHand RPS KIST.zip
Debug
File:Tcpip sendMessage wArg debug.zip
File:Tcpip sendMessage debug.zip
Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |