Rheolaethau Tango

Rheolaethau Tango

Beth yw TANGO?

Mae'n system ar gyfer rheoli caledwedd a meddalwedd amrywiol.
Ar hyn o bryd mae TANGO yn cefnogi 4 platfform: Linux, Windows NT, Solaris a HP-UX.
Yma byddwn yn disgrifio gweithio gyda Linux (Ubuntu 18.04)

Beth yw ei ddiben?

Symleiddio gwaith gydag offer a meddalwedd amrywiol.

  • Nid oes angen i chi feddwl am sut i storio data yn y gronfa ddata, mae eisoes wedi'i wneud i chi.
  • Nid oes ond angen disgrifio'r mecanwaith ar gyfer synwyryddion pleidleisio.
  • Yn lleihau'ch holl god i un safon.

Ble i'w gael?

Ni allwn ei lansio o'r cod ffynhonnell; defnyddiais ddelwedd barod o TangoBox 9.3 i weithio.
Mae'r cyfarwyddiadau yn disgrifio sut i osod o becynnau.

Beth mae'n ei gynnwys?

  • JIVE β€” yn cael ei ddefnyddio i weld a golygu cronfa ddata TANGO.
  • POGO - generadur cod ar gyfer gweinyddwyr dyfais TANGO.
  • Astor β€” rheolwr rhaglen ar gyfer y system TANGO.

Dim ond yn y ddwy gydran gyntaf y bydd gennym ddiddordeb.

Ieithoedd rhaglennu Γ’ chymorth

  • C
  • C + +
  • Java
  • Javascript
  • Python
  • matlab
  • LabVIEW

Gweithiais gydag ef yn python & c++. Yma bydd C++ yn cael ei ddefnyddio fel enghraifft.

Nawr, gadewch i ni symud ymlaen at ddisgrifiad o sut i gysylltu'r ddyfais Γ’ TANGO a sut i weithio gydag ef. Cymerir y ffi fel enghraifft GPS neo-6m-0-001:

Rheolaethau Tango

Fel y gwelwch yn y llun, rydym yn cysylltu'r bwrdd Γ’'r PC trwy UART CP2102. Pan fydd wedi'i gysylltu Γ’ PC, mae'r ddyfais yn ymddangos /dev/ttyUSB[0-N], fel arfer /dev/ttyUSB0.

POGO

Nawr gadewch i ni lansio pogo, a chynhyrchu cod sgerbwd ar gyfer gweithio gyda'n bwrdd.

pogo

Rheolaethau Tango

Rwyf eisoes wedi creu'r cod, gadewch i ni ei greu eto Ffeil-> Newydd.

Rheolaethau Tango

Rydym yn cael y canlynol:

Rheolaethau Tango

Mae ein dyfais (yn y dyfodol, yn Γ΄l dyfais byddwn yn golygu'r rhan meddalwedd) yn wag ac mae ganddi ddau orchymyn rheoli: wladwriaeth & Statws.

Rhaid ei lenwi Γ’'r nodweddion angenrheidiol:

Eiddo Dyfais - gwerthoedd diofyn y byddwn yn eu trosglwyddo i'r ddyfais i'w gychwyn; ar gyfer y bwrdd GPS, mae angen i chi drosglwyddo enw'r bwrdd yn y system com="/dev/ttyUSB0" a chyflymder porthladd com bawd = 9600

Gorchmynion β€” gorchmynion i reoli ein dyfais; gellir rhoi dadleuon a gwerth dychwelyd iddynt.

  • DATGANIAD β€” yn dychwelyd y cyflwr presennol, o Gwladwriaethau
  • STATWS - yn dychwelyd y statws presennol, dyma gyflenwad y llinyn i DATGANIAD
  • Array GPS - yn dychwelyd meddygon teulu llinyn yn y ffurf DevVarCharArray

Nesaf, gosodwch y priodoleddau dyfais y gellir eu darllen / ysgrifennu ato / ohono.
Nodweddion Scalar β€” priodoleddau syml (torgoch, llinyn, hir, ac ati)
Nodweddion Sbectrwm - araeau un-dimensiwn
Nodweddion Delwedd - araeau dau ddimensiwn

Gwladwriaethau - y cyflwr y mae ein dyfais wedi'i lleoli ynddo.

  • AGORED - mae'r ddyfais ar agor.
  • GAU - mae'r ddyfais ar gau.
  • METHU - gwall.
  • ON - derbyn data o'r ddyfais.
  • OFF - dim data o'r ddyfais.

Enghraifft o ychwanegu priodoledd gps_llinyn:

Rheolaethau Tango

Cyfnod pleidleisio amser yn ms, pa mor aml y bydd y gwerth gps_string yn cael ei ddiweddaru. Os na nodir yr amser diweddaru, dim ond ar gais y bydd y nodwedd yn cael ei diweddaru.

Digwyddodd:

Rheolaethau Tango

Nawr mae angen i chi gynhyrchu'r cod Ffeil-> Cynhyrchu

Rheolaethau Tango

Yn ddiofyn, nid yw'r Makefile yn cael ei gynhyrchu; y tro cyntaf mae angen i chi wirio'r blwch i'w greu. Gwneir hyn fel nad yw'r newidiadau a wneir iddo yn cael eu dileu yn ystod cenhedlaeth newydd. Ar Γ΄l ei greu unwaith a'i ffurfweddu ar gyfer eich prosiect (cofrestrwch allweddi llunio, ffeiliau ychwanegol), gallwch anghofio amdano.

Nawr, gadewch i ni symud ymlaen at raglennu. pogo gyda'r canlynol wedi'u cynhyrchu i ni:

Rheolaethau Tango

Bydd gennym ddiddordeb yn NEO6M.cpp & NEO6M.h. Gadewch i ni gymryd enghraifft o adeiladwr dosbarth:

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
}

Beth sydd yna a beth sy'n bwysig yma? Mae'r ffwythiant init_device() yn dyrannu cof ar gyfer ein priodoleddau: gps_llinyn & gps_array, ond nid yw'n bwysig. Y peth pwysicaf yma, dyma'r sylwadau:

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

Ni fydd popeth sydd y tu mewn i'r bloc sylwadau hwn yn cael ei gynnwys mewn pogo yn ystod adfywiad cod dilynol symud i ffwrdd!. Bydd popeth nad yw mewn blociau! Dyma'r mannau lle gallwn raglennu a gwneud ein golygiadau ein hunain.

Nawr beth yw prif swyddogaethau'r dosbarth? 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);

Pan fyddwn am ddarllen y gwerth priodoledd gps_llinyn, bydd y swyddogaethau'n cael eu galw yn y drefn ganlynol: bob amser_gweithredu_bachyn, read_attr_hardware ΠΈ darllen_gps_llinyn. Bydd Read_gps_string yn llenwi gps_string gyda'r gwerth.

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
}

Llunio

Ewch i'r ffolder ffynhonnell a:

make

Bydd y rhaglen yn cael ei chrynhoi yn y ffolder ~/DeviceServers.

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

JIVE

jive

Rheolaethau Tango

Mae rhai dyfeisiau yn y gronfa ddata eisoes, gadewch i ni nawr greu ein rhai ni Golygu-> Creu Gweinydd

Rheolaethau Tango

Nawr, gadewch i ni geisio cysylltu ag ef:

Rheolaethau Tango

Ni fydd unrhyw beth yn gweithio, yn gyntaf mae angen i ni redeg ein rhaglen:

sudo ./NEO6M neo6m -v2

Dim ond gyda hawliau y gallaf gysylltu Γ’'r porthladd com gwraidd-A. v - lefel logio.

Nawr gallwn gysylltu:

Rheolaethau Tango

Cwsmer

Mewn graffeg, mae edrych ar luniau yn sicr yn dda, ond mae angen rhywbeth mwy defnyddiol arnoch chi. Gadewch i ni ysgrifennu cleient a fydd yn cysylltu Γ’'n dyfais ac yn cymryd darlleniadau ohoni.

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

Sut i lunio:

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

Canlyniad:

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

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

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

Cawsom y canlyniad fel dychweliad gorchymyn, gan gymryd priodoleddau llinyn ac amrywiaeth o nodau.

cyfeiriadau

Ysgrifennais yr erthygl i mi fy hun, oherwydd ar Γ΄l ychydig rwy'n dechrau anghofio sut a beth i'w wneud.

Diolch i chi am eich sylw.

Ffynhonnell: hab.com

Ychwanegu sylw