مان ان کي سورس ڪوڊ مان لانچ نه ڪري سگھيس؛ مون ڪم ڪرڻ لاءِ TangoBox 9.3 جي تيار ٿيل تصوير استعمال ڪئي.
هدايتون بيان ڪن ٿيون ته پيڪيجز مان ڪيئن انسٽال ڪجي.
اهو ڇا تي مشتمل آهي؟
جيو - TANGO ڊيٽابيس کي ڏسڻ ۽ ايڊٽ ڪرڻ لاءِ استعمال ڪيو ويو.
پوگو - TANGO ڊوائيس سرورز لاء ڪوڊ جنريٽر.
Astor - TANGO سسٽم لاءِ پروگرام مئنيجر.
اسان کي صرف پهرين ٻن حصن ۾ دلچسپي وٺندي.
سپورٽ پروگرامنگ ٻوليون
C
C ++
جاوا
JavaScript
Python
مرڪب
LabVIEWVIEW
مون ان سان گڏ پيٿون ۽ سي ++ ۾ ڪم ڪيو. هتي C++ مثال طور استعمال ڪيو ويندو.
ھاڻي اچو ته تفصيل ڏانھن وڃو ته ڊوائيس کي TANGO سان ڪيئن ڳنڍجي ۽ ان سان ڪيئن ڪم ڪجي. فيس کي مثال طور ورتو ويندو GPS neo-6m-0-001:
جئين توهان تصوير ۾ ڏسي سگهو ٿا، اسان بورڊ کي PC سان UART CP2102 ذريعي ڳنڍيندا آهيون. جڏهن هڪ PC سان ڳنڍيل آهي، ڊوائيس ظاهر ٿئي ٿو /dev/ttyUSB[0-N]عام طور تي /dev/ttyUSB0.
پوگو
هاڻي اچو ته لانچ ڪريون پوگو، ۽ اسان جي بورڊ سان ڪم ڪرڻ لاءِ سڪل ڪوڊ ٺاهيو.
pogo
مون پهريان ئي ڪوڊ ٺاهي ڇڏيو آهي، اچو ته ان کي ٻيهر ٺاهيو فائل-> نئون.
ڊوائيس ملڪيت - ڊفالٽ قدر جيڪي اسان ڊوائيس ڏانهن منتقل ڪريون ٿا ان کي شروع ڪرڻ لاءِ؛ GPS بورڊ لاءِ، توهان کي سسٽم ۾ بورڊ جو نالو منتقل ڪرڻ جي ضرورت آهي com="/dev/ttyUSB0" ۽ com پورٽ جي رفتار باڊراڊ = 9600
حڪم - اسان جي ڊوائيس کي ڪنٽرول ڪرڻ لاء حڪم؛ انهن کي دليل ۽ واپسي جي قيمت ڏني وڃي ٿي.
رياست - موٽائي ٿو موجوده حالت، مان رياست
اسٽٽس - موجوده حالت کي واپس ڏئي ٿو، هي اسٽرنگ جي مڪمل آهي رياست
GSArray - واپسي ايس فارم ۾ تار DevVarCharArray
اڳيون، ڊيوائس جون خاصيتون سيٽ ڪريو جيڪي پڙهي / لکي سگهجن ٿيون / ان کان. اسڪالر خاصيتون - سادي خاصيتون (چار، تار، ڊگهو، وغيره) اسپيڪٽرم خاصيتون - هڪ-dimensional arrays تصوير جون خاصيتون - ٻه-dimensional arrays
رياست - رياست جنهن ۾ اسان جو ڊوائيس واقع آهي.
کليل - ڊوائيس کليل آهي.
بند - ڊوائيس بند آهي.
ناڪام - غلطي.
ON - ڊوائيس مان ڊيٽا حاصل ڪريو.
بند - ڊوائيس مان ڪابه ڊيٽا.
صفت شامل ڪرڻ جو مثال gps_string:
پولنگ جي مدت وقت ms ۾، ڪيترا ڀيرا gps_string جي قيمت کي اپڊيٽ ڪيو ويندو. جيڪڏهن تازه ڪاري جو وقت بيان نه ڪيو ويو آهي، خاصيت صرف درخواست تي اپڊيٽ ڪئي ويندي.
ٿيو:
هاڻي توهان کي ڪوڊ ٺاهڻ جي ضرورت آهي فائل-> ٺاھيو
ڊفالٽ طور، Makefile ٺاهيل نه آهي؛ پهريون ڀيرو توهان کي ان کي ٺاهڻ لاء باڪس چيڪ ڪرڻ جي ضرورت آهي. اهو ان ڪري ڪيو ويو آهي ته ان ۾ ڪيل تبديليون نئين نسل دوران ڊهي نه وڃن. ان کي هڪ دفعو ٺاهيو ۽ ان کي توهان جي پروجيڪٽ لاءِ ترتيب ڏنو (رجسٽر ڪمپليشن ڪيز، اضافي فائلون)، توهان ان جي باري ۾ وساري سگهو ٿا.
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
هر شي جيڪا هن تبصري بلاڪ جي اندر آهي پوگو ۾ شامل نه ڪئي ويندي بعد ۾ ڪوڊ جي بحالي جي دوران پري هٽايو!. سڀڪنھن شيء کي بلاڪ ۾ نه آهي ته ٿيندو! اھي جڳھون آھن جتي اسان پروگرام ڪري سگھون ٿا ۽ پنھنجون ترميمون ڪري سگھون ٿا.
جڏهن اسان پڙهڻ چاهيون ٿا وصف قدر gps_string، افعال کي هيٺين ترتيب ۾ سڏيو ويندو: هميشه_عملي_هڪ, read_attr_hardware и read_gps_string. Read_gps_string ڀريندو gps_string قدر سان.
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
}
ڪجھ به ڪم نه ڪندو، پهرين اسان کي اسان جي پروگرام کي هلائڻ جي ضرورت آهي:
sudo ./NEO6M neo6m -v2
مان صرف حقن سان com پورٽ سان ڳنڍي سگهان ٿو پاڙ-ا v - لاگنگ جي سطح.
هاڻي اسان ڳنڍي سگهون ٿا:
ڪسٽمر
گرافڪس ۾، تصويرن کي ڏسڻ ۾ ضرور سٺو آهي، پر توهان کي ڪجهه وڌيڪ مفيد جي ضرورت آهي. اچو ته هڪ ڪلائنٽ لکون جيڪو اسان جي ڊوائيس سان ڳنڍيندو ۽ ان مان پڙهائي وٺندو.
#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);
}
}