แ แ แแ แแก แขแแแแ ?
แแก แแ แแก แกแแกแขแแแ แกแฎแแแแแกแฎแแ แขแแฅแแแแแกแ แแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแ แแแแกแแแแก.
TANGO แแแแแแแ แแฎแแ แก แฃแญแแ แก 4 แแแแขแคแแ แแแก: Linux, Windows NT, Solaris แแ HP-UX.
แแฅ แฉแแแ แแฆแแฌแแ แ แแฃแจแแแแแก Linux-แแแ (Ubuntu 18.04)
แฒ แแกแแแแก แแ แแก?
แแแแ แขแแแแแก แแฃแจแแแแแก แกแฎแแแแแกแฎแแ แแฆแญแฃแ แแแแแแแกแแแ แแ แแ แแแ แแแฃแ แฃแแ แฃแแแแแงแแคแแกแแแ.
- แแฅแแแ แแ แแญแแ แแแแแ แคแแฅแ แ แแแแแ, แแฃ แ แแแแ แจแแแแแฎแแ แแแแแชแแแแแ แแแแแชแแแแ แแแแแจแ, แแก แฃแแแ แแแแแแแ แแฅแแแแแแแก.
- แกแแญแแ แแ แแฎแแแแ แแแแญแแกแงแ แแก แกแแแกแแ แแแแก แแแฅแแแแแแแก แแฆแฌแแ แ.
- แแแชแแ แแแก แแฅแแแแก แงแแแแ แแแแก แแ แ แกแขแแแแแ แขแแ.
แกแแ แฃแแแ แแแแฆแแ?
แฌแงแแ แแแแ แแแกแขแแแแชแแแก แแแกแขแ แฃแฅแชแแแแ TangoBox แกแฃแ แแแ Ubuntu-แแ แแแคแฃแซแแแแฃแแ
แแ แแแ แจแแแซแแแ แแแกแ แแแจแแแแ แกแแฌแงแแกแ แแแแแแแ; แแแแแแแงแแแ TangoBox 9.3-แแก แแแ แกแฃแ แแแ แกแแแฃแจแแแ.
แแแกแขแ แฃแฅแชแแแแ แแฆแฌแแ แก, แแฃ แ แแแแ แฃแแแ แแแแแแกแขแแแแ แแ แแแแแขแแแแแแ.
แ แแกแแแ แจแแแแแแ?
- แชแแชแฎแแแ - แแแแแแงแแแแแ TANGO แแแแแชแแแแ แแแแแก แกแแแแฎแแแแ แแ แ แแแแฅแขแแ แแแแกแแแแก.
- POGO โ แแแแแก แแแแแ แแขแแ แ TANGO แแแฌแงแแแแแแแแก แกแแ แแแ แแแแกแแแแก.
- แแกแขแแ แแก - แแ แแแ แแแแก แแแแแฏแแ แ TANGO แกแแกแขแแแแกแแแแก.
แฉแแแ แแแแแแขแแ แแกแแแแแ แแฎแแแแ แแแ แแแแ แแ แ แแแแแแแแแขแแ.
แแฎแแ แแแญแแ แแแ แแ แแแ แแแแ แแแแก แแแแแ
- C
- C + +
- Java
- JavaScript
- Python
- แแแขแแแแแ
- แแแแแ แแขแแ แแ
แแ แแแแฃแจแแแ แแแกแแแ python & c++-แจแ. แแฅ C++ แแฅแแแแ แแแแแงแแแแแฃแแ, แ แแแแ แช แแแแแแแแ.
แแฎแแ แแแแแ แแแแแแแแแ แแฆแฌแแ แแแ, แแฃ แ แแแแ แแแฃแแแแจแแ แแ แแแฌแงแแแแแแแ TANGO-แก แแ แ แแแแ แแแแฃแจแแแ แแแกแแแ. แกแแคแแกแฃแ แ แแฅแแแแ แแฆแแแฃแแ, แ แแแแ แช แแแแแแแแ GPS neo-6m-0-001:
แ แแแแ แช แกแฃแ แแแแ แฎแแแแแ, แฉแแแ แแฃแแ แแแแ แแแคแแก แแแแแแฃแขแแ แก UART CP2102-แแก แกแแจแฃแแแแแแ. แแแแแแฃแขแแ แแแ แแแแแแจแแ แแแแกแแก แแแฌแงแแแแแแแ แแแแแฉแแแแแ /dev/ttyUSB[0-N], แฉแแแฃแแแแ แแ /dev/ttyUSB0.
POGO
แแฎแแ แแแแแฅแชแแ แแแแแแ แจแแฅแแแแแ แฉแแแฉแฎแแก แแแแ แฉแแแแก แแแคแแกแแแ แแฃแจแแแแแกแแแแก.
pogo
แแ แฃแแแ แจแแแฅแแแแ แแแแ, แแแแ แแกแแ แจแแแฅแแแแ แคแแแแ->แแฎแแแ.
แฉแแแ แแแฆแแแ แจแแแแแแก:
แฉแแแแ แแแฌแงแแแแแแแ (แแแแแแแแจแ แแแฌแงแแแแแแแแจแ แแแแฃแแแกแฎแแแแ แแ แแแ แแแฃแ แแแฌแแแก) แชแแ แแแแแ แแ แแฅแแก แแ แ แกแแแแแขแ แแแ แแ แซแแแแแ: แกแแฎแแแแฌแแคแ & แกแขแแขแฃแกแ.
แแก แฃแแแ แแงแแก แจแแแกแแแฃแแ แกแแญแแ แ แแขแ แแแฃแขแแแแ:
แแแฌแงแแแแแแแแก แกแแแฃแแ แแแ โ แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแแแ, แ แแแแแแกแแช แแแแแแชแแแ แแแฌแงแแแแแแแแก แแแก แแแแชแแแแแแแชแแแกแแแแก; GPS แแแคแแกแแแแก, แแฅแแแ แฃแแแ แแแแแแขแแแแ แแแคแแก แกแแฎแแแ แกแแกแขแแแแจแ com="/dev/ttyUSB0" แแ แแแแแแ แขแแก แกแแฉแฅแแ แ baudrade=9600
แแ แซแแแแแแแ โ แแ แซแแแแแแแ แฉแแแแ แแแฌแงแแแแแแแแก แแแกแแแแแขแ แแแแแแแ; แแแ แจแแแซแแแแ แแแแชแแ แแ แแฃแแแแขแแแ แแ แแแแ แฃแแแแแก แแแแจแแแแแแแ.
- แกแแฎแแแแฌแแคแ - แแแ แฃแแแแก แแแแแแแแ แ แแแแแแแ แแแแแก, แกแแฌแงแแกแแแแ เฒฐเฒพเฒเณเฒฏเฒเฒณเณ
- STATUS - แแแ แฃแแแแก แแแแแแแแ แ แกแขแแขแฃแกแก, แแก แแ แแก แกแขแ แแฅแแแแก แแแแแขแแแ แกแแฎแแแแฌแแคแ
- GPSArray - แแ แฃแแแแแ gps แกแแแแแแแแ แกแแฎแแ DevVarCharArray
แจแแแแแแ, แแแแงแแแแ แแแฌแงแแแแแแแแก แแขแ แแแฃแขแแแ, แ แแแแแแ แฌแแแแแฎแแ/แฉแแฌแแ แ แจแแกแแซแแแแแแแ/แแแกแแแ.
แกแแแแแ แฃแแ แแขแ แแแฃแขแแแ - แแแ แขแแแ แแขแ แแแฃแขแแแ (char, string, long แแ แ.แจ.)
แกแแแฅแขแ แแก แแขแ แแแฃแขแแแ - แแ แแแแแแแแแแแแแแแ แแแกแแแแแ
แแแแแกแแฎแฃแแแแแก แแขแ แแแฃแขแแแ - แแ แแแแแแแแแแแแแแ แแแกแแแแแ
เฒฐเฒพเฒเณเฒฏเฒเฒณเณ โ แแแแแแแ แแแแ, แ แแแแแจแแช แแแแแแ แแแแก แฉแแแแ แแแฌแงแแแแแแแ.
- OPEN - แแแฌแงแแแแแแแ แฆแแแ.
- แแแฎแฃแ แแ - แแแฌแงแแแแแแแ แแแฎแฃแ แฃแแแ.
- แแแ แชแฎแ - แจแแชแแแแ.
- ON โ แแแแฆแแ แแแแแชแแแแแ แแแฌแงแแแแแแแแแแ.
- OFF - แแ แแ แแก แแแแแชแแแแแ แแแฌแงแแแแแแแแแแ.
แแขแ แแแฃแขแแก แแแแแขแแแแก แแแแแแแแ gps_string:
แแแแญแแกแงแ แแก แแแ แแแแ แแ แ ms-แจแ, แ แแแแแแแ แฎแจแแ แแ แแแแแฎแแแแแ gps_string แแแแจแแแแแแแ. แแฃ แแแแแฎแแแแแก แแ แ แแ แแ แแก แแแแแแแแฃแแ, แแขแ แแแฃแขแ แแแแแฎแแแแแ แแฎแแแแ แแแแฎแแแแแก แจแแแแฎแแแแแจแ.
แแแฎแแ:
แแฎแแ แแฅแแแ แฃแแแ แจแแฅแแแแ แแแแ แคแแแแ -> แแแแแ แแ แแแ
แแแแฃแแแกแฎแแแแแ, Makefile แแ แแ แแก แแแแแ แแ แแแฃแแ; แแแ แแแแแ แแฅแแแ แฃแแแ แแแแแจแแแ แแแแ แแแก แจแแกแแฅแแแแแแ. แแก แแแแแแแ แแแแกแแแแก, แ แแ แแแกแจแ แจแแขแแแแแ แชแแแแแแแแแ แแ แฌแแแจแแแแก แแฎแแแ แแแแแแก แแ แแก. แแ แแฎแแ แจแแฅแแแแ แแ แแแแแแแคแแแฃแ แแ แแ แแฅแแแแ แแ แแแฅแขแแกแแแแก (แแแแ แแแแกแขแ แแ แแ แแแแแแแแชแแแก แแแกแแฆแแแแแ, แแแแแขแแแแแ แคแแแแแแ), แจแแแแซแแแแ แแแแแแฌแงแแ แแแ.
แแฎแแ แแแแแแแแแ แแ แแแ แแแแ แแแแแ. pogo-แ แจแแฅแแแ แจแแแแแแ แฉแแแแแแแก:
แฉแแแ แแแแแแขแแ แแกแแแแแ 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_แแแกแแแ, แแแแ แแ แแก แแ แแ แแก แแแแจแแแแแแแแแ. แแฅ แงแแแแแแ แแแแแแ แแ, แแก แแ แแก แแแแแแขแแ แแแ:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
แงแแแแแคแแ แ, แ แแช แแ แแแแแแขแแ แแแแก แแแแแจแแ, แแ แแฅแแแแ แฉแแ แแฃแแ pogo-แจแ แแแแแก แจแแแแแแแ แ แแแแแแ แแชแแแก แแ แแก แแแจแแ แแ!. แงแแแแแคแแ แ, แ แแช แแแแแแแจแ แแ แแ แแก, แแฅแแแแ! แแก แแก แแแแแแแแแ, แกแแแแช แจแแแแแซแแแ แแแแ แแแ แแแแแ แแ แกแแแฃแแแ แ แ แแแแฅแขแแ แแแแก แแแแแแแแ.
แแฎแแ แ แ แซแแ แแแแ แคแฃแแฅแชแแแแก แจแแแชแแแก แแแแกแ? 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. 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 แแแ แขแแแ root-แ. 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