
Dè ?
Is e siostam a thâ ann airson a bhith aâ riaghladh diofar bhathar-cruaidh is bathar-bog.
Tha TANGO an-drĂ sta aâ toirt taic do 4 Ă rd-Ăšrlaran: Linux, Windows NT, Solaris agus HP-UX.
An seo bidh sinn aâ toirt cunntas air an obair leis Linux(Ubuntu 18.04)
Carson a tha e?
Aâ sĂŹmpleachadh obair le diofar uidheamachd is bathar-bog.
- Chan fheum thu smaoineachadh air mar as urrainn dhut dà ta a stòradh san stòr-dà ta, tha e air a dhèanamh dhut mar-thà .
- Chan fheumar ach cunntas a thoirt air an uidheamachd airson mothachairean bhòtaidh.
- LÚghdaich an còd agad gu aon Ïre.
CĂ ite am faigh thu?
Cha bâ urrainn dhomh a chuir air bhog bhon chòd stòr; Chleachd mi ĂŹomhaigh deiseil de TangoBox 9.3 airson obrachadh.
Tha an stiĂšireadh ag innse mar a stĂ laicheas tu bho phasganan.
Dè tha e air a dhèanamh suas?
- geòidh - air a chleachdadh gus stòr-dà ta TANGO fhaicinn agus a dheasachadh.
- POGO - gineadair còd airson frithealaichean inneal TANGO.
- Astor - manaidsear prògram airson siostam TANGO.
Cha bhi Ăšidh againn ach anns aâ chiad dĂ phĂ irt.
Cà nanan prògramadh le taic
- C
- C ++
- Java
- JavaScript
- Python
- matlab
- LabVIEW
Bha mi ag obair còmhla ris ann am python & c ++. An seo thèid C ++ a chleachdadh mar eisimpleir.
A-nis gluaisidh sinn air adhart gu tuairisgeul air mar a cheanglas tu an inneal gu TANGO agus mar a dh'obraicheas tu leis. Thèid aâ chĂŹs a ghabhail mar eisimpleir GPS neo-6m-0-001:

Mar a chĂŹ thu san dealbh, bidh sinn aâ ceangal am bòrd ris aâ PC tro UART CP2102. Nuair a tha e ceangailte ri PC, nochdaidh an inneal /dev/ttyUSB[0-N], mar as trice / dev/ttyUSB0.
POGO
A-nis leig leinn a chuir air bhog pogo, agus cruthaich còd cnĂ imhneach airson a bhith ag obair leis aâ bhòrd againn.
pogo
Chruthaich mi an còd mu thrĂ th, cruthaichidh sinn a-rithist e File-> Ăr.

Gheibh sinn na leanas:

Tha an inneal againn (san Ă m ri teachd, le inneal bidh sinn aâ ciallachadh am pĂ irt bathar-bog) falamh agus tha dà òrdugh smachd aige: StĂ ite & inbhe.
Feumaidh e bhith air a lĂŹonadh leis na feartan riatanach:
Seilbh inneal - luachan bunaiteach a ghluaiseas sinn chun inneal gus a thòiseachadh; airson a âbhòrd GPS, feumaidh tu ainm aâ bhĂšird san t-siostam a ghluasad com="/dev/ttyUSB0" agus astar port com Ă rd = 9600
Ărdughan - òrdughan airson smachd a chumail air an inneal againn; faodar argamaidean agus luach tilleadh a thoirt dhaibh.
- STIĂIREADH - a 'tilleadh an staid lĂ ithreach, bho StĂ itean
- STATUS - a 'tilleadh an inbhe lĂ ithreach, is e seo taic an t-sreang ri STIĂIREADH
- Eagrachadh GPS - tilleadh dotairean sreang ann an cruth DevVarCharArray
An uairsin, suidhich buadhan an uidheim a ghabhas leughadh / sgrĂŹobhadh thuige / bhuaithe.
Feartan Scalar - buadhan sĂŹmplidh (char, sreang, fada, msaa.)
Feartan Spectrum - arrays aon-thaobhach
Feartan ĂŹomhaigh - dĂ -thaobhach arrays
StĂ itean - an staid anns a bheil an inneal againn suidhichte.
- FOSGAILTE - tha an inneal fosgailte.
- DĂIN - tha an inneal dĂšinte.
- FAILTE - mearachd.
- ON - faigh dĂ ta bhon inneal.
- OFF - gun dĂ ta bhon inneal.
Eisimpleir de bhith aâ cur feart ris sreath_gps:

Ăine bhòtaidh Ăšine ann an ms, dè cho tric a thèid an luach gps_string Ăšrachadh. Mura h-eil an Ăšine Ăšrachaidh air a shònrachadh, cha tèid am feart Ăšrachadh ach ma thèid iarraidh.
Thachair:

A-nis feumaidh tu an còd a ghineadh File-> Cruthaich

Gu gnĂ thach, chan eil an Makefile air a chruthachadh; aâ chiad uair a dhâ fheumas tu sĂšil a thoirt air aâ bhogsa gus a chruthachadh. Tha seo air a dhèanamh gus nach tèid na h-atharrachaidhean a chaidh a dhèanamh air a dhubhadh Ă s rè ginealach Ăšr. Ăs deidh dhut a chruthachadh aon uair agus a rèiteachadh airson do phròiseact (clĂ r iuchraichean cruinneachaidh, faidhlichean a bharrachd), faodaidh tu dĂŹochuimhneachadh mu dheidhinn.
A-nis gluaisidh sinn air adhart gu prògramadh. pogo le gin de na leanas dhuinn:

Bidh Ăšidh againn ann an NEO6M.cpp & NEO6M.h. Gabhamaid eisimpleir de neach-togail clas:
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
}Dè a tha ann agus dè a tha cudromach an seo? Bidh an gnĂŹomh init_device () aâ riarachadh cuimhne airson na buadhan againn: sreath_gps & gps_array, ach chan eil e cudromach. An rud as cudromaiche an seo, seo na beachdan:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1Cha tèid a h-uile dad a tha taobh a-staigh aâ bhloc bheachdan seo a thoirt a-steach do pogo rè ath-nuadhachadh còd Ă s deidh sin gluais air falbh!. Bidh a h-uile dad nach eil ann am blocaichean! Is iad sin na h-Ă iteachan far an urrainn dhuinn na deasachaidhean againn fhèin a phrògramadh agus a dhèanamh.
A-nis dè na prÏomh ghnÏomhan a tha sa chlas? 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);Nuair a tha sinn airson luach an fheart a leughadh sreath_gps, thèid na gnÏomhan a ghairm san òrdugh a leanas: daonnan_air a chur gu bà s_dubhan, read_attr_hardware и leugh_gps_string. LÏonaidh Read_gps_string gps_string leis an luach.
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
}Tiomnadh
Rach don phasgan stòr agus:
makeThèid am prògram a chur ri chèile a-steach don phasgan ~/DeviceServers.
tango-cs@tangobox:~/DeviceServers$ ls
NEO6Mgeòidh
jive
Tha cuid de dhâ innealan san stòr-dĂ ta mu thrĂ th, cruthaichidh sinn an fheadhainn againn a-nis Deasaich-> Cruthaich am frithealaiche

A-nis feuchaidh sinn ri ceangal a dhèanamh ris:

Chan obraich dad, an toiseach feumaidh sinn ar prògram a ruith:
sudo ./NEO6M neo6m -v2Chan urrainn dhomh ach ceangal ris aâ phort com le còraichean freumh-A. v - ĂŹre clĂ raidh.
A-nis is urrainn dhuinn ceangal a dhèanamh:

Luchd-ceannach
Ann an grafaigean, tha coimhead air dealbhan gu cinnteach math, ach feumaidh tu rudeigin nas fheumail. SgrÏobhamaid neach-dèiligidh a cheanglas ris an inneal againn agus a bheir leughaidhean bhuaithe.
#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);
}
}Ciamar a chur ri chèile:
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++Toradh:
tango-cs@tangobox:~/workspace/c$ ./a.out
$GPRMC,,V,,,,,,,,,,N*53
$GPRMC,,V,,,,,,,,,,N*53
$GPRMC,,V,,,,,,,,,,N*53Fhuair sinn an toradh mar thilleadh Ă ithne, aâ gabhail buadhan sreang agus sreath de charactaran.
iomraidhean
SgrÏobh mi an artaigil dhomh fhÏn, oir an dèidh greis bidh mi a 'tòiseachadh a' dÏochuimhneachadh ciamar agus dè a nÏ mi.
Tapadh leibh airson ur aire.
Source: www.habr.com
