டேங்கோ கட்டுப்பாடுகள்

டேங்கோ கட்டுப்பாடுகள்

என்ன டேங்கோ?

இது பல்வேறு வன்பொருள் மற்றும் மென்பொருளை நிர்வகிப்பதற்கான ஒரு அமைப்பாகும்.
TANGO தற்போது 4 இயங்குதளங்களை ஆதரிக்கிறது: Linux, Windows NT, Solaris மற்றும் HP-UX.
லினக்ஸ் (உபுண்டு 18.04) உடன் பணிபுரிவதை இங்கே விவரிப்போம்.

இது எதற்காக?

பல்வேறு உபகரணங்கள் மற்றும் மென்பொருளுடன் பணியை எளிதாக்குகிறது.

  • தரவுத்தளத்தில் தரவை எவ்வாறு சேமிப்பது என்பது பற்றி நீங்கள் சிந்திக்க வேண்டியதில்லை, இது உங்களுக்காக ஏற்கனவே செய்யப்பட்டுள்ளது.
  • வாக்குப்பதிவு சென்சார்களுக்கான பொறிமுறையை விவரிக்க மட்டுமே அவசியம்.
  • உங்கள் எல்லா குறியீட்டையும் ஒரே தரநிலைக்குக் குறைக்கிறது.

எங்கே கிடைக்கும்?

மூலக் குறியீட்டிலிருந்து என்னால் அதைத் தொடங்க முடியவில்லை; வேலை செய்ய TangoBox 9.3 இன் ஆயத்த படத்தைப் பயன்படுத்தினேன்.
தொகுப்புகளிலிருந்து எவ்வாறு நிறுவுவது என்பதை அறிவுறுத்தல்கள் விவரிக்கின்றன.

இது எதைக் கொண்டுள்ளது?

  • ஜீவ் - TANGO தரவுத்தளத்தைப் பார்க்கவும் திருத்தவும் பயன்படுகிறது.
  • போகோ - TANGO சாதன சேவையகங்களுக்கான குறியீடு ஜெனரேட்டர்.
  • ஆஸ்டர் - TANGO அமைப்பின் நிரல் மேலாளர்.

முதல் இரண்டு கூறுகளில் மட்டுமே நாங்கள் ஆர்வமாக இருப்போம்.

ஆதரிக்கப்படும் நிரலாக்க மொழிகள்

  • C
  • சி ++
  • ஜாவா
  • ஜாவா
  • பைதான்
  • மாட்லாப்
  • லேப்வியூ

நான் அதனுடன் python & c++ இல் வேலை செய்தேன். இங்கே C++ உதாரணமாகப் பயன்படுத்தப்படும்.

சாதனத்தை TANGO உடன் எவ்வாறு இணைப்பது மற்றும் அதனுடன் எவ்வாறு வேலை செய்வது என்பது பற்றிய விளக்கத்திற்கு இப்போது செல்லலாம். கட்டணம் ஒரு உதாரணமாக எடுத்துக் கொள்ளப்படும் ஜிபிஎஸ் நியோ-6மீ-0-001:

டேங்கோ கட்டுப்பாடுகள்

படத்தில் நீங்கள் பார்க்க முடியும் என, UART CP2102 வழியாக பலகையை PC உடன் இணைக்கிறோம். கணினியுடன் இணைக்கப்பட்டால், சாதனம் தோன்றும் /dev/ttyUSB[0-N], பொதுவாக /dev/ttyUSB0.

போகோ

இப்போது துவக்குவோம் போகோ, மற்றும் எங்கள் குழுவுடன் பணிபுரிய எலும்புக்கூடு குறியீட்டை உருவாக்கவும்.

pogo

டேங்கோ கட்டுப்பாடுகள்

நான் ஏற்கனவே குறியீட்டை உருவாக்கினேன், அதை மீண்டும் உருவாக்குவோம் கோப்பு->புதியது.

டேங்கோ கட்டுப்பாடுகள்

பின்வருவனவற்றைப் பெறுகிறோம்:

டேங்கோ கட்டுப்பாடுகள்

எங்கள் சாதனம் (எதிர்காலத்தில், சாதனத்தின் மூலம் மென்பொருள் பகுதியைக் குறிக்கும்) காலியாக உள்ளது மற்றும் இரண்டு கட்டுப்பாட்டு கட்டளைகளைக் கொண்டுள்ளது: அரசு & நிலைமை.

இது தேவையான பண்புகளுடன் நிரப்பப்பட வேண்டும்:

சாதனத்தின் சொத்து - இயல்புநிலை மதிப்புகள் சாதனத்தை துவக்குவதற்கு மாற்றுவோம்; ஜிபிஎஸ் போர்டுக்கு, நீங்கள் கணினியில் பலகையின் பெயரை மாற்ற வேண்டும் com="/dev/ttyUSB0" மற்றும் காம் போர்ட் வேகம் பாட்ரேட்=9600

கட்டளைகள் - எங்கள் சாதனத்தை கட்டுப்படுத்த கட்டளைகள்; அவை வாதங்கள் மற்றும் திரும்ப மதிப்பு கொடுக்கப்படலாம்.

  • நிலை - தற்போதைய நிலையைத் தருகிறது மாநிலங்களில்
  • நிலை - தற்போதைய நிலையை வழங்குகிறது, இது சரத்தின் நிரப்பியாகும் நிலை
  • GPSArray - திரும்புகிறது ஜிபிஎஸ் வடிவத்தில் சரம் 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, செயல்பாடுகள் பின்வரும் வரிசையில் அழைக்கப்படும்: எப்போதும்_எக்ஸிகியூட்_ஹூக், read_attr_hardware и படிக்க_ஜிபிஎஸ்_சரம். 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

நான் காம் போர்ட்டுடன் உரிமைகளுடன் மட்டுமே இணைக்க முடியும் ரூட்-ஏ. 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

கருத்தைச் சேர்