Ọ bụ usoro maka ijikwa ngwaike na ngwanrọ dị iche iche.
TANGO na-akwado nyiwe 4 ugbu a: Linux, Windows NT, Solaris na HP-UX.
N'ebe a, anyị ga-akọwa ịrụ ọrụ na Linux (Ubuntu 18.04)
Kedu ihe ọ bụ?
Na-eji ngwa na ngwanrọ dị iche iche eme ka ọrụ dị mfe.
Ịkwesighi iche echiche maka otu esi echekwa data na nchekwa data, emelarị gị.
Enweghị m ike ịmalite ya site na koodu isi mmalite; Eji m ihe oyiyi TangoBox 9.3 emebere arụ ọrụ.
Ntuziaka na-akọwa otu esi etinye na ngwugwu.
Gịnị ka ọ na-agụnye?
jive - eji ele ma dezie nchekwa data TANGO.
POGO - onye na-emepụta koodu maka sava ngwaọrụ TANGO.
Astra - onye njikwa mmemme maka sistemụ TANGO.
Anyị ga-enwe mmasị naanị na akụkụ abụọ mbụ.
Asụsụ mmemme akwadoro
C
C +
Java
JavaScript
Python
matlab
Nyocha
Mụ na ya rụrụ ọrụ na Python & c++. Ebe a ga-eji C++ mee ihe atụ.
Ugbu a, ka anyị gaa na nkọwa nke otu esi jikọọ ngwaọrụ na TANGO na otu esi arụ ọrụ na ya. A ga-ewere ụgwọ ahụ dịka ọmụmaatụ GPS neo-6m-0-001:
Dị ka ị na-ahụ na foto a, anyị na-ejikọta osisi na PC site na UART CP2102. Mgbe ejikọrọ na PC, ngwaọrụ ga-apụta /dev/ttyUSB[0-N], na-emekarị /dev/ttyUSB0.
POGO
Ugbu a, ka malite pogo, ma mepụta koodu skeleton maka ịrụ ọrụ na bọọdụ anyị.
pogo
Emeela m koodu ahụ, ka anyị mepụta ya ọzọ Faịlụ-> Ọhụrụ.
Anyị na-enweta ihe ndị a:
Ngwaọrụ anyị (n'ọdịnihu, site na ngwaọrụ anyị ga-apụta akụkụ ngwanrọ) efu ma nwee iwu njikwa abụọ: State & Ọnọdụ.
Ọ ga-ejupụta na njirimara ndị dị mkpa:
Ngwongwo akụrụngwa - ụkpụrụ ndabara nke anyị na-ebufe na ngwaọrụ iji bido ya; maka bọọdụ GPS, ịkwesịrị ịnyefe aha bọọdụ ahụ na sistemụ. com = "/dev/ttyUSB0" na com ọdụ ụgbọ mmiri baudrade=9600
Iwu - iwu ijikwa ngwaọrụ anyị; enwere ike ịnye ha arụmụka na uru nloghachi.
Ụlọ ọrụ - weghachi ọnọdụ dị ugbu a, site na Mba
Ụgha - weghachi ọnọdụ dị ugbu a, nke a bụ ihe nkwado nke eriri Ụlọ ọrụ
Na-esote, tọọ njirimara ngwaọrụ nke enwere ike ịgụ / dee na / site na ya. Àgwà Scalar - àgwà dị mfe (char, eriri, ogologo, wdg) Njirimara Spectrum - otu akụkụ arrays Njirimara onyonyo - akụkụ abụọ arrays
Mba - steeti nke ngwaọrụ anyị dị.
Open - ngwaọrụ na-emeghe.
NSO - ngwaọrụ na-emechi.
ỤJỌ - njehie.
ON - nweta data site na ngwaọrụ.
Gbanyụọ - enweghị data sitere na ngwaọrụ.
Ọmụmaatụ nke ịgbakwunye àgwà gps_string:
Oge ntuli aka oge na ms, ugboro ole gps_string ga-emelite uru. Ọ bụrụ na akọwapụtaghị oge mmelite ahụ, njirimara a ga-emelite naanị mgbe achọrọ ya.
mere:
Ugbu a ịkwesịrị ịmepụta koodu ahụ Faịlụ->Mepụta
Site na ndabara, anaghị emepụta Makefile; oge mbụ ịchọrọ ịlele igbe iji mepụta ya. A na-eme nke a ka e wee ghara ihichapụ mgbanwe ndị e mere na ya n'oge ọgbọ ọhụrụ. N'ịbụ onye mepụtara ya otu ugboro ma hazie ya maka ọrụ gị (igodo nchịkọta ndekọ, faịlụ ndị ọzọ), ị nwere ike ichefu ya.
Ugbu a, ka anyị gaa n'ihu na mmemme. pogo na emepụtara anyị ihe ndị a:
Anyị ga-enwe mmasị na NEO6M.cpp & NEO6M.h. Ka anyị were ọmụmaatụ nke onye nrụpụta klaasị:
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
}
Kedu ihe dị na ihe dị mkpa ebe a? Ọrụ init_device() na-ekenye ebe nchekwa maka njirimara anyị: gps_string & gps_array, ma ọ dịghị mkpa. Ihe kacha mkpa ebe a, ndị a bụ okwu:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
Agaghị etinye ihe niile dị n'ime ngọngọ okwu a na pogo n'oge mmeghari koodu na-esote pụọ!. Ihe niile na-adịghị na blocks ga-abụ! Ndị a bụ ebe anyị nwere ike ime mmemme na ime ndezi nke anyị.
Mgbe anyị chọrọ ịgụ àgwà uru gps_string, a ga-akpọ ọrụ ndị a n'usoro a: nko_executed_mgbe niile, read_attr_hardware и agụ_gps_string. Read_gps_string ga-ejupụta gps_string na uru ahụ.
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
}
Nchịkọta
Gaa na folda isi mmalite na:
make
A ga-achịkọta mmemme ahụ na nchekwa ~/DeviceServers.
tango-cs@tangobox:~/DeviceServers$ ls
NEO6M
jive
jive
Enwerelarị ngwaọrụ ụfọdụ na nchekwa data, ka anyị mepụta nke anyị ugbu a Dezie-> Mepụta ihe nkesa
Ugbu a, ka anyị gbalịa jikọọ na ya:
Ọ nweghị ihe ga-arụ ọrụ, nke mbụ anyị kwesịrị ime mmemme anyị:
sudo ./NEO6M neo6m -v2
Enwere m ike iji ikike jikọọ na ọdụ ụgbọ mmiri com mgbọrọgwụ-A. v - ịcha osisi.
Ugbu a, anyị nwere ike jikọọ:
Ahịa
Na eserese, ile foto dị mma n'ezie, mana ịchọrọ ihe bara uru karị. Ka anyị dee onye ahịa ga-ejikọ na ngwaọrụ anyị wee were agụ na ya.
#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);
}
}