αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αžαžΎαž’αŸ’αžœαžΈαž‘αŸ…αž‡αžΆ αžαžΆαž“αŸ‹αž€αžΌαŸ”?

αžœαžΆβ€‹αž‡αžΆβ€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž‚αŸ’αžšαž„β€‹αž•αŸ’αž“αŸ‚αž€β€‹αžšαžΉαž„ αž“αž·αž„β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž•αŸ’αžŸαŸαž„αŸ—αŸ”
αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ TANGO αž‚αžΆαŸ†αž‘αŸ’αžšαžœαŸαž‘αž·αž€αžΆαž…αŸ†αž“αž½αž“ 4αŸ– Linux, Windows NT, Solaris αž“αž·αž„ HP-UX αŸ”
αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž›αžΈαž“αž»αž… (αž’αŸŠαžΌαž”αŸŠαž»αž“αž‘αžΌ 18.04)

αžαžΎβ€‹αžœαžΆβ€‹αž”αŸ’αžšαžΎβ€‹αžŸαŸ†αžšαžΆαž”αŸ‹β€‹αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ?

αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αŸ—αŸ”

  • αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‚αž·αžαž–αžΈαžšαž”αŸ€αž”αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸ’αž“αž»αž„ Database αž“αŸ„αŸ‡αž‘αŸ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αŸ”
  • αžœαžΆαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž…αžΆαž”αŸ‹αžŸαž‰αŸ’αž‰αžΆαž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”
  • αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž›αŸαžαž€αžΌαžŠαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ…αž‡αžΆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž˜αž½αž™αŸ”

αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‘αž‘αž½αž›?

αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αž”αžΎαž€αžœαžΆαž–αžΈαž€αžΌαžŠαž”αŸ’αžšαž—αž–αž”αžΆαž“αž‘αŸ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž“αŸƒ TangoBox 9.3 αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”
αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ†αž‘αžΎαž„αž–αžΈαž€αž‰αŸ’αž…αž”αŸ‹αŸ”

αžαžΎαžœαžΆαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡?

  • αž‡αžΈαžœ - αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž˜αžΎαž› αž“αž·αž„αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ TANGO αŸ”
  • αž—αžΈαž’αžΌαž’αžΌ - αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž§αž”αž€αžšαžŽαŸ TANGO αŸ”
  • αž’αžΆαžŸαŸ’αžαžΆαžš - αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ TANGO αŸ”

αž™αžΎαž„αž“αžΉαž„αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαŸ‚αž›αžΎαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž–αžΈαžšαžŠαŸ†αž”αžΌαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžš

  • C
  • C ++
  • αž€αŸ„αŸ‡αž‡αŸ’αžœαžΆ
  • JavaScript
  • αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹
  • αž˜αŸ‰αžΆαžαŸ‹αž‘αžΆαž”
  • LabVIEW

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ python & c++ αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡ C++ αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž”αž“αŸ’αžαž‘αŸ…αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž—αŸ’αž‡αžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž‘αŸ… TANGO αž“αž·αž„αžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆαŸ” αžαŸ’αž›αŸƒαžˆαŸ’αž“αž½αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ GPS neo-6m-0-001:

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αž™αžΎαž„αž—αŸ’αž‡αžΆαž”αŸ‹αž”αž“αŸ’αž‘αŸ‡αž‘αŸ…αž“αžΉαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžαžΆαž˜αžšαž™αŸˆ UART CP2102 αŸ” αž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš αž§αž”αž€αžšαžŽαŸαž“αžΉαž„αž›αŸαž…αž‘αžΎαž„ /dev/ttyUSB[0-N]αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ /dev/ttyUSB0.

αž—αžΈαž’αžΌαž’αžΌ

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž•αžΌαž αŸ’αž‚αŸ„αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž‚αŸ’αžšαŸ„αž„αž†αŸ’αž’αžΉαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αŸ’αžšαž»αž˜αž”αŸ’αžšαžΉαž€αŸ’αžŸαžΆαž—αž·αž”αžΆαž›αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

pogo

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αžαŸ’αž‰αž»αŸ†αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαžšαž½αž…αž αžΎαž™ αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαžœαžΆαž˜αŸ’αžαž„αž‘αŸ€αž αž―αž€αžŸαžΆαžš-> αžαŸ’αž˜αžΈαŸ”.

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ (αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αžαžΆαž˜αž§αž”αž€αžšαžŽαŸ αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αž“αŸαž™αžαžΆαž•αŸ’αž“αŸ‚αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ) αž‚αžΊαž‘αž‘αŸ αž“αž·αž„αž˜αžΆαž“αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžšαŸ– αžšαžŠαŸ’αž‹ & αžŸαŸ’αžαžΆαž“αž—αžΆαž–.

αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ–

αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž§αž”αž€αžšαžŽαŸ - αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ‚αž›αž™αžΎαž„αž•αŸ’αž‘αŸαžšαž‘αŸ…αž§αž”αž€αžšαžŽαŸαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆ; αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž“αŸ’αž‘αŸ‡ GPS αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž•αŸ’αž‘αŸαžšαžˆαŸ’αž˜αŸ„αŸ‡αž€αŸ’αžšαž»αž˜αž”αŸ’αžšαžΉαž€αŸ’αžŸαžΆαž—αž·αž”αžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” com="/dev/ttyUSB0" αž“αž·αž„αž›αŸ’αž”αžΏαž“αž…αŸ’αžšαž€ com baudrade = 9600

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ - αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž–αž½αž€αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αŸ”

  • STATE - αžαŸ’αžšαž‘αž”αŸ‹αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“, αž–αžΈ αžšαžŠαŸ’αž‹
  • STATUS - αžαŸ’αžšαž‘αž”αŸ‹αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜αžšαž”αžŸαŸ‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš STATE
  • GPSArray - αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰ αž”αŸ’αžšαž–αŸαž“αŸ’αž’ GPS αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ DevVarCharArray

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αŸ†αžŽαžαŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“/αžŸαžšαžŸαŸαžšαž‘αŸ…/αž–αžΈαžœαžΆαŸ”
αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ Scalar - αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžŸαžΆαž˜αž‰αŸ’αž‰ (αžαž½αž’αž€αŸ’αžŸαžš, αžαŸ’αžŸαŸ‚, αžœαŸ‚αž„αŸ” αž›αŸ” )
αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžœαž·αžŸαžΆαž›αž‚αž˜ - αž’αžΆαžšαŸαž˜αž½αž™αžœαž·αž˜αžΆαžαŸ’αžš
αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžšαžΌαž”αž—αžΆαž– - αž’αžΆαžšαŸαž–αžΈαžšαžœαž·αž˜αžΆαžαŸ’αžš

αžšαžŠαŸ’αž‹ - αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αžŸαŸ’αžαž·αžαž“αŸ…αŸ”

  • αž…αŸ†αž  - αž§αž”αž€αžšαžŽαŸαž”αžΎαž€αŸ”
  • αž‡αž·αžαžŸαŸ’αž“αž·αž‘αŸ’αž’ - αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αŸ”
  • αž”αžšαžΆαž‡αŸαž™ - αž€αŸ†αž αž»αžŸαŸ”
  • ON - αž‘αž‘αž½αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž§αž”αž€αžšαžŽαŸαŸ”
  • XNUMX$ - αž‚αŸ’αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž§αž”αž€αžšαžŽαŸαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ gps_string:

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αžšαž™αŸˆαž–αŸαž›αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αž αž–αŸαž›αžœαŸαž›αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ ms αžαž˜αŸ’αž›αŸƒ gps_string αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž”αŸ‹αžŠαŸαžαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αŸαž›αžœαŸαž›αžΆαž’αžΆαž”αŸ‹αžŠαŸαžαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž“αŸ„αŸ‡αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž”αŸ‹αžŠαŸαžαžαŸ‚αžαžΆαž˜αžŸαŸ†αžŽαžΎαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αŸ–

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž₯αž‘αžΌαžœαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ αž―αž€αžŸαžΆαžš -> αž”αž„αŸ’αž€αžΎαž

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ Makefile αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αŸ αž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αžΈαž€αž”αŸ’αžšαž’αž”αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžœαžΆαŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž‡αŸ†αž“αžΆαž“αŸ‹αžαŸ’αž˜αžΈαŸ” αžŠαŸ„αž™αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžœαžΆαž˜αŸ’αžαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αžΌαž“αžŸαŸ„αž…αž„αž€αŸ’αžšαž„ αž―αž€αžŸαžΆαžšαž”αž“αŸ’αžαŸ‚αž˜) αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ†αž—αŸ’αž›αŸαž…αžœαžΆαž”αžΆαž“αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž”αž“αŸ’αžαž‘αŸ…αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” pogo αž‡αžΆαž˜αž½αž™αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„:

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž™αžΎαž„αž“αžΉαž„αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎ NEO6M.cpp & NEO6M.h αŸ” αžαŸ„αŸ‡αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒ class constructorαŸ–

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);

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž’αžΆαž“αžαž˜αŸ’αž›αŸƒ attribute 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

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž½αž…αž αžΎαž™ αžŸαžΌαž˜αž”αž„αŸ’αž€αžΎαžαžšαž”αžŸαŸ‹αž™αžΎαž„αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›-> αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž₯αž‘αžΌαžœβ€‹αž™αžΎαž„β€‹αž–αŸ’αž™αžΆαž™αžΆαž˜β€‹αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž‘αŸ…β€‹αžœαžΆαŸ–

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

sudo ./NEO6M neo6m -v2

αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž…αŸ’αžšαž€ com αžŠαŸ„αž™αžŸαž·αž‘αŸ’αž’αž· αž‡αžΆ root- αž€. v - αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž”αžΆαž“αŸ–

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Tango

αž’αžαž·αžαž·αž‡αž“

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€ αž€αžΆαžšαž˜αžΎαž›αžšαžΌαž”αž—αžΆαž–αž‚αžΊαž–αž·αžαž‡αžΆαž›αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž„αž“αŸαŸ‡αŸ” αž…αžΌαžšαž™αžΎαž„αžŸαžšαžŸαŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŠαŸ‚αž›αž“αžΉαž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αž‘αž‘αž½αž›αž™αž€αž€αžΆαžšαž’αžΆαž“αž–αžΈαžœαžΆαŸ”

#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

αž™αžΎαž„β€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž›αž‘αŸ’αž’αž•αž›β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆ αžŠαŸ„αž™β€‹αž™αž€β€‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆβ€‹αž“αŸƒβ€‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš αž“αž·αž„β€‹αž’αžΆαžšαŸβ€‹αž“αŸƒβ€‹αžαž½αž’αž€αŸ’αžŸαžšαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„

αžαŸ’αž‰αž»αŸ†αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž›αž½αž“αžαŸ’αž‰αž»αŸ† αž–αŸ’αžšαŸ„αŸ‡αž˜αž½αž™αžšαž™αŸˆαž€αŸ’αžšαŸ„αž™αž˜αž€ αžαŸ’αž‰αž»αŸ†αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž—αŸ’αž›αŸαž…αž–αžΈαžšαž”αŸ€αž” αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαŸ”

αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹