Kontoroolka Tango

Kontoroolka Tango

Maxaa TANGO?

Waa nidaam lagu maamulo qalabyada iyo software-yada kala duwan.
TANGO waxay hadda taageertaa 4 aaladood: Linux, Windows NT, Solaris iyo HP-UX.
Halkan waxaan ku sharxi doonaa la shaqaynta Linux (Ubuntu 18.04)

maxaa loogu talagalay?

Ku fududeeya shaqada qalab kala duwan iyo software.

  • Uma baahnid inaad ka fikirto sida loo kaydiyo xogta database-ka, mar hore ayaa laguu sameeyay.
  • Waxa kaliya oo lagama maarmaan ah in la qeexo habka loogu talagalay dareemayaasha cod bixinta.
  • Wuxuu hoos u dhigayaa dhammaan koodkaaga hal heer.

Halkee laga helayaa?

Waan ka soo saari kari waayay koodhka isha; Waxaan isticmaalay sawir diyaarsan oo TangoBox 9.3 ah si aan u shaqeeyo.
Tilmaamuhu waxay qeexayaan sida loo rakibo xirmooyinka.

Maxay ka kooban tahay?

  • jiib - loo isticmaalo in lagu eego oo wax ka beddelo xogta TANGO
  • POGO - koronto dhaliyaha aaladaha TANGO
  • Astor - maamulaha barnaamijka ee nidaamka TANGO.

Waxaan xiiseyn doonaa oo kaliya labada qaybood ee hore.

Luuqadaha barnaamijka ee la taageeray

  • C
  • C ++
  • Java
  • JavaScript
  • Python
  • matlab
  • LABAAD

Waxaan kaga shaqeeyay Python & c++. Halkan C++ ayaa loo isticmaali doonaa tusaale ahaan.

Haddaba aan u gudubno sharraxaadda sida loogu xidho aaladda TANGO iyo sida loogu shaqeeyo. Kharashka waxaa loo qaadan doonaa tusaale ahaan GPS neo-6m-0-001:

Kontoroolka Tango

Sida aad ku arki karto sawirka, waxaan ku xireynaa guddiga PC-ga UART CP2102. Marka lagu xiro PC, qalabku wuu soo baxayaa /dev/ttyUSB[0-N], sida caadiga ah /dev/ttyUSB0.

POGO

Hadda aynu bilowno pogo, oo soo saar koodka qalfoofka ee la shaqaynta guddidayada.

pogo

Kontoroolka Tango

Horay ayaan u sameeyay koodka, aan mar kale abuurno Fayl-> Cusub.

Kontoroolka Tango

Waxaan helnaa kuwa soo socda:

Kontoroolka Tango

Qalabkeena (mustaqbalka, aaladda waxaan ula jeednaa qaybta softiweerka) waa faaruq waxayna leedahay laba amar oo xakameyn ah: State & Xaaladda.

Waa in lagu buuxiyaa sifooyinka lagama maarmaanka ah:

Hantida Qalabka - Qiimaha caadiga ah ee aan ku wareejinno qalabka si aan u bilowno; guddiga GPS, waxaad u baahan tahay inaad ku wareejiso magaca guddiga nidaamka. com="/dev/ttyUSB0" iyo xawaaraha com dekedda baudrade=9600

Talooyin - amarrada lagu xakameynayo aaladdayada; waxaa la siin karaa doodo iyo qiime soo laabasho.

  • Gobolka - wuxuu soo celiyaa xaaladda hadda jirta, laga bilaabo Maraykanka
  • XAALADDA - waxay soo celisaa heerka hadda jira, tani waa dhamaystirka xadhigga Gobolka
  • GPSArray - soo noqda GPS xadhig qaabka DevVarCharArray

Marka xigta, deji sifooyinka aaladda lagu akhriyi karo/qorista/laga soo bilaabo.
Sifooyinka scalar - sifooyinka fudud (char, xadhig, dheer, iwm.)
Sifooyinka Spectrum - habab hal dhinac ah
Sifooyinka Sawirka - hannaan laba-geesood ah

Maraykanka - gobolka kaas oo qalabkeenu ku yaal.

  • FURAN - qalabku wuu furan yahay.
  • DHOW - qalabku wuu xidhan yahay.
  • FASHILAN - khalad.
  • ON - ka hel xogta qalabka.
  • OFF - wax xog ah lagama helin aaladda.

Tusaale ku darida sifo gps_string:

Kontoroolka Tango

Xilliga cod bixinta waqtiga ms, inta jeer ee qiimaha gps_string waa la cusboonaysiin doonaa. Haddii wakhtiga cusboonaysiinta aan la cayimin, sifada waxa la cusboonaysiin doonaa oo keliya marka la codsado.

dhacday:

Kontoroolka Tango

Hadda waxaad u baahan tahay inaad abuurto code Fayl->Samee

Kontoroolka Tango

Sida caadiga ah, Makefile lama soo saarin; marka ugu horeysa waxaad u baahan tahay inaad saxdo sanduuqa si aad u abuurto. Tan waxaa loo sameeyaa si isbeddellada lagu sameeyay aan loo tirtirin inta lagu jiro jiilka cusub. Markaad hal mar abuurtay oo aad u habaysay mashruucaaga (diwaangeli furayaasha ururinta, faylal dheeri ah), waad illoobi kartaa.

Hadda aan u gudubno barnaamijka. pogo leh ayaa noo soo saartay waxyaabaha soo socda:

Kontoroolka Tango

Waxaan xiisayn doonaa NEO6M.cpp & NEO6M.h. Aan tusaale u soo qaadano dhisme fasalka:

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
}

Maxaa jira iyo waxa muhiimka ah halkan? Shaqada init_device() waxay u qoondaysaa xusuusta sifaadkayada: gps_string & gps_array, laakiin muhiim maaha. Waxa ugu muhiimsan halkan, waa kuwan faallooyinka:

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

Wax kasta oo ku jira barta faallooyinka laguma dari doono pogo inta lagu jiro dib-u-cusboonaysiinta koodka xiga ka guur!. Wax kasta oo aan ku jirin blocks ayaa ahaan doona! Kuwani waa meelaha aan ku samayn karno barnaamij oo aan wax ka beddeli karno annaga.

Hadda waa maxay hawlaha ugu muhiimsan ee fasalka ka kooban yahay? 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);

Marka aan rabno inaan akhrino qiimaha sifada gps_string, hawlaha waxaa loogu yeeri doonaa sida soo socota: jillaab had iyo jeer_fuliso, akhri_attr_hardware ΠΈ read_gps_string. Read_gps_string waxay buuxin doontaa gps_string qiimaha.

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
}

Isugeynta

Aad galka isha oo:

make

Barnaamijka waxaa lagu soo ururin doonaa ~/DeviceServers folder.

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

jiib

jive

Kontoroolka Tango

Waxaa horeba u jiray qalab qaar ka mid ah kaydka, aynu hadda abuurno annaga Edit->Abuur Server-ka

Kontoroolka Tango

Hadda aan isku dayno inaan ku xidhno:

Kontoroolka Tango

Waxba ma shaqeyn doono, marka hore waxaan u baahanahay inaan wadno barnaamijkeena:

sudo ./NEO6M neo6m -v2

Waxa kaliya oo aan ku xidhi karaa dekedda com oo leh xuquuq xidid-A. v - heerka goynta.

Hadda waxaan ku xidhi karnaa:

Kontoroolka Tango

Macaamiil

Garaafyada, daawashada sawiradu waa hubaal, laakiin waxaad u baahan tahay wax ka faa'iido badan. Aynu qorno macmiil ku xidhi doona aaladayada oo aynu akhrinno ka qaadanno.

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

Sida loo ururiyo:

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

Natiijada:

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

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

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

Waxaan helnay natiijadii soo celinta amar ahaan, anagoo qaadanayna sifooyinka xarkaha iyo jilayaasha kala duwan.

tixraacyada

Waxaan u qoray maqaalka naftayda, sababtoo ah muddo ka dib waxaan bilaabay inaan iloobo sida iyo waxa la sameeyo.

Waad ku mahadsan tahay dareenka.

Source: www.habr.com

Add a comment