O ti wa ni a eto fun ìṣàkóso orisirisi hardware ati software.
TANGO lọwọlọwọ ṣe atilẹyin awọn iru ẹrọ 4: Lainos, Windows NT, Solaris ati HP-UX.
Nibi a yoo ṣe apejuwe ṣiṣẹ pẹlu Linux (Ubuntu 18.04)
Kini o jẹ fun?
Simplifies iṣẹ pẹlu orisirisi itanna ati software.
O ko nilo lati ronu bi o ṣe le fipamọ data sinu ibi ipamọ data, o ti ṣe tẹlẹ fun ọ.
O jẹ pataki nikan lati ṣe apejuwe ẹrọ fun awọn sensọ idibo.
Emi ko le ṣe ifilọlẹ lati koodu orisun; Mo lo aworan ti a ti ṣetan ti TangoBox 9.3 lati ṣiṣẹ.
Awọn itọnisọna ṣe apejuwe bi o ṣe le fi sori ẹrọ lati awọn idii.
Kí ni ó ní nínú?
GBIGBE - ti a lo lati wo ati ṣatunkọ aaye data TANGO.
POGO - olupilẹṣẹ koodu fun awọn olupin ẹrọ TANGO.
Irawọ - oluṣakoso eto fun eto TANGO.
A yoo nifẹ nikan ni awọn paati meji akọkọ.
Awọn ede siseto atilẹyin
C
C ++
Java
JavaScript
Python
matlab
LabVIEW
Mo ṣiṣẹ pẹlu rẹ ni Python & c ++. Nibi C++ yoo ṣee lo bi apẹẹrẹ.
Bayi jẹ ki a lọ si apejuwe bi o ṣe le so ẹrọ pọ mọ TANGO ati bii o ṣe le ṣiṣẹ pẹlu rẹ. Owo naa yoo gba bi apẹẹrẹ GPS neo-6m-0-001:
Bi o ti le ri ninu aworan, a so awọn ọkọ si awọn PC nipasẹ UART CP2102. Nigbati o ba sopọ si PC, ẹrọ naa yoo han /dev/ttyUSB[0-N], nigbagbogbo /dev/ttyUSB0.
POGO
Bayi jẹ ki a lọlẹ pogo, ati ṣẹda koodu egungun fun ṣiṣẹ pẹlu igbimọ wa.
pogo
Mo ti ṣẹda koodu tẹlẹ, jẹ ki a ṣẹda lẹẹkansi Faili-> Tuntun.
A gba awọn wọnyi:
Ẹrọ wa (ni ọjọ iwaju, nipasẹ ẹrọ a yoo tumọ si apakan sọfitiwia) ṣofo ati pe o ni awọn aṣẹ iṣakoso meji: State & Ipo.
O gbọdọ kun pẹlu awọn abuda pataki:
Ohun-ini Ẹrọ - awọn iye aiyipada ti a gbe lọ si ẹrọ lati ṣe ipilẹṣẹ rẹ; fun igbimọ GPS, o nilo lati gbe orukọ igbimọ naa sinu eto naa. com = "/dev/ttyUSB0" ati com ibudo iyara baudrade=9600
Awọn aṣẹ - Awọn aṣẹ lati ṣakoso ẹrọ wa; wọn le fun ni awọn ariyanjiyan ati iye ipadabọ.
Ipinle - pada awọn ti isiyi ipinle, lati States
Ẹrọ - pada ipo lọwọlọwọ, eyi ni ibamu okun si Ipinle
GPSArray - pada GPS okun ni fọọmu DevVarCharArray
Nigbamii, ṣeto awọn abuda ẹrọ ti o le ka / kọ si / lati inu rẹ. Awọn eroja Scalar - awọn eroja ti o rọrun (char, okun, gun, bbl) Awọn eroja julọ.Oniranran - ọkan-onisẹpo orun Awọn eroja Aworan - meji-onisẹpo orun
States - ipinle ti ẹrọ wa wa.
Ṣi - ẹrọ naa ṣii.
CLOSE - ẹrọ ti wa ni pipade.
KUNA - aṣiṣe.
ON - gba data lati ẹrọ.
PA - ko si data lati ẹrọ.
Apẹẹrẹ ti fifi ẹya ara ẹrọ kun gps_okun:
Akoko idibo akoko ni ms, melo ni iye gps_string yoo ni imudojuiwọn. Ti akoko imudojuiwọn ko ba ni pato, abuda naa yoo ni imudojuiwọn nikan nigbati o ba beere.
O ṣẹlẹ:
Bayi o nilo lati ṣẹda koodu naa Faili-> Ṣe ipilẹṣẹ
Nipa aiyipada, Makefile ko ṣe ipilẹṣẹ; ni igba akọkọ ti o nilo lati ṣayẹwo apoti lati ṣẹda rẹ. Eyi ni a ṣe ki awọn iyipada ti a ṣe si rẹ ko ni paarẹ lakoko iran tuntun. Lehin ti o ṣẹda lẹẹkan ati tunto fun iṣẹ akanṣe rẹ (awọn bọtini akojọpọ iforukọsilẹ, awọn faili afikun), o le gbagbe nipa rẹ.
Bayi jẹ ki a lọ si siseto. pogo pẹlu ipilẹṣẹ atẹle fun wa:
A yoo nifẹ si NEO6M.cpp & NEO6M.h. Jẹ ki a mu apẹẹrẹ ti oluko kilasi kan:
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
}
Kini o wa ati kini o ṣe pataki nibi? Iṣẹ init_device () ṣe ipin iranti fun awọn abuda wa: gps_okun & gps_array, ṣugbọn kii ṣe pataki. Ohun pataki julọ nibi, wọnyi ni awọn comments:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
Ohun gbogbo ti o wa ninu bulọọki asọye yii kii yoo wa ninu pogo lakoko awọn isọdọtun koodu atẹle gbe kuro!. Ohun gbogbo ti ko si ni awọn bulọọki yoo jẹ! Iwọnyi ni awọn aaye nibiti a ti le ṣe eto ati ṣe awọn atunṣe tiwa.
Nigba ti a ba fẹ ka iye ikalara gps_okun, awọn iṣẹ ni a yoo pe ni aṣẹ atẹle: nigbagbogbo_executed_hook, read_attr_hardware и kika_gps_okun. Read_gps_string yoo kun gps_string pẹlu iye naa.
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
}
Iṣakojọpọ
Lọ si folda orisun ati:
make
Eto naa yoo ṣe akojọpọ sinu folda ~/DeviceServers.
tango-cs@tangobox:~/DeviceServers$ ls
NEO6M
GBIGBE
jive
Awọn ẹrọ kan wa tẹlẹ ninu ibi ipamọ data, jẹ ki a ṣẹda tiwa Ṣatunkọ->Ṣẹda olupin
Bayi jẹ ki a gbiyanju lati sopọ si rẹ:
Ko si ohun ti yoo ṣiṣẹ, akọkọ a nilo lati ṣiṣe eto wa:
sudo ./NEO6M neo6m -v2
Mo le sopọ si ibudo com nikan pẹlu awọn ẹtọ root-A. v - gedu ipele.
Bayi a le sopọ:
Onibara
Ni awọn eya aworan, wiwo awọn aworan jẹ esan dara, ṣugbọn o nilo nkan ti o wulo diẹ sii. Jẹ ki a kọ alabara kan ti yoo sopọ si ẹrọ wa ki o gba awọn kika lati ọdọ rẹ.
#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);
}
}