CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

URBI - UObject - обёртка UObject


Посмотрев пример Urbi-драйвера для управления сервомашинкой через Arduino можно заметить, что такое смешение кода — не лучший стиль программирования.
Для того чтобы избегать такого «смешения французского с нижегородским», UObject можно использовать в виде обёртки вокруг нашего класса управления(причём последний вообще может оставаться без изменений).

Пример:

#include <urbi/uobject.hh>
using namespace urbi;
using std::string;

// класс, который мы хотим использовать без модификации
class MyClass
{
public:
    int func1(const string &s){return 0;}
};

// UObject - класс-обёртка вокруг MyClass
class WrapClass: public UObject, MyClass
{
  public:
  WrapClass(const std::string& s): UObject(s)
  {
    // конструктор urbiScript
    UBindFunction(WrapClass, init);
    // доступ к интересующей нас функции
    UBindFunction(MyClass, func1);
  }
  int init()
  {
    return 0;
  }
};

UStart(WrapClass);


Теперь в urbiScript можно вызвать эту функцию:
var c = WrapClass.new;
c.func1("foo");


именно такой приём я использовал при написании модуля UrbiDuino:
есть класс ArduinoFirmata для общения с Arduino по протоколу Firmata и класс-обёртка Arduino:
class Arduino: public urbi::UObject, ArduinoFirmata

в котором просто реализован конструктор (открытие порта) и прописаны UBindFunction() для всех необходимых функций.
  • 0
  • 12 апреля 2011, 16:30
  • noonv

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.