Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ TANGO ?
ΠΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ.
TANGO ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ 4 ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: Linux, Windows NT, Solaris ΠΈ HP-UX.
ΠΠ΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Linux(Ubuntu 18.04)
ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ?
Π£ΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΎΡΡΠΎΠΌ.
- ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΠ, ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π·Π° ΠΠ°Ρ.
- ΠΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΡΠΎΡΠ° Π΄Π°ΡΡΠΈΠΊΠΎΠ².
- Π‘Π²ΠΎΠ΄ΠΈΡ Π²Π΅ΡΡ ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ.
ΠΠ΄Π΅ Π²Π·ΡΡΡ?
ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΎΠ±ΡΠ°Π· TangoBox Π½Π° Π±Π°Π·Π΅ Ubuntu
ΠΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² Π½Π΅ ΡΠΌΠΎΠ³ Π΅Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· TangoBox 9.3.
Π ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ ΡΡΠ°Π²ΠΈΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΠ· ΡΠ΅Π³ΠΎ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ?
- JIVE β ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ TANGO.
- POGO β Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² TANGO.
- Astor β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ TANGO.
ΠΠ°Ρ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- C
- C++
- Java
- JavaScript
- Python
- Matlab
- LabVIEW
Π― ΡΠ°Π±ΠΎΡΠ°Π» Ρ Π½Π΅ΠΉ Π½Π° python & c++. ΠΠ΄Π΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ c++.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊ TANGO ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡΠ° ΠΏΠ»Π°ΡΠ° GPS neo-6m-0-001:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ ΠΏΠ»Π°ΡΡ ΠΊ ΠΠ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΡΠ΅Π· UART CP2102. ΠΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΠ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ /dev/ttyUSB[0-N], ΠΎΠ±ΡΡΠ½ΠΎ /dev/ttyUSB0.
POGO
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΠΌ pogo, ΠΈ Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠΊΠ΅Π»Π΅Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΠΎΠΉ.
pogo
Π£ ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ File->New.
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ°ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ(ΠΏΠΎΠ΄ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡΡΡ Π²Π²ΠΈΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ°ΡΡΡ) ΠΏΡΡΡΠΎΠ΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ: State & Status.
ΠΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ:
Device Property β Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π² ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π΄Π»Ρ ΠΏΠ»Π°ΡΡ GPS Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠΌΡ ΠΏΠ»Π°ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ com="/dev/ttyUSB0" ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ com ΠΏΠΎΡΡΠ° baudrade=9600
Commands β ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π°ΡΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ, ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- STATE β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΈΠ· States
- STATUS β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ, ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ STATE
- GPSArray β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ gps ΡΡΡΠΎΠΊΡ Π² Π²ΠΈΠ΄Π΅ DevVarCharArray
ΠΠ°Π»Π΅Π΅ Π·Π°Π΄Π°ΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ/ΠΏΠΈΡΠ°ΡΡ Π²/ΠΈΠ· Π½Π΅Π³ΠΎ.
Scalar Attributes β ΠΏΡΠΎΡΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ (char, string, long ΠΈ Ρ.ΠΏ.)
Spectrum Attributes β ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
Image Attributes β Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
States β ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
- OPEN β ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΠΊΡΡΡΠΎ.
- CLOSE β ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π·Π°ΠΊΡΡΡΠΎ.
- FAILT β ΠΎΡΠΈΠ±ΠΊΠ°.
- ON β ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- OFF β Π½Π΅Ρ Π΄Π°Π½Π½ΡΡ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° gps_string:
Polling period Π²ΡΠ΅ΠΌΡ Π² ΠΌΡ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ gps_string. ΠΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ Π·Π°Π΄Π°ΡΡ, ΡΠΎ Π°ΡΡΠΈΠ±ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ.
ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ File->Generate
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Makefile Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ, Π² 1-ΡΠΉ ΡΠ°Π· Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π³Π°Π»ΠΎΡΠΊΡ ΡΡΠΎ Π±Ρ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎ Π±Ρ Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² Π½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΊΠΈ Π½Π΅ ΡΠ΄Π°Π»ΡΠ»ΠΈΡΡ ΠΏΡΠΈ Π½ΠΎΠ²ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°Π² Π΅Π³ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ ΠΈ Π½Π°ΡΡΡΠΎΠΈΠ² ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ(ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΊΠ»ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π΄ΠΎΠΏ. ΡΠ°ΠΉΠ»Ρ) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΡΡΡ ΠΏΡΠΎ Π½Π΅Π³ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. pogo Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ°Ρ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ NEO6M.cpp & NEO6M.h. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ°:
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
}
Π§ΡΠΎ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΠΈ ΡΡΠΎ Π·Π΄Π΅ΡΡ Π³Π»Π°Π²Π½ΠΎΠ΅? Π ΡΡΠ½ΠΊΡΠΈΠΈ init_device() ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π½Π°ΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ²: gps_string & gps_array, Π½ΠΎ ΡΡΠΎ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ. Π‘Π°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π΄Π΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
/*----- PROTECTED REGION ID(NEO6M::constructor_1) ENABLED START -----*/
.......
/*----- PROTECTED REGION END -----*/ // NEO6M::constructor_1
ΠΡΠ΅ ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ΄Π° Π² pogo Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»ΡΡΡΡΡ!. ΠΡΠ΅ ΡΡΠΎ Π² Π½Π΅ Π±Π»ΠΎΠΊΠ°Ρ Π±ΡΠ΄Π΅Ρ! ΠΡΠΎ ΡΠ΅ ΠΌΠ΅ΡΡΠ° Π³Π΄Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²Π½ΠΎΡΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠ°Π²ΠΊΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Π³Π»Π°Π²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡ 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);
ΠΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Ρ ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° gps_string, Π±ΡΠ΄ΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: always_executed_hook, 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
}
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ:
make
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΏΠΊΡ ~/DeviceServers.
tango-cs@tangobox:~/DeviceServers$ ls
NEO6M
JIVE
jive
Π ΠΠ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°ΡΠ΅ Edit->Create Server
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ:
ΠΠΈ ΡΠ΅Π³ΠΎ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ, ΡΠ½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
sudo ./NEO6M neo6m -v2
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ com ΠΏΠΎΡΡΡ Ρ ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ root-Π°. 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);
}
}
ΠΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ:
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++
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
tango-cs@tangobox:~/workspace/c$ ./a.out
$GPRMC,,V,,,,,,,,,,N*53
$GPRMC,,V,,,,,,,,,,N*53
$GPRMC,,V,,,,,,,,,,N*53
ΠΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²Π·ΡΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π‘ΡΡΠ»ΠΊΠΈ
Π‘ΡΠ°ΡΡΡ ΠΏΠΈΡΠ°Π» Π΄Π»Ρ ΡΠ΅Π±Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΏΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠΈΠ½Π°Ρ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΈ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com