Kadali Tango

Kadali Tango

naon TANGO?

Éta mangrupikeun sistem pikeun ngatur rupa-rupa hardware sareng parangkat lunak.
TANGO ayeuna ngadukung 4 platform: Linux, Windows NT, Solaris sareng HP-UX.
Di dieu urang bakal ngajelaskeun gawé bareng Linux Ubuntu (Ubuntu 18.04)

Keur naon eta?

Simplifies gawé kalawan sagala rupa parabot jeung software.

  • Anjeun teu kedah mikir ngeunaan kumaha carana nyimpen data dina database, éta geus dipigawé pikeun anjeun.
  • Ieu ngan perlu ngajelaskeun mékanisme pikeun sensor polling.
  • Ngurangan sadaya kode anjeun ka hiji standar.

Dimana dibere

Abdi henteu tiasa ngaluncurkeun éta tina kode sumber; Kuring nganggo gambar siap-siap TangoBox 9.3 pikeun damel.
Parentah ngajelaskeun kumaha carana masang tina bungkusan.

Naon eusina?

  • JIVE - dipaké pikeun nempo jeung ngédit database TANGO.
  • POGO - generator kode pikeun server alat TANGO.
  • Astor - manajer program pikeun sistem TANGO.

Urang bakal museurkeun ukur dina dua komponén munggaran.

Dirojong basa programming

  • C
  • C ++
  • Jawa
  • JavaScript
  • Python
  • matlab
  • LabVIEW

Kuring digawé kalayan eta dina python & c ++. Di dieu C ++ bakal dipaké salaku conto.

Ayeuna hayu urang ngaléngkah ka pedaran kumaha nyambungkeun alat ka TANGO jeung kumaha carana dianggo kalayan eta. fee bakal dicokot salaku conto GPS neo-6m-0-001:

Kadali Tango

Sakumaha anjeun tiasa tingali dina gambar, urang sambungkeun dewan ka PC via UART CP2102. Lamun disambungkeun ka PC, alat nembongan /dev/ttyUSB[0-N], biasana /dev/ttyUSB0.

POGO

Ayeuna hayu urang ngajalankeun pogo, sarta ngahasilkeun kode rangka pikeun gawé bareng dewan urang.

pogo

Kadali Tango

Kuring geus nyieun kode, hayu urang nyieun deui File-> Anyar.

Kadali Tango

Urang meunang di handap:

Kadali Tango

Alat kami (dina mangsa nu bakal datang, ku alat kami bakal hartosna bagian software) kosong tur boga dua paréntah kontrol: nagara & status.

Éta kedah dieusi ku atribut anu diperyogikeun:

Harta alat - nilai standar anu kami transfer ka alat pikeun ngamimitianana; pikeun papan GPS, anjeun kedah nransper nami dewan dina sistem com = "/ dev / ttyUSB0" jeung speed port com baudrade = 9600

Paréntah - Paréntah pikeun ngadalikeun alat urang; aranjeunna tiasa dipasihan argumen sareng nilai mulang.

  • kaayaan - mulih kaayaan ayeuna, ti Amérika
  • status - mulih status ayeuna, ieu pelengkap string pikeun kaayaan
  • GPSArray - mulih GPS string dina bentuk DevVarCharArray

Salajengna, setel atribut alat nu bisa dibaca/ditulis ka/ti eta.
Atribut skalar - atribut basajan (char, string, panjang, jsb)
Atribut spéktrum - arrays hiji diménsi
Atribut Gambar - arrays dua diménsi

Amérika - kaayaan dimana alat urang aya.

  • OPEN — alatna dibuka.
  • nutup - alat geus ditutup.
  • GAGAL - kasalahan.
  • ON - nampi data tina alat.
  • OFF - euweuh data ti alat.

Conto nambahkeun atribut gps_string:

Kadali Tango

Periode polling waktos dina ms, sabaraha sering nilai gps_string bakal diropéa. Lamun waktu update teu dieusian, atribut bakal diropéa ngan kana pamundut.

Kajadian:

Kadali Tango

Ayeuna anjeun kedah ngahasilkeun kode File-> Generate

Kadali Tango

Sacara standar, Makefile henteu dihasilkeun; pertama kali anjeun kedah mariksa kotak pikeun nyiptakeunana. Hal ieu dilakukeun supados parobihan anu dilakukeun kana éta henteu dipupus salami generasi énggal. Saatos nyiptakeunana sakali sareng ngonpigurasikeunana pikeun proyék anjeun (ngadaptarkeun konci kompilasi, file tambahan), anjeun tiasa hilap ngeunaan éta.

Ayeuna hayu urang ngaléngkah ka programming. pogo kalayan ngahasilkeun ieu pikeun urang:

Kadali Tango

Urang bakal museurkeun NEO6M.cpp & NEO6M.h. Hayu urang nyandak conto constructor kelas:

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
}

Naon anu aya sareng naon anu penting di dieu? The init_device () fungsi allocates memori pikeun atribut kami: gps_string & gps_array, tapi teu penting. Hal pangpentingna di dieu, ieu komentar:

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

Sadayana anu aya di jero blok koméntar ieu moal kalebet dina pogo salami regenerasi kode salajengna ngajauhan!. Sagalana nu teu di blok bakal! Ieu mangrupikeun tempat dimana urang tiasa program sareng ngadamel éditan urang sorangan.

Ayeuna naon fungsi utama kelas ngandung? 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);

Nalika urang hoyong maca nilai atribut gps_string, fungsi bakal disebut dina urutan ieu: always_executed_hook, read_attr_hardware и baca_gps_string. Read_gps_string bakal ngeusian gps_string kalayan nilai.

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
}

Nyusun

Pindah ka folder sumber sareng:

make

Program bakal disusun kana folder ~/DeviceServers.

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

JIVE

jive

Kadali Tango

Geus aya sababaraha alat dina database, hayu urang ayeuna nyieun urang Edit-> Jieun Server

Kadali Tango

Ayeuna hayu urang coba sambungkeun ka éta:

Kadali Tango

Henteu aya anu tiasa dianggo, mimitina urang kedah ngajalankeun program kami:

sudo ./NEO6M neo6m -v2

Kuring ukur bisa nyambung ka port com kalawan hak akar-A. v - tingkat logging.

Ayeuna urang tiasa nyambungkeun:

Kadali Tango

Palanggan

Dina grafik, ningali gambar pasti saé, tapi anjeun peryogi anu langkung mangpaat. Hayu urang nyerat klien anu bakal nyambung ka alat urang sareng nyandak bacaan tina éta.

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

Kumaha nyusun:

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

Hasil:

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

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

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

Kami ngagaduhan hasilna salaku paréntah mulang, nyandak atribut senar sareng sakumpulan karakter.

rujukan

Kuring nulis artikel pikeun kuring sorangan, sabab sanggeus sababaraha waktu kuring mimiti poho kumaha jeung naon nu kudu.

Hatur nuhun pikeun perhatian Anjeun.

sumber: www.habr.com

Tambahkeun komentar