Rialuithe Tango

Rialuithe Tango

Cad é TANGO?

Is córas é chun crua-earraí agus bogearraí éagsúla a bhainistiú.
Tacaíonn TANGO le 4 ardán faoi láthair: Linux, Windows NT, Solaris agus HP-UX.
Anseo déanfaimid cur síos ar oibriú le Linux (Ubuntu 18.04)

Cad é nach bhfuil tú?

Simplíonn sé obair le trealamh agus bogearraí éagsúla.

  • Ní gá duit smaoineamh ar conas sonraí a stóráil sa bhunachar sonraí, tá sé déanta duit cheana féin.
  • Ní gá ach cur síos a dhéanamh ar an meicníocht maidir le braiteoirí vótaíochta.
  • Laghdaíonn sé do chód go léir go dtí caighdeán amháin.

Cá háit a bhfaighidh sé é?

Níorbh fhéidir liom é a sheoladh ón gcód foinse; d'úsáid mé íomhá réidh de TangoBox 9.3 chun oibriú.
Déanann na treoracha cur síos ar conas a shuiteáil ó phacáistí.

Cad atá ann?

  • JIVE — a úsáidtear chun bunachar sonraí TANGO a fheiceáil agus a chur in eagar.
  • POGO — gineadóir cód le haghaidh freastalaithe gléasanna TANGO.
  • Astor — bainisteoir cláir do chóras TANGO.

Ní bheidh suim againn ach sa chéad dá chomhpháirt.

Teangacha ríomhchláraithe tacaithe

  • C
  • C + +
  • java
  • JavaScript
  • Python
  • mata
  • LabVIEW

D'oibrigh mé leis i python & c++. Anseo úsáidfear C++ mar shampla.

Anois, déanaimis bogadh ar aghaidh go dtí cur síos ar conas an gléas a nascadh le TANGO agus conas oibriú leis. Glacfar an táille mar shampla GPS neo-6m-0-001:

Rialuithe Tango

Mar a fheiceann tú sa phictiúr, nascaimid an bord leis an ríomhaire trí UART CP2102. Nuair atá sé ceangailte le ríomhaire, feictear an gléas /dev/ttyUSB[0- N], de ghnáth /dev/ttyUSB0.

POGO

Anois, a ligean ar seoladh pogo, agus cód creatlach a ghiniúint le haghaidh oibriú lenár mbord.

pogo

Rialuithe Tango

Chruthaigh mé an cód cheana féin, déanaimis é a chruthú arís Comhad-> Nua.

Rialuithe Tango

Faighimid na rudaí seo a leanas:

Rialuithe Tango

Tá ár ngléas (sa todhchaí, de réir feiste, ciallóidh muid an chuid bogearraí) folamh agus tá dhá ordú rialaithe aige: Stáit & stádas.

Ní mór é a líonadh leis na tréithe riachtanacha:

Maoin Gléas - luachanna réamhshocraithe a aistrímid chuig an bhfeiste chun é a thúsú don bhord GPS, ní mór duit ainm an bhoird a aistriú sa chóras com="/dev/ttyUSB0" agus luas port com bolscaireacht = 9600

Orduithe — orduithe chun ár ngléas a rialú; is féidir argóintí agus luach fillte a thabhairt dóibh.

  • STÁIT - tuairisceáin an staid reatha, ó Stáit
  • STÁID - cuireann sé an stádas reatha ar ais, is é seo comhlánú an teaghráin STÁIT
  • Eagrán GPS - tuairisceáin GPS teaghrán i bhfoirm DevVarCharArray

Ansin, socraigh tréithe an ghléis is féidir a léamh/scríobh chuige/ó.
Tréithe Scalar — tréithe simplí (char, téad, fada, etc.)
Tréithe Speictrim - eagair aontoiseacha
Tréithe Íomhá - eagair dhéthoiseacha

Stáit — an staid ina bhfuil ár ngléas suite.

  • OPEN - tá an gléas oscailte.
  • DÚN - tá an gléas dúnta.
  • FAILT - earráid.
  • ON — sonraí a fháil ón bhfeiste.
  • OFF — gan aon sonraí ón bhfeiste.

Sampla de tréith a chur leis gps_teaghrán:

Rialuithe Tango

Tréimhse vótaíochta am in ms, cé chomh minic a nuashonrófar an luach gps_string. Mura bhfuil an t-am nuashonraithe sonraithe, ní dhéanfar an tréith a nuashonrú ach amháin arna iarraidh sin.

Tharla:

Rialuithe Tango

Anois ní mór duit an cód a ghiniúint Comhad-> Gin

Rialuithe Tango

De réir réamhshocraithe, ní ghintear an Makefile; Déantar é seo ionas nach scriostar na hathruithe a rinneadh air le linn glúin nua. Tar éis duit é a chruthú uair amháin agus é a chumrú do do thionscadal (clár eochracha tiomsaithe, comhaid bhreise), is féidir leat dearmad a dhéanamh air.

Anois, a ligean ar bogadh ar aghaidh go dtí an ríomhchlárú. pogo leis an méid seo a leanas a ghintear dúinn:

Rialuithe Tango

Beidh suim againn i NEO6M.cpp & NEO6M.h. Glacaimis sampla de chruthaitheoir ranga:

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
}

Cad atá ann agus cad atá tábhachtach anseo? Leithdháileann an fheidhm init_device() cuimhne dár tréithe: gps_teaghrán & gps_ eagar, ach níl sé tábhachtach. An rud is tábhachtaí anseo, seo iad na tuairimí:

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

Ní bheidh gach rud atá taobh istigh den bhloc tuairimí seo san áireamh i pogo le linn athghiniúint cód ina dhiaidh sin bogadh ar shiúl!. Beidh gach rud nach bhfuil i mbloic! Is iad seo na háiteanna inar féidir linn ár n-athruithe féin a ríomhchlárú agus a dhéanamh.

Anois cad iad na príomhfheidhmeanna atá sa rang? 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);

Nuair is mian linn an luach aitreabúide a léamh gps_teaghrán, tabharfar na feidhmeanna san ord seo a leanas: i gcónaí_fhorghníomhaithe_dubhán, read_attr_crua-earraí и léamh_gps_teaghrán. Líonfaidh Read_gps_string gps_string leis an luach.

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
}

Tiomsú

Téigh go dtí an fillteán foinse agus:

make

Tiomsófar an clár san fhillteán ~/DeviceServers.

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

JIVE

jive

Rialuithe Tango

Tá roinnt gléasanna sa bhunachar sonraí cheana féin, cruthaímid ár gceann anois Edit-> Cruthaigh Freastalaí

Rialuithe Tango

Anois déanaimis iarracht nascadh leis:

Rialuithe Tango

Ní oibreoidh aon rud, ar dtús ní mór dúinn ár gclár a reáchtáil:

sudo ./NEO6M neo6m -v2

Ní féidir liom ach ceangal leis an gcalafort com le cearta root-A. v - leibhéal logáil.

Anois is féidir linn ceangal a dhéanamh:

Rialuithe Tango

Custaiméir

I grafaicí, is cinnte go bhfuil tú ag féachaint ar phictiúir go maith, ach tá rud éigin níos úsáidí ag teastáil uait. Scríobhfaimid cliant a nascfaidh lenár ngléas agus a thógfaidh léamha uaidh.

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

Conas a thiomsú:

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

Toradh:

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

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

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

Fuaireamar an toradh mar thuairisceán ordaithe, ag glacadh tréithe teaghrán agus sraith carachtar.

tagairtí

Scríobh mé an t-alt dom féin, mar tar éis tamaill tosaíonn mé ag dearmad conas agus cad atá le déanamh.

Go raibh maith agat as do aird.

Foinse: will.com

Add a comment