Что такое программа танго

Тango сайт – платформа для стримеров. Получила популярность у потребителей благодаря инструментам и монетизации вовлеченной аудитории. Об особенностях платформы поговорим в статье.

Функции и особенности сайта Танго

Танго приложение для стрима, общения, новых знакомств в онлайне. Доступно для скачивания на телефонные платформы. м своим друзьям.

8. Танго-сюрпризы — это уникальная особенность танго, которая позволяет вам выполнять забавные эффекты в разговоре. Обратите внимание, что этот предмет содержит функцию покупки. Поддержка Tango поддерживает только несколько бесплатных пакетов.

9. Вы можете слушать музыку или отправить музыку другу.

Выше приведены некоторые основные операции, которые помогут вам познакомиться с танго. Желаю успехов!

Источник: ru.webtech360.com

Приложение Tango. Что важно помнить?

Tango Controls

main

Это система для управления различным оборудованием и программным обеспечением.
TANGO поддерживает 4 платформы на данный момент: Linux, Windows NT, Solaris и HP-UX.
Здесь будет описана работа с Linux(Ubuntu 18.04)

Для чего нужно?

Упрощает работу с различным оборудованием и софтом.

  • Вам не нужно думать о том как хранить данные в БД, это уже сделано за Вас.
  • Нужно только описать механизм опроса датчиков.
  • Сводит весь Ваш код к одному стандарту.

Где взять?

Из исходников не смог ее запустить, для работы использовал готовый образ TangoBox 9.3.
В инструкции описано как ставить из пакетов.

Из чего она состоит?

  • JIVE — служит для просмотра и редактирования базы данных TANGO.
  • POGO — генератор кода для серверов устройств TANGO.
  • Astor — программный менеджер для системы TANGO.
Читайте также:
Какая программа для Смарт часов на Андроид

Нас будут интересовать только первые два компонента.

Поддерживаемые языки программирования

Я работал с ней на python New.

image

image

Наше устройство(под устройством в дальнейшем будет иметься ввиду программная часть) пустое и имеет две команды управления: State /dev/ttyUSB0″ и скорость com порта baudrade=9600

Commands — команды управления нашим устройством, им можно задать аргументы и возвращаемое значение.

  • STATE — возвращает текущее состояние, из States
  • STATUS — возвращает текущий статус, это строковое дополнение к STATE
  • GPSArray — возвращает gps строку в виде DevVarCharArray

Далее задаются атрибуты устройства которые можно читать/писать в/из него.

Что такое Tango Live?


Scalar Attributes — простые атрибуты (char, string, long и т.п.)
Spectrum Attributes — одномерные массивы
Image Attributes — двумерные массивы

States — состояния в котором находится наше устройство.

Пример добавления атрибута gps_string:

image

Polling period время в мс, как часто будет обновляться значение gps_string. Если время обновления не задать, то атрибут будет обновляться только по запросу.

image

Теперь нужно с генерировать код File->Generate

image

По умолчанию Makefile не генерируется, в 1-ый раз нужно поставить галочку что бы его создать. Это сделано для того что бы внесенные в него правки не удалялись при новой генерации. Создав его единожды и настроив под свой проект(прописать ключи компиляции, доп. файлы) можно забыть про него.

Теперь переходим непосредственно к программированию. pogo с генерировал нам следующее:

image

Нас будут интересовать NEO6M.cpp s) : TANGO_BASE_CLASS(cl, s.c_str()) < /*—— PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START ——*/ init_device(); /*—— PROTECTED REGION END ——*/ // NEO6M::constructor_1 >

Что здесь есть и что здесь главное? В функции init_device() происходит выделение памяти для наших атрибутов: gps_string void read_attr_hardware(vector void read_gps_string(Tango::Attribute void read_gps_array(Tango::Attribute

Читайте также:
Как пользоваться программой untitled

Когда мы захотим прочитать значение атрибута gps_string, будут вызваны функции в следующем порядке: always_executed_hook, read_attr_hardware и read_gps_string. В read_gps_string произойдет заполнение gps_string значением.

void NEO6M::read_gps_string(Tango::Attribute DEBUG_STREAM attr_gps_string_read = Tango::string_dup(this->gps.c_str()); attr.set_value(attr_gps_string_read); /*—— PROTECTED REGION END ——*/ // NEO6M::read_gps_string >

Компиляция

Заходим в папку с исходниками и:

make

Программа скомпилируется в папку ~/DeviceServers.

JIVE

jive

image

В БД уже есть какие-то устройства, создадим теперь наше Edit->Create Server

image

Теперь попробуем подключиться к нему:

image

Ни чего не выйдет, сначала надо запустить нашу программу:

sudo ./NEO6M neo6m -v2

Подключиться к com порту у меня можно только с правами root-а. v — уровень логирования.

Как запустить несколько устройств.

image

Для того что бы запустить несколько таких устройств, необходимо создать нужное количество Devices в Jive:

NEO6M/neo6m/2 . NEO6M/neo6m/N

Для каждого задать свои Properties. Адрес устройства и скорость подключения.
Теперь запускаем:

sudo ./NEO6M neo6m -v2

У нас запуститься два устройства сразу.

Теперь можем подключиться:

image

Клиент

В графике смотреть на картинки конечно хорошо, но нужно что-то более полезное. Напишем клиент который будет подключаться к нашему устройству и забирать с него показания.

#include using namespace Tango; int main(int argc, char **argv) < try < // // create a connection to a TANGO device // DeviceProxy *device = new DeviceProxy(«NEO6M/neo6m/1»); // // Ping the device // device->ping(); // // Execute a command on the device and extract the reply as a string // vector gps_array; DeviceData cmd_reply; cmd_reply = device->command_inout(«GPSArray»); cmd_reply >> gps_array; for (int i = 0; i < gps_array.size(); i++) < printf(«%c», gps_array[i]); >puts(«»); // // Read a device attribute (string data type) // string spr; DeviceAttribute att_reply; att_reply = device->read_attribute(«gps_string»); att_reply >> spr; cout << spr << endl; vectorspr2; DeviceAttribute att_reply2; att_reply2 = device->read_attribute(«gps_array»); att_reply2.extract_read(spr2); for (int i = 0; i < spr2.size(); i++) < printf(«%c», spr2[i]); >puts(«»); // // Пример записи абстрактного атрибута доступного на запись. // DeviceAttribute value; value = DeviceAttribute(«attr_double», 32.3233); device->write_attribute(value); // // Пример записи абстрактного spectrum атрибута доступного на запись. // vector array(5); DeviceAttribute attr_in; attr_in.set_name(«attr_array»); attr_in write_attribute(attr_in); > catch (DevFailed Except::print_exception(e); exit(-1); >>
g++ gps.cpp -I/usr/local/include/tango -I/usr/local/include -std=c++0x -Dlinux -L/usr/local/lib -ltango -lomniDynamic4 -lCOS4 -lomniORB4 -lomnithread -llog4tango -lzmq -ldl -lpthread -lstdc++

Читайте также:
Что такое документ какие бывают документы какими программами создаются и редактируются

Получили результат в качестве возврата команды, взятия атрибутов строки и массива символов.

Ссылки

Статью писал для себя, потому что спустя некоторое время начинаю забывать как и что делать.

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru