Nā Mana Tango

Nā Mana Tango

Heaha TANGO?

He ʻōnaehana no ka hoʻokele ʻana i nā ʻano lako like ʻole a me nā lako polokalamu.
Kākoʻo ʻo TANGO i kēia manawa i nā paepae 4: Linux, Windows NT, Solaris a me HP-UX.
Maanei e wehewehe mākou i ka hana ʻana me Linux (Ubuntu 18.04)

No ke aha ia?

Hoʻomaʻamaʻa i ka hana me nā lako like ʻole a me nā lako polokalamu.

  • ʻAʻole pono ʻoe e noʻonoʻo e pili ana i ka mālama ʻana i ka ʻikepili i ka waihona, ua hana ʻia no ʻoe.
  • He mea pono wale nō e wehewehe i ke ʻano o nā ʻike koho balota.
  • Hoʻemi i kāu code a pau i hoʻokahi maʻamau.

Aia e loaʻa

ʻAʻole hiki iaʻu ke hoʻokuʻu iā ia mai ke kumu kumu; Ua hoʻohana au i kahi kiʻi mākaukau o TangoBox 9.3 e hana.
Hōʻike nā ʻōlelo aʻoaʻo pehea e hoʻouka ai mai nā pūʻolo.

He aha ia mea?

  • JIVE — hoʻohana ʻia e nānā a hoʻoponopono i ka waihona TANGO.
  • POGO — mea hoʻoheheʻe code no nā kikowaena mea TANGO.
  • Astor — luna polokalamu no ka ʻōnaehana TANGO.

E hoihoi wale mākou i nā mea mua ʻelua.

Kākoʻo ʻia nā ʻōlelo papahana

  • C
  • C ++
  • Iawa
  • pio ka
  • Python
  • matlab
  • LabVview

Ua hana au me ia ma python & c++. Maanei e hoʻohana ʻia ʻo C++ ma ke ʻano he laʻana.

I kēia manawa, e neʻe kākou i ka wehewehe ʻana i ke ʻano o ka hoʻopili ʻana i ka hāmeʻa iā TANGO a pehea e hana pū ai me ia. E lawe ʻia ka uku ma ke ʻano he laʻana GPS neo-6m-0-001:

Nā Mana Tango

E like me kāu e ʻike ai ma ke kiʻi, hoʻopili mākou i ka papa i ka PC ma o UART CP2102. Ke hoʻohui ʻia i kahi PC, ʻike ʻia ka hāmeʻa /dev/ttyUSB[0-N], maʻamau /dev/ttyUSB0.

POGO

E hoʻomaka kākou pogo, a hoʻopuka i ka code skeleton no ka hana ʻana me kā mākou papa.

pogo

Nā Mana Tango

Ua hana mua au i ke code, e hana hou kāua Waihona-> Hou.

Nā Mana Tango

Loaʻa iā mākou kēia mau mea:

Nā Mana Tango

ʻO kā mākou mea hana (i ka wā e hiki mai ana, ma ke ʻano o ka ʻaoʻao e manaʻo mākou ʻo ka ʻāpana polokalamu) ʻaʻohe mea a loaʻa ʻelua mau kauoha mana: Moku'āina & kūlana.

Pono e hoʻopiha ʻia me nā ʻano pono:

Mea lako - nā waiwai paʻamau a mākou e hoʻoili ai i ka hāmeʻa e hoʻomaka ai; no ka papa GPS, pono ʻoe e hoʻololi i ka inoa o ka papa ma ka ʻōnaehana com="/dev/ttyUSB0" a me ka māmā puka com baudrade=9600

Nā kauoha - nā kauoha e hoʻomalu i kā mākou hāmeʻa; hiki ke hāʻawi ʻia i nā hoʻopaʻapaʻa a me ka waiwai hoʻihoʻi.

  • MOKU'ĀINA - hoʻihoʻi i ke kūlana o kēia manawa, mai States
  • kūlana - hoʻihoʻi i ke kūlana o kēia manawa, ʻo ia ka hoʻokō o ke kaula MOKU'ĀINA
  • GPSArray - hoʻi GPS kaula i ke ano DevVarCharArray

A laila, hoʻonohonoho i nā ʻano mea hiki ke heluhelu a kākau ʻia iā ia.
Nā ʻano Scalar - nā ʻano maʻalahi (char, string, long, etc.)
Nā ʻano kikoʻī - nā papa kuhikuhi hoʻokahi
Nā ʻano kiʻi - nā papa hana ʻelua

States - ka moku'āina i loaʻa ai kā mākou mea hana.

  • hamama — ua hamama ka mea hana.
  • kokoke - ua pani ʻia ka mea hana.
  • HAULE - kuhi hewa.
  • ON - loaʻa ka ʻikepili mai ka mea hana.
  • aku - ʻaʻohe ʻikepili mai ka hāmeʻa.

Laʻana o ka hoʻohui ʻana i kahi ʻano gps_string:

Nā Mana Tango

Kau koho manawa i ms, ehia mau manawa e hoʻonui ʻia ka waiwai gps_string. Inā ʻaʻole i kuhikuhi ʻia ka manawa hou, e hōʻano hou ʻia ke ʻano ma ke noi wale nō.

Ua hiki mai:

Nā Mana Tango

I kēia manawa pono ʻoe e hana i ke code Waihona-> Hana

Nā Mana Tango

Ma ka maʻamau, ʻaʻole i hana ʻia ka Makefile; ʻo ka manawa mua ʻoe e nānā i ka pahu e hana ai. Hana ʻia kēia i ʻole e holoi ʻia nā hoʻololi i hana ʻia i ka wā o kahi hanauna hou. Ma hope o ka hana ʻana i hoʻokahi manawa a hoʻonohonoho iā ia no kāu papahana (kāinoa i nā kī hōʻuluʻulu, nā faila hou aku), hiki iā ʻoe ke poina iā ia.

I kēia manawa e neʻe kākou i ka hoʻolālā. pogo me ka hana ʻana i kēia mau mea no mākou:

Nā Mana Tango

E hoihoi mākou iā NEO6M.cpp & NEO6M.h. E lawe kākou i kekahi laʻana o ka mea kūkulu papa:

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
}

He aha ka mea ma laila a he aha ka mea nui ma ʻaneʻi? Hāʻawi ka hana init_device () i ka hoʻomanaʻo no kā mākou mau ʻano: gps_string & gps_array, akā ʻaʻole ia he mea nui. ʻO ka mea nui maʻaneʻi, eia nā ʻōlelo:

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

ʻAʻole e hoʻokomo ʻia nā mea a pau i loko o kēia poloka manaʻo i ka pogo i ka wā o ka hoʻoponopono hou ʻana o nā code nee aku !. ʻO nā mea a pau ʻaʻole i loko o nā poloka! ʻO kēia nā wahi e hiki ai iā mākou ke papahana a hana i kā mākou hoʻoponopono ponoʻī.

He aha nā hana nui i loko o ka papa? 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);

Ke makemake mākou e heluhelu i ka waiwai waiwai gps_string, e kapa ʻia nā hana ma ke ʻano penei: mau_hoʻokō_hook, read_attr_hardware и heluhelu_gps_string. E hoʻopiha ka Read_gps_string i ka gps_string me ka waiwai.

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
}

Hoʻohui

E hele i ka waihona kumu a:

make

E hōʻuluʻulu ʻia ka papahana i loko o ka waihona ~/DeviceServers.

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

JIVE

jive

Nā Mana Tango

Aia kekahi mau mea i loko o ka waihona, e hana mākou i kā mākou Hoʻoponopono->E hana i ke kikowaena

Nā Mana Tango

I kēia manawa e hoʻāʻo kāua e hoʻopili iā ia:

Nā Mana Tango

ʻAʻohe mea e hana, pono mākou e holo i kā mākou papahana:

sudo ./NEO6M neo6m -v2

Hiki iaʻu ke hoʻopili wale i ka com port me nā kuleana aa-A. v — pae logging.

I kēia manawa hiki iā mākou ke hoʻohui:

Nā Mana Tango

Mea kūʻai aku

Ma nā kiʻi kiʻi, ʻoiaʻiʻo ka maikaʻi o ka nānā ʻana i nā kiʻi, akā pono ʻoe i kahi mea e pono ai. E kākau kāua i kahi mea kūʻai aku e hoʻopili i kā mākou hāmeʻa a lawe i nā heluhelu mai ia mea.

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

Pehea e hōʻuluʻulu ai:

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

Hualoaʻa:

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

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

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

Loaʻa iā mākou ka hopena ma ke ʻano he kauoha hoʻihoʻi, lawe i nā ʻano o kahi kaula a me kahi ʻano o nā huaʻōlelo.

kūmole

Ua kākau wau i ka ʻatikala noʻu iho, no ka mea ma hope o kekahi manawa hoʻomaka wau e poina pehea a pehea e hana ai.

Mahalo oe no kou noonoo.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka