Как интегрировать API C ++ в среду Robot?

Я разработал C ++ API для своего проекта. Также создал из этого общую библиотеку Linux .so. Мне нужно вызывать эти API, используя ключевые слова фреймворка робота.

Заранее спасибо.

-2

Решение

API C ++ можно легко вызвать с помощью библиотеки Python ctypes. Как вы уже знаете, библиотеки Python могут быть интегрированы в каркас робота.

Допустим, вам нужно вызвать API SendMesg C ++ с использованием фреймворка робота.
Пожалуйста, выполните следующие шаги:

1. Создание .so файла библиотеки API C ++

connect.cpp

extern «C» {

int Initialize(char* ip, int port)
{
//creates socket connection with remote host
}

int SendMesg(char* msg)
{
//Send mesg code
}

}

g ++ -std = c ++ 11 -fpic -c connect.cpp

g ++ -std = c ++ 11 -shared -g -o connect.so connect.o

Теперь вы создали общую библиотеку connect.so по тому же пути, что и ваш файл cpp.

2. Создание оболочки Python для API C ++

connectWrapper.py

импортные типы

класс connectWrapper:

def __init__(self, ip , port):
self.Lib = ctypes.cdll.LoadLibrary('absolute path to connect.so')
self.Lib.Initialize.argtypes = [ctypes.c_char_p, ctypes.c_int]
self.Lib.Initialize(ip, port)

def SendMessageWrapper(self, msg):
self.Lib.SendMesg.argtypes = [ctypes.c_char_p]
print self.Lib.SendMesg(msg)

4 вещи, которые следует помнить при создании API-оболочек Python.

а) имя файла Python совпадает с именем класса

б) При вызове API с использованием ctypes вы всегда должны указывать типы входных параметров. В противном случае вы можете получить следующую ошибку при запуске файла робота с использованием этой библиотеки Python:

NotImplementedError: переменные функции еще не поддерживаются; указать
список параметров

В этом случае мы указали параметры как ctypes.c_char_p для строковых типов и ctypes.c_int как целое число. Для получения дополнительной информации вы можете использовать следующие:

[http://python.net/crew/theller/ctypes/tutorial.html#specifying-the-required-argument-types-function-prototypes][1]

c) Абсолютный путь к connect.so указан в ctypes.cdll.LoadLibrary API.

d) Установите исполняемый файл Python, используя chmod + x connectWrapper.py

3. Добавление библиотеки Python в файл робота

test.robot.txt

** * Настройки * **

Библиотека «absoulte path to connectWrapper.py» 10.250.0.1 8080

** * Контрольные примеры * **

Отправить сообщение

     SendMessageWrapper "Hello World"

Как вы можете заметить, библиотека Python добавлена ​​в раздел настроек с аргументами, передаваемыми как IP и порт. Мы добавили ключевое слово SendMessage в раздел тестовых случаев со строковым сообщением «Hello World» в качестве входного аргумента.

Я надеюсь после запуска команды:

робот test.robot.txt

все работает отлично 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]