Agnus Imperium

Agnus Imperium

quod TANGO?

Aliquam sit amet est sit amet odio luctus varius.
TANGO nunc 4 suggestus sustinet: Linux, Fenestra NT, Solaris et HP-UX.
Hic describemus operantes cum Linux (Ubuntu 18.04)

ля Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ?

Simplificat opus cum variis instrumentis et programmatibus.

  • Non debes cogitare quomodo notitias condere in datorum datorum, iam tibi factum est.
  • Solum necessarium est mechanismum ad suffragium sensoriis describere.
  • Reduces omnia codicem tuum ad unam regulam.

Vbi iore?

Non potui ex fonte codice deducere, imago TangoBox 9.3 ad operandum prompta usus sum.
Praecepta describere quomodo ex fasciculis instituere.

Quid est?

  • JIVE' - ad videndum et ad datorum TANGO recensendum.
  • POGO - codice generans pro TANGO fabrica servers.
  • Carl β€” procurator programmatis ad systema TANGO.

Sola in duobus primis partibus quaerenda erimus.

Supported programming languages

  • C
  • C ++
  • Java
  • JavaScript
  • Python
  • matlab
  • LabVIEW

Cum eo in Pythone laboravi &c++. Hic C++ ut exemplum erit.

Nunc ad descriptionem transeamus quomodo machinam TANGO connectere et quomodo cum eo laborare. Feodum ad exemplum GPS neo-6m-0-001:

Agnus Imperium

Ut in tabula videre potes, tabulam ad PC per UART CP2102 coniungimus. Cum PC connexa, machina videtur /dev/ttyUSB[0-N]fere /dev/ttyUSB0.

POGO

Nunc Lorem pogoet generale sceletum codicem ad operandum cum tabula nostra.

pogo

Agnus Imperium

Iam codicem creavi, iterum crearemus File->Novum.

Agnus Imperium

Sequenti acquirimus:

Agnus Imperium

Nostrae fabrica (in futuro, per machinam partem programmalem significabimus) vacua est et duo mandata habet imperium: State & Status.

Impleri debet necessariis attributis;

Fabrica Property - valores defectus quos ad fabricam ad initialize transfermus, pro tabula GPS, nomen tabulae in systematis transferre debes. com="/dev/ttyUSB0" et celeritate com portum baudrade=9600

imperium - imperata ut machinam nostram regerent, argumenta reddi possunt ac valorem reddere.

  • sTATUS - recurrit in statu praesenti, e Americae
  • STATUS - status currentem redit, hoc est complementum chordae sTATUS
  • GPSArray - redit GPS linea in forma DevVarCharArray

Deinde pone machinam attributorum quae ex eo legi/scripta sunt.
Scalar Attributes β€” attributa simplicia (char, chorda, longa, etc.)
Imaginis attributa - unus dimensionis vestit
Imago attributa - duos dimensiva vestit

Americae - status in quo fabrica nostra sita est.

  • APERTUS - Aperta fabrica.
  • PROPINQUUS β€” fabrica clauditur.
  • DELICTUM β€” errorem.
  • ON - notitia ex fabrica accipere.
  • Off - nulla notitia ex fabrica.

Exemplum addens attributum gps_string:

Agnus Imperium

Suffragium tempus tempus in ms, quotiens valorem gps_stringi renovabitur. Si tempus renovationis definitum non est, attributum solum petentibus renovabitur.

Contigit:

Agnus Imperium

Nunc opus est codicem generare File-> Generare

Agnus Imperium

Defalta, Makefile non generatur, primum opus est ut capsam inspicias eam creare. Hoc ita fit, ut mutationes per novam generationem factae non deletae sint. Eam semel creavisti et eam ad inceptum tuum configurans (clavium tabulariorum compilationem, additamenta imaginum) oblivisci potes.

Nunc ad programmationem transeamus. pogo cum genit pro nobis;

Agnus Imperium

Quaerendum erit in NEO6M.cpp& NEO6M.h. Sumamus exemplum constructoris ordinis:

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
}

Quid hic et quid interest? Munus memoriam attribuit nostris attributis: gps_string & gps_arraysed non maximus. Maxime hiccommentaria haec sunt:

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

Omne quod intra hoc commentarium includi non potest in pogo per sequentes codicem regenerationes discedite!. Omne quod non est in impedit, erit! Haec loca sunt ubi programmata facere et emendationes nostras facere possumus.

Nunc quae sunt praecipua munera ordinis continet? 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);

Cum volumus legere valorem attributum gps_stringfunctiones hoc ordine vocabuntur; always_executed_hook, read_attr_hardware ΠΈ read_gps_string. Read_gps_string implebit gps_string cum valore.

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
}

compilation

Vade ad fontem folder et:

make

Propositum in ~/DeviceServers folder componetur.

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

JIVE'

jive

Agnus Imperium

Sunt iam nonnullae machinae in database, nunc nostram crea Edit->Create Servo

Agnus Imperium

Nunc conemur coniungere ad eam;

Agnus Imperium

Nil opus erit, primum ad propositum nostrum currendum opus est;

sudo ./NEO6M neo6m -v2

Non possum modo coniungere ad com portum cum iure radix-A. v β€” gradu logging.

Nunc coniungere possumus:

Agnus Imperium

Lorem

In graphics, picturas spectans certe bonum est, sed utiliore aliquo indiges. Scribamus clientem qui consilio nostro coniunget et ex eo lectiones sumo.

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

Quomodo ordinare:

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

effectus:

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

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

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

Venimus eventum ut reditus mandatum, attributa chordae et characterum ordinata.

References

Articulum pro me scripsi, quia post tempus quomodo et quid facere incipio oblivisci.

Lorem animos.

Source: www.habr.com