Назорати Танго

Назорати Танго

чӣ ТАНГО?

Ин як системаи идоракунии сахтафзор ва нармафзори гуногун мебошад.
TANGO ҳоло 4 платформаро дастгирӣ мекунад: Linux, Windows NT, Solaris ва HP-UX.
Дар ин ҷо мо кор бо Linuxро тавсиф хоҳем кард (Ubuntu 18.04)

Он барои чӣ?

Корро бо тачхизот ва программахои гуногун осон мекунад.

  • Ба шумо лозим нест, ки дар бораи чӣ гуна нигоҳ доштани маълумот дар базаи маълумот фикр кунед, он аллакай барои шумо анҷом дода шудааст.
  • Фақат механизми сенсорҳои овоздиҳиро тавсиф кардан лозим аст.
  • Ҳама рамзи шуморо ба як стандарт коҳиш медиҳад.

Куҷост, ки онро гирад?

Ман онро аз коди манбаъ оғоз карда натавонистам; Ман барои кор тасвири тайёри TangoBox 9.3-ро истифода бурдам.
Дастурҳо чӣ гуна аз бастаҳо насб карданро тавсиф мекунанд.

Он аз чӣ иборат аст?

  • ҲАЙВОН — барои дидан ва таҳрир кардани базаи TANGO истифода мешавад.
  • ПОГО — генератори код барои серверҳои дастгоҳи TANGO.
  • Астор — мудири программам системаи ТАНГО.

Мо танҳо ба ду ҷузъи аввал таваҷҷӯҳ хоҳем кард.

Забонҳои барномасозии дастгирӣ

  • C
  • C ++
  • Java
  • JavaScript
  • Python
  • Матлаб
  • Лаборатория

Ман бо он дар python & c++ кор кардам. Дар ин ҷо C++ ҳамчун намуна истифода мешавад.

Акнун биёед ба тавсифи чӣ гуна пайваст кардани дастгоҳ ба TANGO ва чӣ гуна кор кардан бо он мегузарем. Пардохт ҳамчун намуна гирифта мешавад GPS neo-6m-0-001:

Назорати Танго

Тавре ки шумо дар расм мебинед, мо тахтаро ба компютер тавассути UART CP2102 пайваст мекунем. Вақте ки ба компютер пайваст мешавад, дастгоҳ пайдо мешавад /dev/ttyUSB[0-N], одатан /dev/ttyUSB0.

ПОГО

Акнун биёед оғоз кунем пого, ва коди скелетро барои кор бо тахтаи мо тавлид кунед.

pogo

Назорати Танго

Ман аллакай кодро офаридаам, биёед онро дубора эҷод кунем Файл-> Нав.

Назорати Танго

Мо инҳоро ба даст меорем:

Назорати Танго

Дастгоҳи мо (дар оянда бо дастгоҳ қисми нармафзорро дар назар хоҳем дошт) холӣ аст ва дорои ду фармони идоракунӣ мебошад: давлат & Статуси.

Он бояд бо атрибутҳои зарурӣ пур карда шавад:

Амволи дастгоҳ - арзишҳои пешфарз, ки мо ба дастгоҳ интиқол медиҳем, то онро оғоз кунем; барои тахтаи GPS, шумо бояд номи тахтаро дар система интиқол диҳед com="/dev/ttyUSB0" ва суръати порти com boudrade = 9600

Фармонҳо — фармонҳо барои идоракунии дастгоҳи мо; ба онҳо аргументҳо ва арзиши бозгашт додан мумкин аст.

  • Давлат - ҳолати кунуниро бармегардонад, аз Иёлоти
  • STATUS - ҳолати кунуниро бар мегардонад, ин пурракунандаи сатр аст Давлат
  • GPSArray - бармегардад Низоми муайянкунии ҷаҳонии ҷои ист сатр дар шакл DevVarCharArray

Баъдан, атрибутҳои дастгоҳро таъин кунед, ки онҳоро ба/аз он хондан/навиштан мумкин аст.
Хусусиятҳои скалярӣ — атрибутҳои оддӣ (чар, сатр, дароз ва ғайра)
Хусусиятҳои спектр - массивҳои якченака
Хусусиятҳои тасвир - массивҳои дученака

Иёлоти — долате, ки аппарати мо дар он чо вокеъ аст.

  • КУШОДА — дастгох кушода аст.
  • НАЗДИК - дастгоҳ баста аст.
  • НОТУ - хатогӣ.
  • ON — аз дастгох маълумот кабул кунед.
  • OFF — ягон маълумот аз дастгоҳ.

Намунаи илова кардани атрибут gps_string:

Назорати Танго

Давраи интихобот вақт бо ms, чанд вақт арзиши gps_string навсозӣ мешавад. Агар вақти навсозӣ муайян нашуда бошад, атрибут танҳо дар асоси дархост нав карда мешавад.

Ҳодиса:

Назорати Танго

Акнун шумо бояд кодро эҷод кунед Файл -> Эҷод

Назорати Танго

Бо нобаёнӣ, Makefile тавлид намешавад; бори аввал ба шумо лозим аст, ки қуттиро барои сохтани он қайд кунед. Ин барои он анҷом дода мешавад, ки тағиротҳои ба он воридшуда дар давоми насли нав нест карда нашаванд. Пас аз он ки онро як маротиба эҷод карда, онро барои лоиҳаи худ танзим кунед (калидҳои компиляция, файлҳои иловагӣ) шумо метавонед онро фаромӯш кунед.

Акнун биёед ба барномасозӣ гузарем. pogo бо барои мо инҳоро тавлид кард:

Назорати Танго

Мо ба NEO6M.cpp таваҷҷӯҳ хоҳем кард & NEO6M.h. Биёед мисоли конструктори синфро гирем:

NEO6M::NEO6M(Tango::DeviceClass *cl, string &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 & gps_array, аммо муҳим нест. Муҳимтарин чиз дар ин ҷо, инҳоянд шарҳҳо:

/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
    .......
/*----- PROTECTED REGION END -----*/    //  NEO6M::constructor_1

Ҳама он чизе, ки дар дохили ин блоки шарҳ мавҷуд аст, ҳангоми барқарорсозии минбаъдаи код ба пого дохил карда намешавад дур кун!. Ҳама чизест, ки дар блокҳо нест! Ин ҷойҳоест, ки мо метавонем таҳрирҳои худамонро барномарезӣ кунем.

Акнун функсияҳои асосии синф кадомҳоянд? NEO6M:

void always_executed_hook();
void read_attr_hardware(vector<long> &attr_list);
void read_gps_string(Tango::Attribute &attr);
void read_gps_array(Tango::Attribute &attr);

Вақте ки мо мехоҳем арзиши атрибутро хонем gps_string, функсияҳо бо тартиби зерин даъват карда мешаванд: ҳамеша_иҷрошуда, read_attr_hardware и read_gps_string. Read_gps_string gps_string-ро бо арзиш пур мекунад.

void NEO6M::read_gps_string(Tango::Attribute &attr)
{
    DEBUG_STREAM << "NEO6M::read_gps_string(Tango::Attribute &attr) entering... " << endl;
    /*----- PROTECTED REGION ID(NEO6M::read_gps_string) ENABLED START -----*/
    //  Set the attribute value

        *this->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 тартиб дода мешавад.

tango-cs@tangobox:~/DeviceServers$ ls
NEO6M

ҲАЙВОН

jive

Назорати Танго

Дар базаи маълумот аллакай баъзе дастгоҳҳо мавҷуданд, биёед ҳоло дастгоҳи худро созем Таҳрир -> Эҷоди сервер

Назорати Танго

Акнун биёед кӯшиш кунем, ки ба он пайваст шавем:

Назорати Танго

Ҳеҷ чиз кор намекунад, аввал мо бояд барномаи худро иҷро кунем:

sudo ./NEO6M neo6m -v2

Ман метавонам танҳо ба порти com бо ҳуқуқ пайваст шавам реша— А. v - сатҳи бақайдгирӣ.

Акнун мо метавонем пайваст шавем:

Назорати Танго

Муштарӣ

Дар графика, дидани тасвирҳо албатта хуб аст, аммо ба шумо чизи муфидтар лозим аст. Биёед муштарӣ нависем, ки ба дастгоҳи мо пайваст шавад ва аз он хониш гирад.

#include <tango.h>
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<Tango::DevUChar> 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;

        vector<Tango::DevUChar> spr2;
        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("");

    } catch (DevFailed &e) {
        Except::print_exception(e);
        exit(-1);
    }
}

Чӣ тавр тартиб додан:

g++ gps.cpp -I/usr/local/include/tango -I/usr/local/include -I/usr/local/include -std=c++0x -Dlinux -L/usr/local/lib -ltango -lomniDynamic4 -lCOS4 -lomniORB4 -lomnithread -llog4tango -lzmq -ldl -lpthread -lstdc++

Натиҷа:

tango-cs@tangobox:~/workspace/c$ ./a.out 
$GPRMC,,V,,,,,,,,,,N*53

$GPRMC,,V,,,,,,,,,,N*53

$GPRMC,,V,,,,,,,,,,N*53

Мо натиҷаро ҳамчун бозгашти фармон гирифта, атрибутҳои сатр ва массиви аломатҳоро гирифтем.

мурожиат

Ман мақоларо барои худ навиштам, зеро пас аз чанд вақт ман фаромӯш мекунам, ки чӣ гуна ва чӣ кор карданро фаромӯш мекунам.

Ташаккур ба диққататон.

Манбаъ: will.com

Илова Эзоҳ