자체 ALMemory 이벤트 만들기
15462 단어 C++NAOqiChoregraphePepper
소개
각 도구의 버전
도구
버전
C++ SDK
naoqi-sdk-2.0.5.3
파이썬 SDK
pynaoqi-python2.7-2.0.5.3
Choregraphe
2.1.2.17
자체 ALMemory 이벤트 만들기
모듈 만들기
$ qisrc create HelloEventModule
코드 수정
helloevent.h
helloevent.h
#ifndef HELLO_EVENT_H
#define HELLO_EVENT_H
#define BOOST_SIGNALS_NO_DEPRECATION_WARNING
#include <boost/shared_ptr.hpp>
#include <alcommon/almodule.h>
#include <alproxies/almemoryproxy.h>
namespace AL
{
class ALBroker;
}
class HelloEvent : public AL::ALModule
{
public:
HelloEvent(boost::shared_ptr<AL::ALBroker> broker, const std::string& name);
virtual ~HelloEvent();
virtual void init();
void callback(const std::string &key, const AL::ALValue &value, const AL::ALValue &msg);
private:
AL::ALMemoryProxy fMemoryProxy;
};
#endif // HELLO_EVENT_H
helloevent.cpp
helloevent.cpp
#include "helloevent.h"
#include <alvalue/alvalue.h>
#include <alcommon/alproxy.h>
#include <alcommon/albroker.h>
#include <qi/log.hpp>
HelloEvent::HelloEvent(boost::shared_ptr<AL::ALBroker> broker, const std::string& name):
AL::ALModule(broker, name), fMemoryProxy(getParentBroker())
{
setModuleDescription("");
functionName("callback", getName(), "callback");
BIND_METHOD(HelloEvent::callback);
}
HelloEvent::~HelloEvent()
{
fMemoryProxy.unsubscribeToEvent("HelloEvent", "HelloEvent");
fMemoryProxy.unsubscribeToMicroEvent("HelloMicroEvent", "HelloEvent");
}
void HelloEvent::init()
{
fMemoryProxy.subscribeToEvent("HelloEvent", "HelloEventModule", "callback");
fMemoryProxy.subscribeToMicroEvent("HelloMicroEvent", "HelloEventModule", "subscribe message", "callback");
}
void HelloEvent::callback(const std::string &key, const AL::ALValue &value, const AL::ALValue &msg)
{
qiLogInfo("HelloEvent") << "Callback:" << key << std::endl;
qiLogInfo("HelloEvent") << "Value :" << value << std::endl;
qiLogInfo("HelloEvent") << "Msg :" << msg << std::endl;
}
main.cpp
main.cpp
#include "helloevent.h"
#include <boost/shared_ptr.hpp>
#include <alcommon/albroker.h>
#include <alcommon/almodule.h>
#include <alcommon/albrokermanager.h>
extern "C"
{
int _createModule(boost::shared_ptr<AL::ALBroker> pBroker)
{
AL::ALBrokerManager::setInstance(pBroker->fBrokerManager.lock());
AL::ALBrokerManager::getInstance()->addBroker(pBroker);
AL::ALModule::createModule<HelloEvent>(pBroker, "HelloEventModule");
return 0;
}
int _closeModule()
{
return 0;
}
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(HelloEventModule)
find_package(qibuild)
set(CMAKE_CXX_FLAGS "-stdlib=libstdc++")
set(_srcs
main.cpp
helloevent.h
helloevent.cpp
)
qi_create_lib(HelloEventModule SHARED ${_srcs} SUBFOLDER naoqi)
qi_use_lib(HelloEventModule ALCOMMON ALPROXIES)
configure & make
$ qibuild configure -c mytoolchain
$ qibuild make -c mytoolchain
모듈 설치
$ export NAOQI_RUNTIME=/path/to/Choregraphe.app/Contents/Resources
$ vi $NAOQI_RUNTIME/etc/naoqi/autoload.ini
$ tail $NAOQI_RUNTIME/etc/naoqi/autoload.ini
alvisualcompass
allocalization
alpanoramacompass
autonomouslife
dialog
HelloEventModule
$ cp -p build-mytoolchain/sdk/lib/naoqi/libHelloEventModule.dylib $NAOQI_RUNTIME/lib/naoqi/
동작 확인
Choregraphe에서 이벤트를받는 부분 만들기
먼저 다이어그램 상자를 만듭니다.
상자에 들어가서 "ALMemory에서 이벤트 추가"를 누르고 "HelloEvent""HelloMicroEvent"를 체크하여 추가합니다.
로그 상자를 배치하고 추가한 이벤트에서 연결합니다.
Python에서 이벤트 게시
$ /usr/bin/python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from naoqi import ALProxy
>>> m = ALProxy("ALMemory", "localhost", 59350)
[I] 3343 qi.eventloop: Creating event loop while no qi::Application() is running
[I] 3343 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 3343 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.1.6:59389
[I] 3343 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:59389
>>> m.raiseEvent("HelloEvent", "test")
>>> m.raiseEvent("HelloMicroEvent", "test2")
결과 확인
모듈 내에서 나온 로그와 로그 상자의 로그가 로그 뷰어에 표시되었습니다.
감상
Reference
이 문제에 관하여(자체 ALMemory 이벤트 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suna/items/3d2cf300f19e4367f9d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)