anyKode Marilou
|
QueryRobotPHX2 recherche un PHX à partir du PHX courant et retourne un objet d'un type défini par l'utilisateur.
template <class ROBOTPHXOBJECT> ROBOTPHXOBJECT * QueryRobotPHX2(const xkode::lib::String& Name);
Parameters |
Description |
const xkode::lib::String& Name |
[in] Nom relatif du PHX à rechercher. |
Un pointeur sur un objet du type défini par l'utilisateur si le PHX a été trouvé, NULL sinon.
La recherche est recursive. Le nom du PHX recherché est relatif au PHX courant et peut traverser plusieurs PHX.
Par exemple:
Le PHX Robot 1 (/robot1) contient un PHX bras manipulateur (/robot1/arm1) qui contient un PHX pince (/robot1/arm1/gripper1):
La recherche du gripper pourra se faire de différentes manières suivant le point de départ:
Point de départ |
Recherche |
ModaCPP::RobotPHX *pRobot=connection->QueryRobotPHX("/robot1"); |
pRobot->QueryRobotPHX("arm1/gripper1") |
ModaCPP::RobotPHX *pArm=pRobot->QueryRobotPHX("/robot1/arm1"); |
pArm->QueryRobotPHX("gripper1") |
Contrairement à QueryRobotPHX, cette surcharge permet de spécifier une classe utilisateur. Celle-ci doit impérativement hériter de RobotPHX.
#include "Modacpp.h" #define MODASERVER "localhost" #define MYROBOTNAME "/myrobot" //*********************************************************** //user custom class, inherits from RobotPHX class MyRobot:public ModaCPP::RobotPHX { private: public: MyRobot(xkode::lib::String Name):RobotPHX(Name) { //The object is not yet created and connected to the system //Do not use QueryDevicexxxx functions ! } virtual ~MyRobot() { } virtual void OnStartup(void) override { //OnStartup is called automatically if robot was found //from a QueryRobotPHX function. //You can here call the QueryDevicexxxx functions } bool MoveMyRobot(float speed) { //create your own robot's functions return(true); } }; //*********************************************************** int main(int argc, char* argv[]) { xkode::lib::String ModaServer="127.0.0.1"; ModaCPP::Connection *pConnection=new ModaCPP::Connection(true); if(pConnection->Connect(ModaServer)) { ModaCPP::RobotPHX *pWorld=pConnection->QueryRobotPHX("/"); MyRobot *pMyRobot=pWorld->QueryRobotPHX2<MyRobot>("myrobot"); //Equivalent to: //MyRobot *pMyRobot=pConnection->QueryRobotPHX2<MyRobot>("/myrobot"); if(pRobot!=NULL) { //The robot is created and all devices are valid //You can use devices and make your robotics loop here delete pRobot; } delete pConnection; } _getch(); return 0; }
Documentation v4.7 (18/01/2015), Copyright (c) 2015 anyKode. All rights reserved.
|
What do you think about this topic? Send feedback!
|