Njikwa Tango

Njikwa Tango

Gịnị TANGO?

Ọ bụ usoro maka ijikwa ngwaike na ngwanrọ dị iche iche.
TANGO na-akwado nyiwe 4 ugbu a: Linux, Windows NT, Solaris na HP-UX.
N'ebe a, anyị ga-akọwa ịrụ ọrụ na Linux (Ubuntu 18.04)

Kedu ihe ọ bụ?

Na-eji ngwa na ngwanrọ dị iche iche eme ka ọrụ dị mfe.

  • Ịkwesighi iche echiche maka otu esi echekwa data na nchekwa data, emelarị gị.
  • Ọ dị mkpa naanị ịkọwa usoro maka sensọ ntuli aka.
  • Na-ebelata koodu gị niile n'otu ọkọlọtọ.

Ebe ị ga-enweta

Enweghị m ike ịmalite ya site na koodu isi mmalite; Eji m ihe oyiyi TangoBox 9.3 emebere arụ ọrụ.
Ntuziaka na-akọwa otu esi etinye na ngwugwu.

Gịnị ka ọ na-agụnye?

  • jive - eji ele ma dezie nchekwa data TANGO.
  • POGO - onye na-emepụta koodu maka sava ngwaọrụ TANGO.
  • Astra - onye njikwa mmemme maka sistemụ TANGO.

Anyị ga-enwe mmasị naanị na akụkụ abụọ mbụ.

Asụsụ mmemme akwadoro

  • C
  • C +
  • Java
  • JavaScript
  • Python
  • matlab
  • Nyocha

Mụ na ya rụrụ ọrụ na Python & c++. Ebe a ga-eji C++ mee ihe atụ.

Ugbu a, ka anyị gaa na nkọwa nke otu esi jikọọ ngwaọrụ na TANGO na otu esi arụ ọrụ na ya. A ga-ewere ụgwọ ahụ dịka ọmụmaatụ GPS neo-6m-0-001:

Njikwa Tango

Dị ka ị na-ahụ na foto a, anyị na-ejikọta osisi na PC site na UART CP2102. Mgbe ejikọrọ na PC, ngwaọrụ ga-apụta /dev/ttyUSB[0-N], na-emekarị /dev/ttyUSB0.

POGO

Ugbu a, ka malite pogo, ma mepụta koodu skeleton maka ịrụ ọrụ na bọọdụ anyị.

pogo

Njikwa Tango

Emeela m koodu ahụ, ka anyị mepụta ya ọzọ Faịlụ-> Ọhụrụ.

Njikwa Tango

Anyị na-enweta ihe ndị a:

Njikwa Tango

Ngwaọrụ anyị (n'ọdịnihu, site na ngwaọrụ anyị ga-apụta akụkụ ngwanrọ) efu ma nwee iwu njikwa abụọ: State & Ọnọdụ.

Ọ ga-ejupụta na njirimara ndị dị mkpa:

Ngwongwo akụrụngwa - ụkpụrụ ndabara nke anyị na-ebufe na ngwaọrụ iji bido ya; maka bọọdụ GPS, ịkwesịrị ịnyefe aha bọọdụ ahụ na sistemụ. com = "/dev/ttyUSB0" na com ọdụ ụgbọ mmiri baudrade=9600

Iwu - iwu ijikwa ngwaọrụ anyị; enwere ike ịnye ha arụmụka na uru nloghachi.

  • Ụlọ ọrụ - weghachi ọnọdụ dị ugbu a, site na Mba
  • Ụgha - weghachi ọnọdụ dị ugbu a, nke a bụ ihe nkwado nke eriri Ụlọ ọrụ
  • GPSArray - alaghachi gps eriri n'ụdị DevVarCharArray

Na-esote, tọọ njirimara ngwaọrụ nke enwere ike ịgụ / dee na / site na ya.
Àgwà Scalar - àgwà dị mfe (char, eriri, ogologo, wdg)
Njirimara Spectrum - otu akụkụ arrays
Njirimara onyonyo - akụkụ abụọ arrays

Mba - steeti nke ngwaọrụ anyị dị.

  • Open - ngwaọrụ na-emeghe.
  • NSO - ngwaọrụ na-emechi.
  • ỤJỌ - njehie.
  • ON - nweta data site na ngwaọrụ.
  • Gbanyụọ - enweghị data sitere na ngwaọrụ.

Ọmụmaatụ nke ịgbakwunye àgwà gps_string:

Njikwa Tango

Oge ntuli aka oge na ms, ugboro ole gps_string ga-emelite uru. Ọ bụrụ na akọwapụtaghị oge mmelite ahụ, njirimara a ga-emelite naanị mgbe achọrọ ya.

mere:

Njikwa Tango

Ugbu a ịkwesịrị ịmepụta koodu ahụ Faịlụ->Mepụta

Njikwa Tango

Site na ndabara, anaghị emepụta Makefile; oge mbụ ịchọrọ ịlele igbe iji mepụta ya. A na-eme nke a ka e wee ghara ihichapụ mgbanwe ndị e mere na ya n'oge ọgbọ ọhụrụ. N'ịbụ onye mepụtara ya otu ugboro ma hazie ya maka ọrụ gị (igodo nchịkọta ndekọ, faịlụ ndị ọzọ), ị nwere ike ichefu ya.

Ugbu a, ka anyị gaa n'ihu na mmemme. pogo na emepụtara anyị ihe ndị a:

Njikwa Tango

Anyị ga-enwe mmasị na NEO6M.cpp & NEO6M.h. Ka anyị were ọmụmaatụ nke onye nrụpụta klaasị:

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
}

Kedu ihe dị na ihe dị mkpa ebe a? Ọrụ init_device() na-ekenye ebe nchekwa maka njirimara anyị: gps_string & gps_array, ma ọ dịghị mkpa. Ihe kacha mkpa ebe a, ndị a bụ okwu:

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

Agaghị etinye ihe niile dị n'ime ngọngọ okwu a na pogo n'oge mmeghari koodu na-esote pụọ!. Ihe niile na-adịghị na blocks ga-abụ! Ndị a bụ ebe anyị nwere ike ime mmemme na ime ndezi nke anyị.

Ugbu a gịnị bụ isi ọrụ klaasị nwere? 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);

Mgbe anyị chọrọ ịgụ àgwà uru gps_string, a ga-akpọ ọrụ ndị a n'usoro a: nko_executed_mgbe niile, read_attr_hardware и agụ_gps_string. Read_gps_string ga-ejupụta gps_string na uru ahụ.

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
}

Nchịkọta

Gaa na folda isi mmalite na:

make

A ga-achịkọta mmemme ahụ na nchekwa ~/DeviceServers.

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

jive

jive

Njikwa Tango

Enwerelarị ngwaọrụ ụfọdụ na nchekwa data, ka anyị mepụta nke anyị ugbu a Dezie-> Mepụta ihe nkesa

Njikwa Tango

Ugbu a, ka anyị gbalịa jikọọ na ya:

Njikwa Tango

Ọ nweghị ihe ga-arụ ọrụ, nke mbụ anyị kwesịrị ime mmemme anyị:

sudo ./NEO6M neo6m -v2

Enwere m ike iji ikike jikọọ na ọdụ ụgbọ mmiri com mgbọrọgwụ-A. v - ịcha osisi.

Ugbu a, anyị nwere ike jikọọ:

Njikwa Tango

Ahịa

Na eserese, ile foto dị mma n'ezie, mana ịchọrọ ihe bara uru karị. Ka anyị dee onye ahịa ga-ejikọ na ngwaọrụ anyị wee were agụ na ya.

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

Otu esi achịkọta:

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

Nsonaazụ:

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

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

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

Anyị nwetara nsonaazụ ya dị ka nlọghachi iwu, na-ewere njirimara nke eriri na ọtụtụ mkpụrụedemede.

zoro

Edere m akụkọ ahụ maka onwe m, n'ihi na mgbe obere oge gasịrị, amalitere m ichefu otu na ihe m ga-eme.

Daalụ maka mmasị gị.

isi: www.habr.com

Tinye a comment