د تنګو کنټرول

د تنګو کنټرول

څه ټانګو?

دا د مختلف هارډویر او سافټویر اداره کولو سیسټم دی.
TANGO اوس مهال د 4 پلیټ فارمونو ملاتړ کوي: لینکس، وینډوز NT، سولاریس او HP-UX.
دلته به موږ د لینکس سره کار کولو تشریح کړو (اوبنټو 18.04)

دا د څه لپاره دی؟

د مختلف تجهیزاتو او سافټویر سره کار ساده کوي.

  • تاسو اړتیا نلرئ په ډیټابیس کې د معلوماتو ذخیره کولو څرنګوالي په اړه فکر وکړئ ، دا دمخه ستاسو لپاره ترسره شوی.
  • دا یوازې اړینه ده چې د رایې ورکولو سینسرونو میکانیزم تشریح کړئ.
  • ستاسو ټول کوډ یو معیار ته کموي.

چیرته ترلاسه کول؟

زه نشم کولی دا د سرچینې کوډ څخه پیل کړم؛ ما د کار کولو لپاره د TangoBox 9.3 چمتو شوی عکس کارولی.
لارښوونې تشریح کوي چې څنګه د کڅوړو څخه نصب کړئ.

له څه شي څخه جوړه ده؟

  • ژوندی - د TANGO ډیټابیس لیدو او سمولو لپاره کارول کیږي.
  • POGO - د TANGO وسیلې سرورونو لپاره کوډ جنریټر.
  • استور - د TANGO سیسټم لپاره د پروګرام مدیر.

موږ به یوازې په لومړیو دوو برخو کې دلچسپي ولرو.

د پروګرام کولو ژبې ملاتړ شوې

  • C
  • C ++
  • جاوا
  • د جاواسکرېپټ
  • Python
  • متلاب
  • لابراتوار

ما د دې سره په python او c++ کې کار وکړ. دلته C++ به د مثال په توګه وکارول شي.

اوس راځئ چې تشریح ته لاړ شو چې څنګه وسیله له TANGO سره وصل کړو او څنګه ورسره کار وکړو. فیس به د مثال په توګه واخیستل شي GPS neo-6m-0-001:

د تنګو کنټرول

لکه څنګه چې تاسو په عکس کې لیدلی شئ، موږ بورډ د UART CP2102 له لارې کمپیوټر ته وصل کوو. کله چې د کمپیوټر سره وصل شي، وسیله ښکاري /dev/ttyUSB[0-N]، معمولا /dev/ttyUSB0.

POGO

اوس راځئ چې پیل وکړو پوګو، او زموږ د بورډ سره د کار کولو لپاره د کنکال کوډ رامینځته کړئ.

pogo

د تنګو کنټرول

ما لا دمخه کوډ جوړ کړی، راځئ چې بیا یې جوړ کړو دوتنه->نوی.

د تنګو کنټرول

موږ لاندې ترلاسه کوو:

د تنګو کنټرول

زموږ وسیله (په راتلونکي کې ، د وسیلې په واسطه به موږ د سافټویر برخه وي) خالي ده او د کنټرول دوه قوماندې لري: د بهرنیو چارو & وضعیت.

دا باید د اړینو ځانګړتیاو سره ډک شي:

د وسیلې ملکیت - ډیفالټ ارزښتونه چې موږ یې د پیل کولو لپاره وسیله ته لیږدوو؛ د GPS بورډ لپاره، تاسو اړتیا لرئ په سیسټم کې د بورډ نوم انتقال کړئ com="/dev/ttyUSB0" او com پورټ سرعت باډراډ = 9600

بولندویان - زموږ د وسیلې کنټرول کولو امرونه؛ دوی ته دلیلونه او د بیرته ستنیدو ارزښت ورکول کیدی شي.

  • ریاست - اوسنی حالت بیرته راګرځوي، څخه هیوادونه
  • حالت - اوسنی حالت بیرته راګرځوي، دا د تار تکمیل دی ریاست
  • GPSArray - بیرته راګرځي gps تار په بڼه DevVarCharArray

بیا ، د وسیلې ځانګړتیاوې تنظیم کړئ چې لوستل کیدی شي / له هغې څخه لیکل کیدی شي.
د سکالر ځانګړتیاوې - ساده صفات (چار، تار، اوږد، او نور)
د سپیکٹرم ځانګړتیاوې - یو اړخیز سرې
د انځور ځانګړتیاوې - دوه اړخیزه صفونه

هیوادونه - هغه حالت چې زموږ وسیله موقعیت لري.

  • د پرانيستو - وسیله خلاصه ده.
  • نژدې - وسیله بنده ده.
  • ناکامه - تېروتنه.
  • ON - د وسیلې څخه معلومات ترلاسه کړئ.
  • پړاو - د آلې څخه هیڅ معلومات نشته.

د ځانګړتیا اضافه کولو بیلګه gps_string:

د تنګو کنټرول

د رای ورکولو موده وخت په ms کې، څو ځله د gps_string ارزښت به تازه شي. که د تازه کولو وخت مشخص شوی نه وي، خاصیت به یوازې د غوښتنې سره سم تازه شي.

پیښه شوه:

د تنګو کنټرول

اوس تاسو اړتیا لرئ کوډ تولید کړئ فایل -> جوړ کړئ

د تنګو کنټرول

په ډیفالټ ډول ، میک فایل نه رامینځته کیږي؛ لومړی ځل چې تاسو اړتیا لرئ د دې رامینځته کولو لپاره بکس چیک کړئ. دا د دې لپاره ترسره کیږي چې پدې کې رامینځته شوي بدلونونه د نوي نسل په جریان کې حذف نشي. د دې یوځل رامینځته کولو او ستاسو د پروژې لپاره یې تنظیم کړئ (د تالیف کیلي راجستر کړئ ، اضافي فایلونه) ، تاسو کولی شئ د هغې په اړه هیر کړئ.

اوس راځئ چې پروګرام کولو ته لاړ شو. پوګو زموږ لپاره لاندې تولید کړي:

د تنګو کنټرول

موږ به د NEO6M.cpp او NEO6M.h سره علاقه ولرو. راځئ چې د ټولګي جوړونکي مثال واخلو:

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
}

دلته څه دي او دلته څه مهم دي؟ init_device() فنکشن زموږ د ځانګړتیاوو لپاره حافظه تخصیص کوي: gps_string & gps_arrayخو دا مهمه نه ده. دلته ترټولو مهم شی، دا تبصرې دي:

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

هر څه چې د دې تبصرې بلاک کې دننه دي د کوډ بیا رغولو په جریان کې به په پوګو کې شامل نشي لاړ شه!. هر څه چې په بلاکونو کې نه وي هغه به وي! دا هغه ځایونه دي چیرې چې موږ کولی شو برنامه وکړو او خپل ترمیمونه وکړو.

اوس په ټولګي کې اصلي دندې کومې دي؟ 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);

کله چې موږ غواړو د صفت ارزښت ولولو gps_string، دندې به په لاندې ترتیب سره ویل کیږي: تل_اعدام شوی_هوک, لوستل_attr_hardware и لوستل_gps_string. Read_gps_string به د ارزښت سره gps_string ډک کړي.

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
}

تالیف

د سرچینې فولډر ته لاړ شئ او:

make

برنامه به د ~/DeviceServers فولډر کې تالیف شي.

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

ژوندی

jive

د تنګو کنټرول

په ډیټابیس کې لا دمخه ځینې وسایل شتون لري، راځئ چې اوس خپل جوړ کړو ایډیټ -> سرور جوړ کړئ

د تنګو کنټرول

اوس راځئ چې د هغې سره د نښلولو هڅه وکړو:

د تنګو کنټرول

هیڅ شی به کار ونکړي، لومړی موږ باید خپل پروګرام پرمخ بوځو:

sudo ./NEO6M neo6m -v2

زه یوازې کولی شم د حقوقو سره د com پورټ سره وصل کړم د ريښي-ا. v - د ننوتلو کچه.

اوس موږ کولی شو وصل کړو:

د تنګو کنټرول

پیرودونکی

په ګرافیک کې، د انځورونو لیدل یقینا ښه دي، مګر تاسو یو څه نور ګټور ته اړتیا لرئ. راځئ یو مراجع ولیکئ چې زموږ وسیله سره وصل شي او له هغې څخه لوستل واخلي.

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

څنګه تالیف کول:

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

پایلې:

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

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

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

موږ پایله د کمانډ بیرته راستنیدو په توګه ترلاسه کړه ، د تار ځانګړتیاوې او د حروفونو لړۍ په اخیستلو.

مرجع

ما مقاله د خپل ځان لپاره لیکلې، ځکه چې یو څه وروسته زه هیر کړم چې څنګه او څه وکړم.

تاسو د پاملرنې څخه مو مننه.

سرچینه: www.habr.com

Add a comment