ααΎα’αααΈαα
ααΆ ααΆααααΌα ?
ααΆβααΆβααααααααβαααααΆααβαααααβααααβαααααβααΉα αα·αβαααααα·ααΈβααααααα
αα
αα
α»αααααα TANGO ααΆαααααααα·ααΆα
ααα½α 4α Linux, Windows NT, Solaris αα·α HP-UX α
αα
ααΈαααααΎαααΉααα·αααααΆα’αααΈααΆαααααΎααΆαααΆαα½αααΈαα»α
(α’ααΌααα»αααΌ 18.04)
ααΎβααΆβααααΎβααααΆααβααααΎα’αααΈ?
ααααα½αααΆαααΆαααΆαα½αα§ααααα αα·ααααααα·ααΈααααααα
- α’ααααα·αα αΆαααΆα ααα·αααΈαααααααααΆαα»ααα·αααααααααα»α Database ααααα ααΆααααΌαααΆαααααΎαα½α α αΎααααααΆααα’αααα
- ααΆααααΆααααααΆααΆαα αΆαααΆα αααΎααααΈαα·αααααΆα’αααΈααααααΆααααααΆααα§αααααα αΆαααααααΆααααααααααα»αααααα
- ααΆααααααααααααΌαααααα’αααααΆααα’αααα ααΆαααααααΆααα½αα
αααααααααααααΌαααα½α?
ααααα ααα ααααΈααααΆαα’αααΈααΆαααα‘αΎα ααΌαααΆα TangoBox ααα’ααααΎα’ααΌααα»αααΌ
αααα»ααα·αα’αΆα
ααΎαααΆααΈααΌααααααααΆααα αααα»αααΆαααααΎααΌαααΆααααααααααα½α
ααΆααααα
αα TangoBox 9.3 ααΎααααΈααααΎαααΆαα
ααΆαααααΆααα·αααααΆα’αααΈααααααα‘αΎαααΈαααα
ααα
ααΎααΆαα½ααααα αΌαα’αααΈαααα?
- ααΈα - ααααΎααΎααααΈααΎα αα·αααααααα½αααΌαααααΆααα·αααααα TANGO α
- ααΈα’αΌα’αΌ - αααΆαααΈααααααΎαααΌααααααΆαααααΆαααΈαααα§ααααα TANGO α
- α’αΆααααΆα - α’αααααααααααααααααα·ααΈαααααΆαααααααααα TANGO α
ααΎαααΉαα αΆααα’αΆααααααααααΎαααΆαααΆαα»ααΈαααααΌαααα»αααααα
ααΆααΆααααααααααα·ααΈαααααΆαααα
- C
- C ++
- αααααααΆ
- JavaScript
- αααααααΆαα
- αααΆααα‘αΆα
- LabVIEW
αααα»αααΆαααααΎααΆαααΆαα½αααΆαα αααα»α python & c++ α αα ααΈααα C++ ααΉαααααΌαααΆαααααΎααΆα§ααΆα αααα
α₯α‘αΌαααα α αΌααααααα ααΆααα·αααααΆα’αααΈααααααααΆααα§ααααααα TANGO αα·αααααααααΎααΆαααΆαα½αααΆα αααααααα½αααΉαααααΌαααΆαααααΆα§ααΆα ααα GPS neo-6m-0-001:
ααΌα αααα’αααα’αΆα ααΎααα αααα»αααΌαααΆαααΎαααααΆααααααααα ααΉααα»αααααΌαααααΆαααα UART CP2102 α αα αααααααΆαααα αα»αααααΌααα α§αααααααΉαααα α‘αΎα /dev/ttyUSB[0-N]ααΆααααααΆ /dev/ttyUSB0.
ααΈα’αΌα’αΌ
α₯α‘αΌααααααΌαα αΆααααααΎα ααΌα ααααα·ααααααΎαααΌααααααααα’αΉααααααΆααααααΎααΆαααΆαα½ααααα»αααααΉααααΆαα·ααΆαααααααΎαα
pogo
αααα»ααααααΎαααΌααα½α α αΎα ααααααααΎαααΆααααααα α―αααΆα-> ααααΈα.
ααΎαααα½αααΆαααΌα ααΆααααααα
α§αααααααααααΎα (αα αααα’ααΆαα ααΆαα§ααααα ααΎαααΉαααΆααααααΆααααααααααα·ααΈ) ααΊααα αα·αααΆαααΆααααααααΆααΈαα αααα & ααααΆαααΆα.
ααΆααααΌααααααααααααα»αααααααα αΆαααΆα αα
αααααααααααααα·α§ααααα - αααααααααΆαααΎααααααΎαααααααα α§αααααααΎααααΈα αΆααααααΎαααΆ; αααααΆααααααα GPS α’αααααααΌααααααααααααααα»αααααΉααααΆαα·ααΆααα αααα»αααααααααα com="/dev/ttyUSB0" αα·αααααΏαα ααα com baudrade = 9600
ααΆααααααααΆ - ααΆααααααααΆααΎααααΈαααααααααα§αααααααααααΎα αα½αααΆα’αΆα ααααΌαααΆααααααα’αΆαα»ααααα αα·αααααααααα‘αααααα·αα
- STATE - αααα‘ααααααΆαααΆααα αα α»αααααα, ααΈ αααα
- STATUS - αααα‘ααααααΆαααΆααα αα α»αααααα αααααΊααΆααΆααααααααααααααααααααα’αααα STATE
- GPSArray - αααα‘αααααα·α αααααααα GPS ααααα’αααααααα»ααααααα DevVarCharArray
αααααΆααααααααααα»αααααααα§ααααααααα’αΆα
ααααΌαααΆαα’αΆα/ααααααα
/ααΈααΆα
αα»ααααααα Scalar - αα»αααααααααΆαααα (αα½α’αααα, αααα, αααα αα )
αα»ααααααααα·ααΆααα - α’αΆαααα½ααα·ααΆααα
αα»αααααααααΌαααΆα - α’αΆααααΈααα·ααΆααα
αααα - ααααΆαααΆααααα§αααααααααααΎααααα·ααα α
- α αα - α§αααααααΎαα
- αα·ααααα·ααα - α§αααααααααΌαααΆααα·αα
- αααΆααα - ααα α»αα
- ON - ααα½ααα·ααααααααΈα§αααααα
- XNUMX$ - ααααΆααα·ααααααααΈα§αααααα
α§ααΆα αααααααΆααααααααα»ααααααα gps_string:
αααααααααααααα αααααααΆαα αααα»α ms ααααα gps_string ααΉαααααΌαααΆαα’αΆαααααααΉαααΆααααα»ααααΆα ααααα·αααΎαααααααΆα’αΆααααααα·αααααΌαααΆααααααΆαα ααααα»αααααααααΉαααααΌαααΆαα’αΆαααααααααΆαααααΎααα»αααααα
ααΆαααΎαα‘αΎαα
α₯α‘αΌαα’αααααααΌααααααΎαααΌα α―αααΆα -> αααααΎα
ααΆαααααΆαααΎα Makefile αα·αααααΌαααΆααααααΎααα ααΆααΎαααααΌααααα’αααααααΌαααΈααααα’ααααΎααααΈαααααΎαααΆα αααααααΌαααΆαααααΎααΌα ααααααΆααΆαααααΆααααααΌααααααΆαααααΎα‘αΎαα ααααααΆαα·αααααΌαααΆααα»ααααα»αα’αα‘α»ααααααααΆααααααΈα αααααΆααααααΎαααΆαααα αα·αααααααα ααΆααααααααααΆαααααΆααααααααααααα’ααα (α α»ααααααααΌαααα ααααα α―αααΆααααααα) α’αααα’αΆα ααααααα ααΆααΆαα
α₯α‘αΌααααααΌααααααα ααΆαααααααααααα·ααΈα pogo ααΆαα½αααΆααααααΎαααΌα ααΆαααααααααααΆαααα½αααΎα:
ααΎαααΉαα αΆααα’αΆααααααααΎ NEO6M.cpp & NEO6M.h α αααααΎαα§ααΆα ααααα class constructorα
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
α’αααΈααααααααΆααααααΆααα ααΆααααα»ααααα»αααα·ααααααααααΉααα·αααααΌαααΆααα½ααααα αΌααα αααα»α 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);
αα ααααααααΎαα ααα’αΆαααααα attribute gps_stringαα»αααΆαααΉαααααΌαααΆαα α ααΆαααααΆααααΌα ααΆααααααα always_executed_hook, 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