የታንጎ መቆጣጠሪያዎች

የታንጎ መቆጣጠሪያዎች

ምን ታንጎ?

ይህ የተለያዩ መሳሪያዎችን እና ሶፍትዌሮችን ለማስተዳደር የሚያስችል ስርዓት ነው።
ታንጎ በአሁኑ ጊዜ 4 መድረኮችን ይደግፋል፦ Linux, Windows ኤንቲ፣ ሶላሪስ እና ኤችፒ-ኤክስ።
እዚህ ጋር ስራውን እንገልፃለን Linux(Ubuntu 18.04)

ለምን ዓላማ ነው?

ከተለያዩ መሳሪያዎች እና ሶፍትዌሮች ጋር ስራን ቀላል ያደርገዋል።

  • በመረጃ ቋቱ ውስጥ እንዴት ውሂብ ማከማቸት እንደሚቻል ማሰብ አያስፈልግዎትም፣ አስቀድሞ ለእርስዎ ተከናውኗል።
  • የምርጫ ዳሳሾችን ዘዴ መግለጽ ብቻ አስፈላጊ ነው።
  • ሁሉንም ኮድዎን ወደ አንድ መደበኛ ያጣምራል።

የት እንደሚያገኙ?

ከምንጭ ኮዱ ማስኬድ ስላልቻልኩ ለስራ ዝግጁ የሆነ የታንጎቦክስ 9.3 ምስል ተጠቀምኩ።
መመሪያዎቹ ከጥቅሎች እንዴት እንደሚጫኑ ያብራራሉ።

ምንን ያካትታል?

  • ቀጥታ — የTANGO ዳታቤዝን ለማየት እና ለማርትዕ ይጠቅማል።
  • POGO — ለ TANGO መሣሪያ አገልጋዮች የኮድ ጀነሬተር።
  • አስትሮ — ለ TANGO ስርዓት የሶፍትዌር አስተዳዳሪ።

በመጀመሪያዎቹ ሁለት ክፍሎች ላይ ብቻ ፍላጎት እናሳያለን።

የሚደገፉ የፕሮግራሚንግ ቋንቋዎች

  • C
  • በ C ++
  • ጃቫ
  • ጃቫስክሪፕት
  • ዘንዶ
  • ማቲብ
  • LabVIEW

በፓይቶን እና በC++ ውስጥ ከእሱ ጋር ሠርቻለሁ። እዚህ፣ C++ እንደ ምሳሌ ጥቅም ላይ ይውላል።

አሁን መሳሪያውን ከታንጎ ጋር እንዴት ማገናኘት እንደሚቻል እና እንዴት እንደሚሰራው ወደ ገለጻው እንሸጋገር። ሰሌዳውን እንደ ምሳሌ እንጠቀማለን። ጂፒኤስ ኒዮ-6m-0-001:

የታንጎ መቆጣጠሪያዎች

በሥዕሉ ላይ እንደሚታየው፣ ሰሌዳውን ከፒሲው ጋር በUART CP2102 በኩል እናገናኛለን። ከፒሲው ጋር ሲገናኝ መሣሪያው ይታያል። /dev/ttyUSB[0-N], አብዛኛውን ጊዜ /dev/ttyUSB0.

POGO

አሁን እንሩጥ ፖጎእና ከቦርዱ ጋር ለመስራት የአጽም ኮድ እናመነጫለን።

pogo

የታንጎ መቆጣጠሪያዎች

ኮዱን አስቀድሜ ፈጥሬዋለሁ፣ እስቲ እንደገና እንፍጠር ፋይል->አዲስ.

የታንጎ መቆጣጠሪያዎች

የሚከተለውን እናገኛለን:

የታንጎ መቆጣጠሪያዎች

መሳሪያችን (ከዚህ በኋላ "መሳሪያ" የሚለው ቃል የሶፍትዌሩን ክፍል የሚያመለክት ነው) ባዶ ሲሆን ሁለት የቁጥጥር ትዕዛዞች አሉት፡ ሁኔታ & ሁናቴ.

በሚያስፈልጉት ባህሪያት መሞላት አለበት፡-

የመሣሪያ ንብረት — መሣሪያውን ለማስጀመር ወደ መሣሪያው የምናስተላልፋቸው ነባሪ እሴቶች፤ ለጂፒኤስ ቦርድ፣ የቦርዱን ስም በስርዓቱ ውስጥ ማስተላለፍ ያስፈልግዎታል። com="/dev/ttyUSB0" እና የCOM ወደብ ፍጥነት ባውድራድ=9600

ትዕዛዞች — መሣሪያችንን ለመቆጣጠር ትዕዛዞች፣ ክርክሮች እና የመመለሻ እሴት ሊሰጡ ይችላሉ።

  • STATE - የአሁኑን ሁኔታ ይመልሳል፣ ከ ስቴትስ
  • ሁኔታ - የአሁኑን ሁኔታ ይመልሳል፣ ይህ የሕብረቁምፊ ማሟያ ነው ለ STATE
  • የጂፒኤስ አራይ - ተመላሾች አቅጣጫ መጠቆሚያ በቅጹ ውስጥ ያለ መስመር DevVarCharArray

ቀጥሎ፣ ከእሱ ጋር ሊነበቡ/ሊጻፉ/ሊጻፉ የሚችሉ የመሣሪያ ባህሪያት ተገልጸዋል።
የስኬላር ባህሪያት - ቀላል ባህሪያት (ቁምፊ፣ ሕብረቁምፊ፣ ረጅም፣ ወዘተ)
የስፔክትረም ባህሪያት - ባለ አንድ-ልኬት ድርድሮች
የምስል ባህሪያት - ባለ ሁለት ገጽታ ድርድሮች

ስቴትስ — መሣሪያችን የሚገኝበት ሁኔታ።

  • ክፈት - መሣሪያው ክፍት ነው።
  • ገጠመ - መሣሪያው ተዘግቷል።
  • ሽንፈት - ስህተት።
  • ON — ከመሳሪያው ውሂብ እንቀበላለን።
  • ጠፍቷል - ከመሳሪያው ምንም ውሂብ የለም።

ባህሪን የመጨመር ምሳሌ የጂፒኤስ_ስትሪንግ:

የታንጎ መቆጣጠሪያዎች

የሕዝብ አስተያየት መስጫ ጊዜ የጂፒኤስ_ስትሪንግ እሴት በምን ያህል ጊዜ እንደሚዘመን የሚያሳይ ጊዜ በሚሊሰከንዶች (ሚሴንዶች)። የዝማኔው ጊዜ ካልተገለጸ፣ ባህሪው የሚዘመነው ሲጠየቅ ብቻ ነው።

ተከሰተ፡-

የታንጎ መቆጣጠሪያዎች

አሁን ኮዱን መፍጠር ያስፈልግዎታል ፋይል -> ፍጠር

የታንጎ መቆጣጠሪያዎች

በነባሪነት፣ Makefile አይፈጠርም፤ ለመጀመሪያ ጊዜ ለመፍጠር ሳጥኑ ላይ ምልክት ማድረግ ያስፈልግዎታል። ይህ የሚደረገው አዲስ ትውልድ ሲሰራ በእሱ ላይ የተደረጉ ማናቸውም ማስተካከያዎች እንዳይጠፉ ለማረጋገጥ ነው። አንዴ ከፈጠሩት እና ለፕሮጀክትዎ (የማጠናቀሪያ ቁልፎችን እና ተጨማሪ ፋይሎችን ጨምሮ) ካበጁት በኋላ ሊረሱት ይችላሉ።

አሁን ወደ ፕሮግራሚንግ እንሸጋገር። ፖጎ የሚከተለውን ፈጥሯል፡

የታንጎ መቆጣጠሪያዎች

በ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() ተግባር ለባህሪያቶቻችን ማህደረ ትውስታን ይመድባል፡ የጂፒኤስ_ስትሪንግ & የጂፒኤስ_አሬይግን ያ ምንም ለውጥ አያመጣም። እዚህ ላይ በጣም አስፈላጊው ነገር, እነዚህ አስተያየቶች ናቸው፡

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

በዚህ የአስተያየት ብሎክ ውስጥ ያለ ማንኛውም ነገር በፖጎ ውስጥ በሚቀጥሉት የኮድ እድሳት ውስጥ አይካተትም። ውጣ!በብሎኮች ውስጥ የሌለ ነገር ሁሉ ይሆናል! እነዚህ ፕሮግራሞችን በራሳችን ማስተካከል የምንችልባቸው እና የምንሰራባቸው ቦታዎች ናቸው።

አሁን ክፍሉ የያዘው ዋና ዋና ተግባራት ምንድን ናቸው? ኒኦ6ኤም:

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

የአንድን ባህሪ እሴት ለማንበብ ስንፈልግ የጂፒኤስ_ስትሪንግ, ተግባሮቹ በሚከተለው ቅደም ተከተል ይጠራሉ: ሁልጊዜ_የሚፈጸም_መንጠቆ, read_attr_hardware и read_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

ከኮም ወደብ ጋር መገናኘት የምችለው በፈቃዶች ብቻ ነው። ሥር-ኤ. 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

ውጤቱን እንደ ትዕዛዝ ተመላሽ አግኝተናል፣ የሕብረቁምፊ ባህሪያትን እና የቁምፊዎች ድርድርን ወስደናል።

ማጣቀሻዎች

ይህንን ጽሑፍ የጻፍኩት ለራሴ ነው፣ ምክንያቱም ከተወሰነ ጊዜ በኋላ እንዴት እና ምን ማድረግ እንዳለብኝ መርሳት እጀምራለሁ።

የእርስዎን ትኩረት እናመሰግናለን.

ምንጭ: hab.com

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster