Aliquam sit amet est sit amet odio luctus varius.
TANGO nunc 4 suggestus sustinet: Linux, Fenestra NT, Solaris et HP-UX.
Hic describemus operantes cum Linux (Ubuntu 18.04)
Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ?
Simplificat opus cum variis instrumentis et programmatibus.
Non debes cogitare quomodo notitias condere in datorum datorum, iam tibi factum est.
Solum necessarium est mechanismum ad suffragium sensoriis describere.
Non potui ex fonte codice deducere, imago TangoBox 9.3 ad operandum prompta usus sum.
Praecepta describere quomodo ex fasciculis instituere.
Quid est?
JIVE' - ad videndum et ad datorum TANGO recensendum.
POGO - codice generans pro TANGO fabrica servers.
Carl β procurator programmatis ad systema TANGO.
Sola in duobus primis partibus quaerenda erimus.
Supported programming languages
C
C ++
Java
JavaScript
Python
matlab
LabVIEW
Cum eo in Pythone laboravi &c++. Hic C++ ut exemplum erit.
Nunc ad descriptionem transeamus quomodo machinam TANGO connectere et quomodo cum eo laborare. Feodum ad exemplum GPS neo-6m-0-001:
Ut in tabula videre potes, tabulam ad PC per UART CP2102 coniungimus. Cum PC connexa, machina videtur /dev/ttyUSB[0-N]fere /dev/ttyUSB0.
POGO
Nunc Lorem pogoet generale sceletum codicem ad operandum cum tabula nostra.
pogo
Iam codicem creavi, iterum crearemus File->Novum.
Sequenti acquirimus:
Nostrae fabrica (in futuro, per machinam partem programmalem significabimus) vacua est et duo mandata habet imperium: State & Status.
Impleri debet necessariis attributis;
Fabrica Property - valores defectus quos ad fabricam ad initialize transfermus, pro tabula GPS, nomen tabulae in systematis transferre debes. com="/dev/ttyUSB0" et celeritate com portum baudrade=9600
imperium - imperata ut machinam nostram regerent, argumenta reddi possunt ac valorem reddere.
sTATUS - recurrit in statu praesenti, e Americae
STATUS - status currentem redit, hoc est complementum chordae sTATUS
GPSArray - redit GPS linea in forma DevVarCharArray
Deinde pone machinam attributorum quae ex eo legi/scripta sunt. Scalar Attributes β attributa simplicia (char, chorda, longa, etc.) Imaginis attributa - unus dimensionis vestit Imago attributa - duos dimensiva vestit
Americae - status in quo fabrica nostra sita est.
APERTUS - Aperta fabrica.
PROPINQUUS β fabrica clauditur.
DELICTUM β errorem.
ON - notitia ex fabrica accipere.
Off - nulla notitia ex fabrica.
Exemplum addens attributum gps_string:
Suffragium tempus tempus in ms, quotiens valorem gps_stringi renovabitur. Si tempus renovationis definitum non est, attributum solum petentibus renovabitur.
Contigit:
Nunc opus est codicem generare File-> Generare
Defalta, Makefile non generatur, primum opus est ut capsam inspicias eam creare. Hoc ita fit, ut mutationes per novam generationem factae non deletae sint. Eam semel creavisti et eam ad inceptum tuum configurans (clavium tabulariorum compilationem, additamenta imaginum) oblivisci potes.
Nunc ad programmationem transeamus. pogo cum genit pro nobis;
Quaerendum erit in NEO6M.cpp& NEO6M.h. Sumamus exemplum constructoris ordinis:
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
}
Quid hic et quid interest? Munus memoriam attribuit nostris attributis: gps_string & gps_arraysed non maximus. Maxime hiccommentaria haec sunt:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
Omne quod intra hoc commentarium includi non potest in pogo per sequentes codicem regenerationes discedite!. Omne quod non est in impedit, erit! Haec loca sunt ubi programmata facere et emendationes nostras facere possumus.
Nunc quae sunt praecipua munera ordinis continet? NEO6M:
Cum volumus legere valorem attributum gps_stringfunctiones hoc ordine vocabuntur; always_executed_hook, read_attr_hardware ΠΈ read_gps_string. Read_gps_string implebit gps_string cum valore.
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
}
compilation
Vade ad fontem folder et:
make
Propositum in ~/DeviceServers folder componetur.
tango-cs@tangobox:~/DeviceServers$ ls
NEO6M
JIVE'
jive
Sunt iam nonnullae machinae in database, nunc nostram crea Edit->Create Servo
Nunc conemur coniungere ad eam;
Nil opus erit, primum ad propositum nostrum currendum opus est;
sudo ./NEO6M neo6m -v2
Non possum modo coniungere ad com portum cum iure radix-A. v β gradu logging.
Nunc coniungere possumus:
Lorem
In graphics, picturas spectans certe bonum est, sed utiliore aliquo indiges. Scribamus clientem qui consilio nostro coniunget et ex eo lectiones sumo.
#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);
}
}