Tango Controls

Tango Controls

Inona no TANGO?

Izy io dia rafitra fitantanana fitaovana sy rindrambaiko isan-karazany.
TANGO amin'izao fotoana izao dia manohana sehatra 4: Linux, Windows NT, Solaris ary HP-UX.
Eto isika dia mamaritra ny miasa amin'ny Linux (Ubuntu 18.04)

Inona no anton'izany?

Manamora ny asa miaraka amin'ny fitaovana sy rindrambaiko isan-karazany.

  • Tsy mila mieritreritra ny fomba fitahirizana angon-drakitra ao amin'ny database ianao, efa natao ho anao izany.
  • Ilaina fotsiny ny mamaritra ny mekanika ho an'ny sensor fandatsaham-bato.
  • Mampihena ny kaodinao rehetra ho fenitra iray.

Aiza no ahazoana azy?

Tsy afaka namoaka izany avy amin'ny kaody loharano aho;
Ny torolàlana dia mamaritra ny fomba fametrahana avy amin'ny fonosana.

Inona no ao anatiny?

  • JIVE — ampiasaina hijerena sy hanovana ny angon-drakitra TANGO.
  • POGO - mpamorona kaody ho an'ny mpizara fitaovana TANGO.
  • Astor - mpitantana ny programa ho an'ny rafitra TANGO.

Ny singa roa voalohany ihany no hahaliana antsika.

Fiteny fandaharana tohanana

  • C
  • C ++
  • Java
  • JavaScript
  • Python
  • MatLab
  • LabVIEW

Niasa tamin'ny python & c++ aho. Eto dia C++ no ampiasaina ho ohatra.

Andeha isika hifindra amin'ny famaritana ny fomba hampifandray ny fitaovana amin'ny TANGO sy ny fomba miasa miaraka aminy. Horaisina ho ohatra ny sarany GPS neo-6m-0-001:

Tango Controls

Araka ny hitanao eo amin'ny sary, mampifandray ny birao amin'ny PC amin'ny alalan'ny UART CP2102. Rehefa mifandray amin'ny PC dia miseho ilay fitaovana /dev/ttyUSB[0-N], matetika /dev/ttyUSB0.

POGO

Andeha isika hanomboka pogo, ary mamorona kaody skeleton hiasa amin'ny biraonay.

pogo

Tango Controls

Efa namorona ny kaody aho, andao hamorona azy indray File-> Vaovao.

Tango Controls

Mahazo ireto manaraka ireto izahay:

Tango Controls

Ny fitaovanay (amin'ny ho avy, amin'ny alàlan'ny fitaovana no tiana holazaina amin'ny ampahany amin'ny rindrambaiko) dia foana ary manana baiko fanaraha-maso roa: State & Status.

Tsy maintsy fenoina ireo toetra ilaina:

Fananan'ny fitaovana - ny soatoavina default izay afindranay amin'ny fitaovana hanombohana azy ho an'ny birao GPS, mila mamindra ny anaran'ny birao ao amin'ny rafitra ianao com="/dev/ttyUSB0" ary com port speed baudrade=9600

didy — baiko hifehy ny fitaovantsika;

  • FANJAKANA - mamerina ny fanjakana ankehitriny, avy amin'ny States
  • STATUS - mamerina ny sata ankehitriny, izany no famenon'ny tady FANJAKANA
  • GPSArray - miverina GPS kofehy amin'ny endrika DevVarCharArray

Manaraka, apetraho ireo toetran'ny fitaovana azo vakina/soratana amin'ny/avy aminy.
Toetra Scalar - toetra tsotra (char, string, long, sns.)
Spectrum Attributes - laharan-tseza tokana
Toetra sary - laharan-tseza roa

States — ny fanjakana misy ny fitaovantsika.

  • misokatra - misokatra ny fitaovana.
  • AKAIKY - mihidy ny fitaovana.
  • FAILT - fahadisoana.
  • ON - mandray angona avy amin'ny fitaovana.
  • NIALA - tsy misy angona avy amin'ny fitaovana.

Ohatra amin'ny fampidirana toetra gps_string:

Tango Controls

Vanim-potoana fandatsaham-bato fotoana amin'ny ms, impiry no havaozina ny sanda gps_string. Raha tsy voafaritra ny fotoana fanavaozana, dia havaozina ihany ny toetra raha misy fangatahana.

Nitranga:

Tango Controls

Ankehitriny dia mila mamorona ny code ianao File-> Mamorona

Tango Controls

Amin'ny alàlan'ny default, ny Makefile dia tsy noforonina tamin'ny fotoana voalohany mila manamarina ny boaty mba hamoronana azy. Atao izany mba tsy ho voafafa mandritra ny taranaka vaovao ny fanovana natao taminy. Rehefa namorona azy indray mandeha ary nanamboatra azy ho an'ny tetikasanao (misoratra anarana ny fanalahidin'ny compilation, rakitra fanampiny), azonao adino izany.

Andeha isika izao hiroso amin'ny fandaharana. pogo dia namorona izao manaraka izao ho antsika:

Tango Controls

Ho liana amin'ny NEO6M.cpp & NEO6M.h izahay. Andeha isika haka ohatra iray amin'ny mpamorona kilasy:

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
}

Inona no misy ary inona no zava-dehibe eto? Ny asa init_device() dia manome fahatsiarovana ho an'ny toetrantsika: gps_string & gps_array, nefa tsy zava-dehibe izany. Ny zava-dehibe indrindra eto, ireto ny hevitra:

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

Ny zavatra rehetra ao anatin'ity sakana fanehoan-kevitra ity dia tsy hampidirina ao amin'ny pogo mandritra ny fanavaozana kaody manaraka mialà!. Ny zavatra rehetra tsy ao anaty blocs dia ho! Ireo no toerana ahafahantsika manao fandaharana sy manao fanitsiana manokana.

Inona izao no tena andraikitry ny kilasy? 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);

Rehefa te hamaky ny sanda toetra gps_string, ireo fiasa dia hantsoina amin'ny filaharana manaraka: foana_tanterahana_hook, read_attr_hardware и read_gps_string. Read_gps_string dia hameno gps_string amin'ny sandany.

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
}

fitambaran'ireo

Mandehana any amin'ny lahatahiry loharano ary:

make

Ny programa dia hatambatra ao amin'ny lahatahiry ~/DeviceServers.

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

JIVE

jive

Tango Controls

Efa misy fitaovana sasantsasany ao amin'ny tahiry, andao izao hamorona ny antsika Ahitsio-> Mamorona Server

Tango Controls

Andeha isika hiezaka hifandray aminy:

Tango Controls

Tsy misy na inona na inona mandeha, mila mihazakazaka ny programa aloha isika:

sudo ./NEO6M neo6m -v2

Afaka mifandray amin'ny port com ihany aho miaraka amin'ny zo faka-A. v - haavon'ny logging.

Afaka mifandray isika izao:

Tango Controls

mpanjifa

Amin'ny sary dia tsara tokoa ny mijery sary, saingy mila zavatra mahasoa kokoa ianao. Andao hanoratra mpanjifa iray izay hifandray amin'ny fitaovantsika ary handray famakiana avy amin'izany.

#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);
    }
}

Ahoana ny fanangonana:

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++

vokany:

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

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

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

Nahazo ny valiny ho toy ny fiverenana baiko izahay, maka ny toetran'ny tady sy ny endri-tsoratra maromaro.

soratra masina

Nanoratra ho an'ny tenako ilay lahatsoratra, satria rehefa afaka kelikely dia nanomboka nanadino ny fomba sy ny tokony hatao aho.

Misaotra anao noho ny tsara.

Source: www.habr.com

Add a comment