Tango Controls

Tango Controls

seo TANGO?

Ke sistimi e tsamaisang lisebelisoa tse fapaneng tsa software le software.
TANGO hajoale e ts'ehetsa liforomo tse 4: Linux, Windows NT, Solaris le HP-UX.
Mona re tla hlalosa ho sebetsa le Linux (Ubuntu 18.04)

E etselitsoe eng?

E nolofatsa mosebetsi ka lisebelisoa tse fapaneng le software.

  • Ha ho hlokahale hore u nahane ka mokhoa oa ho boloka data ho database, e se e u etselitse.
  • Hoa hlokahala feela ho hlalosa mochine oa li-sensor tsa likhetho.
  • E fokotsa khoutu eohle ea hau ho ea boemong bo le bong.

U ka fumana hokae?

Ha ke khone ho e qala ho tsoa ho khoutu ea mohloli; Ke sebelisitse setšoantšo se seng se entsoe sa TangoBox 9.3 ho sebetsa.
Litaelo li hlalosa mokhoa oa ho kenya liphutheloana.

E akarelletsa eng?

  • jive — e sebedisetswang ho sheba le ho lokisa polokelongtshedimosetso ya TANGO.
  • POGO — jenereithara ea khoutu bakeng sa liseva tsa sesebelisoa sa TANGO.
  • Astor - mookameli oa lenaneo bakeng sa tsamaiso ea TANGO.

Re tla thahasella feela likarolo tse peli tsa pele.

Lipuo tsa lenaneo tse tšehetsoeng

  • C
  • C ++
  • Java
  • Javascript
  • python
  • matlab
  • LabVIEW

Ke sebelitse le eona ho python & c ++. Mona C++ e tla sebelisoa e le mohlala.

Joale a re tsoeleng pele ho tlhaloso ea mokhoa oa ho hokahanya sesebelisoa le TANGO le mokhoa oa ho sebetsa le sona. Tefiso e tla nkoa e le mohlala GPS neo-6m-0-001:

Tango Controls

Joalokaha u bona setšoantšong, re hokahanya boto ho PC ka UART CP2102. Ha o hokahantsoe le PC, sesebelisoa sea hlaha /dev/ttyUSB[0-N], hangata /dev/ttyUSB0.

POGO

Joale ha re qaleng pogo, le ho hlahisa khoutu ea skeleton bakeng sa ho sebetsa le boto ea rona.

pogo

Tango Controls

Ke se ke entse khoutu, ha re e bopeng hape Faele-> Ncha.

Tango Controls

Re fumana tse latelang:

Tango Controls

Sesebelisoa sa rona (nakong e tlang, ka sesebelisoa re tla bolela karolo ea software) ha se na letho ebile se na le litaelo tse peli tsa taolo: State & boemo.

E tlameha ho tlatsoa ka litšoaneleho tse hlokahalang:

Thepa ea Sesebelisoa - litekanyetso tsa kamehla tseo re li fetisetsang sesebelisoa ho e qala; bakeng sa boto ea GPS, o hloka ho fetisetsa lebitso la boto tsamaisong. com="/dev/ttyUSB0" le lebelo la koung ea com baudrade=9600

Melao - litaelo tsa ho laola sesebelisoa sa rona; ba ka fuoa likhang le boleng ba ho khutlisa.

  • STATE - khutlisetsa boemo ba hona joale, ho tloha States
  • STATUS - e khutlisetsa boemo ba hona joale, sena ke tlatsetso ea khoele ho STATE
  • GPSArray - khutlela GPS khoele ka sebopeho DevVarCharArray

Ka mor'a moo, beha litšoaneleho tsa lisebelisoa tse ka baloang / ho ngoloa ho / ho tloha ho eona.
Litšobotsi tsa Scalar - litšobotsi tse bonolo (char, khoele, telele, joalo-joalo)
Litšobotsi tsa Spectrum - lihlopha tsa mahlakore a le mong
Litšobotsi tsa Litšoantšo - lihlopha tse peli-dimensional

States - boemo boo sesebelisoa sa rona se leng ho sona.

  • Open — sesebelisoa se butsoe.
  • MOTSOALLE - sesebelisoa se koetsoe.
  • TLHOKOMELO - phoso.
  • ON — fumana data ho tsoa sesebelisoa.
  • Off - ha ho data ho tsoa sesebelisoa.

Mohlala oa ho eketsa tšobotsi gps_string:

Tango Controls

Nako ea likhetho nako ho ms, hore na boleng ba gps_string bo tla ntlafatsoa hangata hakae. Haeba nako ea ntlafatso e sa boleloa, tšobotsi e tla ntlafatsoa feela ka kopo.

Ho etsahetse:

Tango Controls

Hona joale o hloka ho kenya khoutu Faele-> Hlahisa

Tango Controls

Ka nako e sa lekanyetsoang, Makefile ha e hlahisoe; lekhetlo la pele u hloka ho hlahloba lebokose ho e theha. Sena se etsoa e le hore liphetoho tse entsoeng ho eona li se ke tsa hlakoloa nakong ea moloko o mocha. Ha u se u e bōpile hanngoe 'me u e lokiselitse morero oa hau (linotlolo tsa ho bokella ngoliso, lifaele tse ling), u ka lebala ka eona.

Joale ha re feteleng pele ho mananeo. pogo e re hlahiselitse tse latelang:

Tango Controls

Re tla thahasella NEO6M.cpp & NEO6M.h. Ha re nke mohlala oa sehahi sa sehlopha:

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
}

Ke eng e teng le ea bohlokoa moo? Mosebetsi oa init_device () o fana ka mohopolo bakeng sa litšobotsi tsa rona: gps_string & gps_array, empa hase ea bohlokoa. Ntho ea bohlokoa ka ho fetisisa mona, litlhaloso ke tsena:

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

Ntho e 'ngoe le e 'ngoe e ka hare ho sebaka sena sa maikutlo e ke ke ea kenyelletsoa pogo nakong ea ho nchafatsa khoutu e latelang suthela hole!. Ntho e 'ngoe le e' ngoe e seng ka li-block e tla ba teng! Mona ke libaka tseo re ka khonang ho etsa litlhophiso le ho iketsetsa tsona.

Joale mesebetsi ea mantlha eo phaposi e nang le eona ke efe? 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);

Ha re batla ho bala boleng ba tšobotsi gps_string, mesebetsi e tla bitsoa ka tatellano e latelang: kamehla_executed_hook, bala_atr_hardware и bala_gps_string. Read_gps_string e tla tlatsa gps_string ka boleng.

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
}

Pokello

Eya ho foldara ea mohloli 'me:

make

Lenaneo le tla bokelloa ho foldareng ea ~/DeviceServers.

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

jive

jive

Tango Controls

Ho se ho ntse ho e-na le lisebelisoa tse ling ka har'a database, joale ha re theheng tsa rona Fetola-> Theha Seva

Tango Controls

Joale ha re lekeng ho hokela ho eona:

Tango Controls

Ha ho letho le tla sebetsa, pele re hloka ho tsamaisa lenaneo la rona:

sudo ./NEO6M neo6m -v2

Ke khona ho hokela ho com port ka litokelo motso-A. v - boemo ba ho rema lifate.

Joale re ka kopanya:

Tango Controls

Moreki

Ho Grafiken, ho sheba linepe ho lokile, empa o hloka ho hong ho molemo ho feta. Ha re ngolle moreki ea tla hokela sesebelisoa sa rona ebe o bala ho tsoa ho sona.

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

Mokhoa oa ho bokella:

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

Sephetho:

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

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

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

Re fumane sephetho e le taelo ea ho khutla, ho nka litšoaneleho tsa khoele le mefuta e mengata ea litlhaku.

litšupiso

Ke ile ka ingolla sehlooho sena, hobane ka mor'a nakoana ke qala ho lebala hore na ke etse joang le hore na ke etse eng.

Kea le leboha ka tlhokomelo ea hao.

Source: www.habr.com

Eketsa ka tlhaloso