Smachdan tango

Smachdan tango

TANGO?

Is e siostam a th’ ann airson a bhith a’ riaghladh diofar bhathar-cruaidh is bathar-bog.
Tha TANGO an-dràsta a’ toirt taic do àrd-ùrlaran 4: Linux, Windows NT, Solaris agus HP-UX.
An seo bheir sinn cunntas air a bhith ag obair le Linux (Ubuntu 18.04)

Carson a tha e?

A’ sìmpleachadh obair le diofar uidheamachd is bathar-bog.

  • Chan fheum thu smaoineachadh air mar as urrainn dhut dàta a stòradh san stòr-dàta, tha e air a dhèanamh dhut mar-thà.
  • Chan fheumar ach cunntas a thoirt air an uidheamachd airson mothachairean bhòtaidh.
  • Lùghdaich an còd agad gu aon ìre.

Càite am faigh thu?

Cha b’ urrainn dhomh a chuir air bhog bhon chòd stòr; Chleachd mi ìomhaigh deiseil de TangoBox 9.3 airson obrachadh.
Tha an stiùireadh ag innse mar a stàlaicheas tu bho phasganan.

Dè tha e air a dhèanamh suas?

  • geòidh - air a chleachdadh gus stòr-dàta TANGO fhaicinn agus a dheasachadh.
  • POGO - gineadair còd airson frithealaichean inneal TANGO.
  • Astor - manaidsear prògram airson siostam TANGO.

Cha bhi ùidh againn ach anns a’ chiad dà phàirt.

Cànanan prògramadh le taic

  • C
  • C ++
  • Java
  • JavaScript
  • Python
  • matlab
  • LabVIEW

Bha mi ag obair còmhla ris ann am python & c ++. An seo thèid C ++ a chleachdadh mar eisimpleir.

A-nis gluaisidh sinn air adhart gu tuairisgeul air mar a cheanglas tu an inneal gu TANGO agus mar a dh'obraicheas tu leis. Thèid a’ chìs a ghabhail mar eisimpleir GPS neo-6m-0-001:

Smachdan tango

Mar a chì thu san dealbh, bidh sinn a’ ceangal am bòrd ris a’ PC tro UART CP2102. Nuair a tha e ceangailte ri PC, nochdaidh an inneal /dev/ttyUSB[0-N], mar as trice / dev/ttyUSB0.

POGO

A-nis leig leinn a chuir air bhog pogo, agus cruthaich còd cnàimhneach airson a bhith ag obair leis a’ bhòrd againn.

pogo

Smachdan tango

Chruthaich mi an còd mu thràth, cruthaichidh sinn a-rithist e File-> Ùr.

Smachdan tango

Gheibh sinn na leanas:

Smachdan tango

Tha an inneal againn (san àm ri teachd, le inneal bidh sinn a’ ciallachadh am pàirt bathar-bog) falamh agus tha dà òrdugh smachd aige: Stàite & inbhe.

Feumaidh e bhith air a lìonadh leis na feartan riatanach:

Seilbh inneal - luachan bunaiteach a ghluaiseas sinn chun inneal gus a thòiseachadh; airson a ’bhòrd GPS, feumaidh tu ainm a’ bhùird san t-siostam a ghluasad com="/dev/ttyUSB0" agus astar port com àrd = 9600

Òrdughan - òrdughan airson smachd a chumail air an inneal againn; faodar argamaidean agus luach tilleadh a thoirt dhaibh.

  • STIÙIREADH - a 'tilleadh an staid làithreach, bho Stàitean
  • STATUS - a 'tilleadh an inbhe làithreach, is e seo taic an t-sreang ri STIÙIREADH
  • Eagrachadh GPS - tilleadh dotairean sreang ann an cruth DevVarCharArray

An uairsin, suidhich buadhan an uidheim a ghabhas leughadh / sgrìobhadh thuige / bhuaithe.
Feartan Scalar - buadhan sìmplidh (char, sreang, fada, msaa.)
Feartan Spectrum - arrays aon-thaobhach
Feartan ìomhaigh - dà-thaobhach arrays

Stàitean - an staid anns a bheil an inneal againn suidhichte.

  • FOSGAILTE - tha an inneal fosgailte.
  • DÙIN - tha an inneal dùinte.
  • FAILTE - mearachd.
  • ON - faigh dàta bhon inneal.
  • OFF - gun dàta bhon inneal.

Eisimpleir de bhith a’ cur feart ris sreath_gps:

Smachdan tango

Ùine bhòtaidh ùine ann an ms, dè cho tric a thèid an luach gps_string ùrachadh. Mura h-eil an ùine ùrachaidh air a shònrachadh, cha tèid am feart ùrachadh ach ma thèid iarraidh.

Thachair:

Smachdan tango

A-nis feumaidh tu an còd a ghineadh File-> Cruthaich

Smachdan tango

Gu gnàthach, chan eil an Makefile air a chruthachadh; a’ chiad uair a dh’ fheumas tu sùil a thoirt air a’ bhogsa gus a chruthachadh. Tha seo air a dhèanamh gus nach tèid na h-atharrachaidhean a chaidh a dhèanamh air a dhubhadh às rè ginealach ùr. Às deidh dhut a chruthachadh aon uair agus a rèiteachadh airson do phròiseact (clàr iuchraichean cruinneachaidh, faidhlichean a bharrachd), faodaidh tu dìochuimhneachadh mu dheidhinn.

A-nis gluaisidh sinn air adhart gu prògramadh. pogo le gin de na leanas dhuinn:

Smachdan tango

Bidh ùidh againn ann an NEO6M.cpp & NEO6M.h. Gabhamaid eisimpleir de neach-togail clas:

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
}

Dè a tha ann agus dè a tha cudromach an seo? Bidh an gnìomh init_device () a’ riarachadh cuimhne airson na buadhan againn: sreath_gps & gps_array, ach chan eil e cudromach. An rud as cudromaiche an seo, seo na beachdan:

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

Cha tèid a h-uile dad a tha taobh a-staigh a’ bhloc bheachdan seo a thoirt a-steach do pogo rè ath-nuadhachadh còd às deidh sin gluais air falbh!. Bidh a h-uile dad nach eil ann am blocaichean! Is iad sin na h-àiteachan far an urrainn dhuinn na deasachaidhean againn fhèin a phrògramadh agus a dhèanamh.

A-nis dè na prìomh ghnìomhan a tha sa chlas? 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);

Nuair a tha sinn airson luach an fheart a leughadh sreath_gps, thèid na gnìomhan a ghairm san òrdugh a leanas: daonnan_air a chur gu bàs_dubhan, read_attr_hardware и leugh_gps_string. Lìonaidh Read_gps_string gps_string leis an luach.

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
}

Tiomnadh

Rach don phasgan stòr agus:

make

Thèid am prògram a chur ri chèile a-steach don phasgan ~/DeviceServers.

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

geòidh

jive

Smachdan tango

Tha cuid de dh’ innealan san stòr-dàta mu thràth, cruthaichidh sinn an fheadhainn againn a-nis Deasaich-> Cruthaich am frithealaiche

Smachdan tango

A-nis feuchaidh sinn ri ceangal a dhèanamh ris:

Smachdan tango

Chan obraich dad, an toiseach feumaidh sinn ar prògram a ruith:

sudo ./NEO6M neo6m -v2

Chan urrainn dhomh ach ceangal ris a’ phort com le còraichean freumh-A. v - ìre clàraidh.

A-nis is urrainn dhuinn ceangal a dhèanamh:

Smachdan tango

Luchd-ceannach

Ann an grafaigean, tha coimhead air dealbhan gu cinnteach math, ach feumaidh tu rudeigin nas fheumail. Sgrìobhamaid neach-dèiligidh a cheanglas ris an inneal againn agus a bheir leughaidhean bhuaithe.

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

Ciamar a chur ri chèile:

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

Toradh:

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

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

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

Fhuair sinn an toradh mar thilleadh àithne, a’ gabhail buadhan sreang agus sreath de charactaran.

iomraidhean

Sgrìobh mi an artaigil dhomh fhìn, oir an dèidh greis bidh mi a 'tòiseachadh a' dìochuimhneachadh ciamar agus dè a nì mi.

Tapadh leibh airson ur aire.

Source: www.habr.com

Cuir beachd ann