Izilawuli zeTango

Izilawuli zeTango

Yini I-TANGO?

Iwuhlelo lokuphatha ihadiwe nesoftware ehlukahlukene.
I-TANGO njengamanje isekela amapulatifomu angu-4: i-Linux, i-Windows NT, i-Solaris ne-HP-UX.
Lapha sizochaza ukusebenza ne-Linux (Ubuntu 18.04)

Kwenzelweni?

Yenza lula umsebenzi ngemishini ehlukahlukene kanye nesoftware.

  • Awudingi ukucabanga ukuthi ungayigcina kanjani idatha kusizindalwazi, isivele yenzelwe wena.
  • Kudingeka kuphela ukuchaza indlela yezinzwa zokuvota.
  • Yehlisa yonke ikhodi yakho ibe yizinga elilodwa.

Ungathola kuphi?

Angikwazanga ukuyethula kusuka kukhodi yomthombo; ngisebenzise isithombe esenziwe ngomumo se-TangoBox 9.3 ukuze ngisebenze.
Imiyalelo ichaza indlela yokufaka kusuka kumaphakheji.

Ihlanganisani?

  • I-JIVE β€” isetshenziselwa ukubuka nokuhlela imininingwane ye-TANGO.
  • I-POGO β€” ikhodi generator yamaseva edivayisi ye-TANGO.
  • I-Astor - Umphathi wohlelo lohlelo lwe-TANGO.

Sizoba nesithakazelo kuphela ezingxenyeni ezimbili zokuqala.

Izilimi zokuhlela ezisekelwe

  • C
  • C ++
  • Java
  • i-JavaScript
  • Python
  • UMatlab
  • I-LabVIEW

Ngisebenze nayo ku-python & c ++. Lapha i-C++ izosetshenziswa njengesibonelo.

Manje ake siqhubekele encazelweni yokuthi ungayixhuma kanjani idivayisi ku-TANGO nokuthi isebenza kanjani ngayo. Imali izothathwa njengesibonelo GPS neo-6m-0-001:

Izilawuli zeTango

Njengoba ubona esithombeni, sixhuma ibhodi ku-PC nge-UART CP2102. Uma uxhumeke kwi-PC, idivayisi iyavela /dev/ttyUSB[0-N], ngokuvamile /dev/ttyUSB0.

I-POGO

Manje ake siqalise Pogo, futhi ukhiqize ikhodi yamathambo ukuze usebenze nebhodi lethu.

pogo

Izilawuli zeTango

Sengiyidalile kakade ikhodi, masiyidale futhi Ifayela->Okusha.

Izilawuli zeTango

Sithola okulandelayo:

Izilawuli zeTango

Idivayisi yethu (ngokuzayo, ngedivayisi sizosho ingxenye yesofthiwe) ayinalutho futhi inemiyalo emibili yokulawula: State & Isimo.

Kufanele igcwaliswe ngezibaluli ezidingekayo:

Isakhiwo Sedivayisi - amanani azenzakalelayo esiwadlulisela kudivayisi ukuze siyiqalise; ebhodini le-GPS, udinga ukudlulisa igama lebhodi ohlelweni com="/dev/ttyUSB0" kanye nesivinini se-com port i-baudrade=9600

Imiyalo - imiyalo yokulawula idivayisi yethu; banganikezwa izimpikiswano kanye nenani lokubuyisela.

  • STATE - ibuyisela isimo samanje, kusuka States
  • STATUS - ibuyisela isimo samanje, lokhu kuhambisana neyunithi yezinhlamvu STATE
  • GPSArray - izimbuyiselo GPS intambo efomini I-DevVarCharArray

Okulandelayo, setha izibaluli zedivayisi ezingafundwa/zibhalwe kuye/kusuka kuyo.
Izimfanelo ze-Scalar - izici ezilula (char, string, eside, njll.)
Izimfanelo Ze-Spectrum - Amalungu afanayo anohlangothi olulodwa
Izimfanelo zesithombe - Amalungu afanayo anezinhlangothi ezimbili

States - isimo lapho idivayisi yethu itholakala khona.

  • VULA β€” idivayisi ivuliwe.
  • UKUSONDELA - idivayisi ivaliwe.
  • IHLULEKILE - iphutha.
  • ON β€” thola idatha kusuka ocingweni.
  • OFF β€” ayikho idatha evela kudivayisi.

Isibonelo sokwengeza isibaluli gps_string:

Izilawuli zeTango

Isikhathi sokuvota isikhathi ku-ms, inani le-gps_string lizobuyekezwa kangaki. Uma isikhathi sokubuyekeza singacacisiwe, isibaluli sizobuyekezwa kuphela ngesicelo.

Kwenzeke:

Izilawuli zeTango

Manje udinga ukwenza ikhodi Ifayela->Khiqiza

Izilawuli zeTango

Ngokuzenzakalelayo, i-Makefile ayikhiqizwa; okokuqala udinga ukuhlola ibhokisi ukuze uyidale. Lokhu kwenzelwa ukuthi izinguquko ezenziwe kuyo zingasuswa ngesikhathi sesizukulwane esisha. Ngemva kokuyidala kanye futhi wayilungiselela iphrojekthi yakho (ukubhalisa okhiye bokuhlanganisa, amafayela engeziwe), ungakhohlwa ngakho.

Manje ake siqhubekele ezinhlelweni. pogo with wasenzela okulandelayo:

Izilawuli zeTango

Sizoba nentshisekelo ku-NEO6M.cpp & NEO6M.h. Ake sithathe isibonelo sikamakhi wekilasi:

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
}

Yini ekhona futhi yini ebalulekile lapha? Umsebenzi we-init_device() unikeza inkumbulo kuzimpawu zethu: gps_string & gps_array, kodwa akubalulekile. Into ebaluleke kakhulu lapha, lawa amazwana:

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

Yonke into engaphakathi kwalesi bhulogi yamazwana ngeke ifakwe ku-pogo ngesikhathi sokwenziwa kabusha kwekhodi okulandelanayo suka!. Konke okungekho emabhuloki kuzoba! Lezi yizindawo lapho singahlela khona futhi sizenzele okwethu ukuhlela.

Manje yimiphi imisebenzi esemqoka equkethwe yikilasi? I-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);

Lapho sifuna ukufunda inani lemfanelo gps_string, imisebenzi izobizwa ngendlela elandelayo: ihhuku_enziwe_njalo, funda_atr_hardware ΠΈ read_gps_string. I-Read_gps_string izogcwalisa i-gps_string ngevelu.

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
}

Ukuhlanganiswa

Iya kufolda yomthombo futhi:

make

Uhlelo luzohlanganiswa lube ~/DeviceServers ifolda.

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

I-JIVE

jive

Izilawuli zeTango

Sekuvele kukhona amadivaysi ku-database, manje ake sidale eyethu Hlela-> Dala Iseva

Izilawuli zeTango

Manje ake sizame ukuxhuma kuyo:

Izilawuli zeTango

Akukho okuzosebenza, okokuqala sidinga ukusebenzisa uhlelo lwethu:

sudo ./NEO6M neo6m -v2

Ngingakwazi ukuxhuma ku-com port enamalungelo kuphela izimpande-A. v - Izinga lokungena.

Manje singaxhuma:

Izilawuli zeTango

Ikhasimende

Emidwebeni, ukubuka izithombe kuhle, kodwa udinga okuthile okuwusizo kakhulu. Masibhale iklayenti elizoxhuma kudivayisi yethu futhi lithathe ukufundwa kulo.

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

Indlela yokuhlanganisa:

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

Umphumela:

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

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

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

Sithole umphumela njengokubuya komyalo, sithatha izici zeyunithi yezinhlamvu kanye nezinhlamvu eziningi.

izithenjwa

Ngizibhalele lesi sihloko, ngoba ngemva kwesikhashana ngiqala ukukhohlwa ukuthi kufanele ngenze kanjani nokuthi ngenzeni.

Ngiyabonga ngokunaka kwakho.

Source: www.habr.com

Engeza amazwana