Tsari ne na sarrafa kayan masarufi da software iri-iri.
A halin yanzu TANGO yana goyan bayan dandamali 4: Linux, Windows NT, Solaris da HP-UX.
Anan zamu bayyana aiki tare da Linux (Ubuntu 18.04)
Menene don me?
Sauƙaƙe aiki tare da kayan aiki daban-daban da software.
Ba kwa buƙatar yin tunanin yadda ake adana bayanai a cikin rumbun adana bayanai, an riga an yi muku.
Ya zama dole kawai a kwatanta tsarin na'urar firikwensin zaɓe.
Ba zan iya ƙaddamar da shi daga lambar tushe ba; Na yi amfani da hoton da aka shirya na TangoBox 9.3 don aiki.
Umurnin sun bayyana yadda ake shigarwa daga fakiti.
Menene ya kunsa?
JIVE - ana amfani dashi don dubawa da gyara bayanan TANGO.
POGO - janareta na lambar don sabobin na'urar TANGO.
Taurari - Manajan shirin don tsarin TANGO.
Za mu yi sha'awar kawai a cikin abubuwa biyu na farko.
Harsunan shirye-shirye masu goyan baya
C
C ++
Java
JavaScript
Python
matlab
LabVIEW
Na yi aiki tare da shi a Python & c++. Anan C++ za a yi amfani da shi azaman misali.
Yanzu bari mu matsa zuwa bayanin yadda ake haɗa na'urar zuwa TANGO da yadda ake aiki da ita. Za a ɗauki kuɗin a matsayin misali GPS neo-6m-0-001:
Kamar yadda kake gani a hoton, muna haɗa allon zuwa PC ta UART CP2102. Lokacin da aka haɗa zuwa PC, na'urar tana bayyana /dev/ttyUSB[0-N], yawanci /dev/ttyUSB0.
POGO
Yanzu bari mu kaddamar pogo, da kuma samar da lambar kwarangwal don aiki tare da hukumar mu.
pogo
Na riga na ƙirƙiri lambar, bari mu sake ƙirƙira shi Fayil->Sabo.
Muna samun masu zuwa:
Na'urar mu (a nan gaba, ta na'urar za mu nufi sashin software) fanko ne kuma yana da umarnin sarrafawa guda biyu: Jihar & Status.
Dole ne a cika shi da halayen da ake bukata:
Dukiyar Na'ura - tsoho dabi'u waɗanda muke canjawa zuwa na'urar don fara ta; don allon GPS, kuna buƙatar canja wurin sunan allon a cikin tsarin. com = "/dev/ttyUSB0" da saurin tashar jiragen ruwa com baurade=9600
dokokin - umarni don sarrafa na'urar mu; ana iya ba su muhawara da ƙimar dawowa.
STATE - ya dawo da halin yanzu, daga Amirka
STATUS - yana dawo da halin yanzu, wannan shine madaidaicin kirtani STATE
GPSArray - dawo GPS kirtani a cikin tsari DevVarCharArray
Na gaba, saita halayen na'urar waɗanda za'a iya karantawa/rubutu zuwa/daga gareta. Halayen Scalar - sauki halaye (char, kirtani, dogo, da dai sauransu) Halayen Spectrum - tsararraki mai girma ɗaya Halayen Hoto - tsararraki masu girma biyu
Amirka - yanayin da na'urar mu ke ciki.
BUDE - na'urar a bude take.
KUSANTAR - an rufe na'urar.
GASKIYA - kuskure.
ON - karɓar bayanai daga na'urar.
KASHE - babu bayanai daga na'urar.
Misalin ƙara sifa gps_string:
Lokacin zabe lokaci a cikin ms, sau nawa za a sabunta ƙimar gps_string. Idan ba a kayyade lokacin sabuntawa ba, za a sabunta sifa ce kawai akan buƙata.
Ya faru:
Yanzu kuna buƙatar ƙirƙirar lambar Fayil-> Ƙirƙira
Ta hanyar tsoho, ba a samar da Makefile ba; a karon farko kana buƙatar duba akwatin don ƙirƙirar shi. Ana yin haka ne don kada a goge sauye-sauyen da aka yi masa yayin sabuwar tsara. Bayan ƙirƙira shi sau ɗaya kuma saita shi don aikin ku (maɓallan haɗaɗɗen rajista, ƙarin fayiloli), zaku iya mantawa da shi.
Yanzu bari mu matsa zuwa shirye-shirye. pogo tare da samar mana da abubuwa masu zuwa:
Za mu yi sha'awar NEO6M.cpp & NEO6M.h. Bari mu ɗauki misalin mai ginin aji:
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
}
Menene akwai kuma menene mahimmanci a nan? Aikin init_device() yana keɓance ƙwaƙwalwar ajiya don halayenmu: gps_string & gps_array, amma ba shi da mahimmanci. Abu mafi mahimmanci a nan, wadannan sune sharhin:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
Duk abin da ke cikin wannan shingen sharhi ba za a saka shi cikin pogo ba yayin sabunta lambar da ke gaba tafi!. Duk abin da ba a cikin tubalan zai kasance! Waɗannan su ne wuraren da za mu iya yin shirye-shirye da yin namu gyara.
Lokacin da muke son karanta darajar sifa gps_string, za a kira ayyukan a cikin tsari mai zuwa: ko da yaushe_executed_ƙugiya, karanta_attr_hardware и karanta_gps_string. Read_gps_string zai cika gps_string tare da ƙimar.
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
}
Haɗawa
Jeka babban fayil ɗin tushen kuma:
make
Za a haɗa shirin cikin babban fayil ~/DeviceServers.
tango-cs@tangobox:~/DeviceServers$ ls
NEO6M
JIVE
jive
Akwai wasu na'urori a cikin ma'ajin bayanai, bari yanzu mu ƙirƙiri namu Edit-> Ƙirƙiri Sabar
Yanzu bari mu yi ƙoƙarin haɗawa da shi:
Babu wani abu da zai yi aiki, da farko muna buƙatar gudanar da shirinmu:
sudo ./NEO6M neo6m -v2
Zan iya haɗawa da tashar com kawai tare da haƙƙoƙi tushen-A. v - matakin shiga.
Yanzu za mu iya haɗawa:
Abokin Ciniki
A cikin zane-zane, kallon hotuna tabbas yana da kyau, amma kuna buƙatar wani abu mafi amfani. Bari mu rubuta abokin ciniki wanda zai haɗa zuwa na'urar mu kuma mu ɗauki karatu daga gare ta.
#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);
}
}