ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ื•ื•ืึธืก ืื™ื– ื˜ืึทื ื’ืึธ?

ืขืก ืื™ื– ืึท ืกื™ืกื˜ืขื ืคึฟืึทืจ ืึธื ืคื™ืจื•ื ื’ ืคืึทืจืฉื™ื“ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืื•ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’.
ื˜ืึทื ื’ืึธ ืฉื˜ื™ืฆื˜ ื“ืขืจื•ื•ื™ื™ึทืœ 4 ืคึผืœืึทื˜ืคืึธืจืžืก: ืœื™ื ื•ืงืก, Windows NT, Solaris ืื•ืŸ HP-UX.
ื“ืึธ ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืœื™ื ื•ืงืก (Ubuntu 18.04)

ื•ื•ืึธืก ืื™ื– ืขืก ืคึฟืึทืจ?

ืกื™ืžืคึผืœืึทืคื™ื™ื– ืึทืจื‘ืขื˜ ืžื™ื˜ ืคืึทืจืฉื™ื“ืŸ ื•ื™ืกืจื™ื›ื˜ ืื•ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’.

  • ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืงืจืึธื ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืขืก ืื™ื– ืฉื•ื™ืŸ ื’ืขื˜ืืŸ ืคึฟืึทืจ ืื™ืจ.
  • ืขืก ืื™ื– ื ืึธืจ ื ื™ื™ื˜ื™ืง ืฆื• ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ืคึผืึธืœืœื™ื ื’ ืกืขื ืกืึธืจืก.
  • ืจื™ื“ื•ืกื™ื– ืึทืœืข ื“ื™ื™ืŸ ืงืึธื“ ืฆื• ืื™ื™ืŸ ื ืึธืจืžืึทืœ.

ื•ื•ื• ืฆื• ื‘ืึทืงื•ืžืขืŸ

ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ืงืึทื˜ืขืจ ืขืก ืคึฟื•ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ืึท ืคืึทืจื˜ื™ืง ื‘ื™ืœื“ ืคื•ืŸ TangoBox 9.3 ืฆื• ืึทืจื‘ืขื˜ืŸ.
ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื•ื•ื™ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืคึฟื•ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื–.

ืคื•ืŸ ื•ื•ืืก ื‘ืืฉื˜ื™ื™ื˜ ืขืก?

  • JIVE - ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ื–ืขืŸ ืื•ืŸ ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื˜ืึทื ื’ืึธ ื“ืึทื˜ืึทื‘ื™ื™ืก.
  • ืคึผืึธื’ืึธ - ืงืึธื“ ื’ืขื ืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ื˜ืึทื ื’ืึธ ืžื™ื˜ืœ ืกืขืจื•ื•ืขืจืก.
  • ืึทืกื˜ืึธืจ - ืคึผืจืึธื’ืจืึทื ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืคึฟืึทืจ ื“ื™ ื˜ืึทื ื’ืึธ ืกื™ืกื˜ืขื.

ืžื™ืจ ื•ื•ืขืœืŸ ื–ื™ื™ืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ื‘ืœื•ื™ื– ืื™ืŸ ื“ื™ ืขืจืฉื˜ืขืจ ืฆื•ื•ื™ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ.

ืฉื˜ื™ืฆื˜ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทื›ืŸ

  • C
  • C ++
  • ื–'ืื‘ื
  • ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜
  • ืคึผื™ื˜ื”ืึธืŸ
  • ืžืึทื˜ืœืึทื‘
  • ืœืึทื‘ื•ื•ื™ืขื•ื•

ืื™ืš ื’ืขืืจื‘ืขื˜ ืžื™ื˜ ืขืก ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ & C ++. ื“ืึธ C ++ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ.

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ื’ื™ื™ืŸ ืฆื• ืึท ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื•ื•ื™ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืžื™ื˜ืœ ืฆื• ื˜ืึทื ื’ืึธ ืื•ืŸ ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื. ื“ืขืจ ืึธืคึผืฆืึธืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื ื•ืžืขืŸ ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืคึผืก ื ืขืึธ-6ื-0-001:

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืื™ืŸ ื“ื™ ื‘ื™ืœื“, ืžื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื‘ืจืขื˜ ืฆื• ื“ื™ ืคึผื™ืกื™ ื“ื•ืจืš UART CP2102. ื•ื•ืขืŸ ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ืึท ืคึผื™ืกื™, ื“ื™ ืžื™ื˜ืœ ืื™ื– ืืจื•ื™ืก /dev/ttyUSB[0-N], ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ /dev/ttyUSB0.

ืคึผืึธื’ืึธ

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืงืึทื˜ืขืจ ืคึผืึธื’ืึธ, ืื•ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืกืงืขืœืขื˜ ืงืึธื“ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืื•ื ื“ื–ืขืจ ื‘ืจืขื˜.

pogo

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืื™ืš ื”ืื‘ ืฉื•ื™ืŸ ื‘ืืฉืืคืŸ ื“ืขื ืงืึธื“, ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทื›ืŸ ืขืก ื•ื•ื™ื“ืขืจ ื˜ืขืงืข-> ื ื™ื™ึท.

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืคืืœื’ืขื ื“ืข:

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืื•ื ื“ื–ืขืจ ืžื™ื˜ืœ (ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜, ื“ื•ืจืš ืžื™ื˜ืœ, ืžื™ืจ ืžื™ื™ื ืขืŸ ื“ื™ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื˜ื™ื™ืœ) ืื™ื– ืœื™ื™ื“ื™ืง ืื•ืŸ ื”ืื˜ ืฆื•ื•ื™ื™ ืงืึธื ื˜ืจืึธืœ ืงืึทืžืึทื ื“ื–: ืคืขืกื˜ืฉื˜ืขืœืŸ & ืžืึทืฆืขื•ื•.

ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืึธื ื’ืขืคื™ืœื˜ ืžื™ื˜ ื“ื™ ื ื™ื™ื˜ื™ืง ืึทื˜ืจื™ื‘ื™ื•ืฅ:

ืžื™ื˜ืœ ืคืึทืจืžืึธื’ - ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืึทืœื•ืขืก ื•ื•ืึธืก ืžื™ืจ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฆื• ื“ื™ ืžื™ื˜ืœ ืฆื• ื™ื ื™ืฉืึทืœื™ื™ื– ืขืก ืคึฟืึทืจ ื“ื™ ื’ืคึผืก ื‘ืจืขื˜, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื‘ืจืขื˜ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื com="/dev/ttyUSB0" ืื•ืŸ ืงืึทื ืคึผืึธืจื˜ ื’ื™ื›ืงื™ื™ึทื˜ ื‘ืึทื•ื“ืจืึทื“ = 9600

ืงืึทืžืึทื ื“ื– - ืงืึทืžืึทื ื“ื– ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ื ื“ื–ืขืจ ืžื™ื˜ืœ ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทืจื’ื•ืžืขื ื˜ืŸ ืื•ืŸ ืึท ืฆื•ืจื™ืงืงื•ืžืขืŸ ื•ื•ืขืจื˜.

  • ืฉื˜ืึทื˜ - ืงืขืจื˜ ื“ื™ ืงืจืึทื ื˜ ืฉื˜ืึทื˜, ืคื•ืŸ ืืžืขืจื™ืงืข
  • STATUS - ืงืขืจื˜ ื“ืขื ืงืจืึทื ื˜ ืกื˜ืึทื˜ื•ืก, ื“ืึธืก ืื™ื– ื“ืขืจ ื“ืขืจื’ืึทื ื’ ืคื•ืŸ ื“ื™ ืฉื˜ืจื™ืงืœ ืฉื˜ืึทื˜
  • GPSArray - ืงืขืจื˜ ื–ื™ืš ื’ืคึผืก ืฉื˜ืจื™ืงืœ ืื™ืŸ ื“ื™ ืคืึธืจืขื DevVarCharArray

ื•ื•ื™ื™ึทื˜ืขืจ, ืฉื˜ืขืœืŸ ื“ื™ ืžื™ื˜ืœ ืึทื˜ืจื™ื‘ื™ื•ืฅ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ืขื ืขืŸ / ื’ืขืฉืจื™ื‘ืŸ ืฆื• / ืคึฟื•ืŸ ืขืก.
ืกืงืึทืœืึทืจ ืึทื˜ืจื™ื‘ื™ื•ืฅ - ืคึผืฉื•ื˜ ืึทื˜ืจื™ื‘ื™ื•ืฅ (ืฉื˜ืจื™ืงืœ, ืฉื˜ืจื™ืงืœ, ืœืึทื ื’, ืืื–"ื• ื•)
ืกืคึผืขืงื˜ืจื•ื ืึทื˜ืจื™ื‘ื™ื•ืฅ - ืื™ื™ืŸ-ื“ื™ืžืขื ืฉืึทื ืึทืœ ืขืจื™ื™ื–
ื‘ื™ืœื“ ืึทื˜ืจื™ื‘ื™ื•ืฅ - ืฆื•ื•ื™ื™-ื“ื™ืžืขื ืฉืึทื ืึทืœ ืขืจื™ื™ื–

ืืžืขืจื™ืงืข - ื“ื™ ืฉื˜ืึทื˜ ืื™ืŸ ื•ื•ืึธืก ืื•ื ื“ื–ืขืจ ืžื™ื˜ืœ ืื™ื– ืœื™ื’ืŸ.

  • OPEN โ€” ื“ื™ ืžื™ื˜ืœ ืื™ื– ืึธืคืŸ.
  • ื ืึธืขื ื˜ - ื“ื™ ืžื™ื˜ืœ ืื™ื– ืคืืจืžืื›ื˜.
  • FAILT - ื˜ืขื•ืช.
  • ON - ื‘ืึทืงื•ืžืขืŸ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ.
  • ืึทื•ื•ืขืง - ืงื™ื™ืŸ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ.

ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืึทื“ื™ื ื’ ืึท ืึทื˜ืจื™ื‘ื™ื•ื˜ gps_string:

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืคึผืึธืœืœื™ื ื’ ืฆื™ื™ึทื˜ ืฆื™ื™ื˜ ืื™ืŸ MS, ื•ื•ื™ ืึธืคื˜ ื“ื™ gps_string ื•ื•ืขืจื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜. ืื•ื™ื‘ ื“ื™ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืฆื™ื™ื˜ ืื™ื– ื ื™ืฉื˜ ืกืคึผืขืกื™ืคื™ืขื“, ื“ื™ ืึทื˜ืจื™ื‘ื™ื•ื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ื‘ืœื•ื™ื– ืื•ื™ืฃ ื‘ืขื˜ืŸ.

ื’ืขืฉืขืŸ:

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืื™ืฆื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื“ื™ ืงืึธื“ ื˜ืขืงืข-> ื“ื–ืฉืขื ืขืจื™ื™ื˜

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ื™ Makefile ืื™ื– ื ื™ืฉื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื“ืขืจ ืขืจืฉื˜ืขืจ ืžืึธืœ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืงืขืกื˜ืœ ืฆื• ืฉืึทืคึฟืŸ ืขืก. ื“ืึธืก ืื™ื– ื’ืขื˜ืืŸ ืึทื–ื•ื™ ืึทื– ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ื’ืขืžืื›ื˜ ืฆื• ืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืื•ื™ืกื’ืขืžืขืงื˜ ื‘ืขืฉืึทืก ืึท ื ื™ื™ึทืข ื“ื•ืจ. ื ืึธืš ื‘ืืฉืืคืŸ ืขืก ืึทืžืึธืœ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื“ ืขืก ืคึฟืึทืจ ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ (ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื–ืึทืžืœื•ื ื’ ืฉืœื™ืกืœืขืŸ, ื ืึธืš ื˜ืขืงืขืก), ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื’ืขืกืŸ ื•ื•ืขื’ืŸ ืื™ื.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืžืึทืš ืื•ื™ืฃ ืฆื• ืคึผืจืึธื’ืจืึทืžืžื™ื ื’. ืคึผืึธื’ืึธ ืžื™ื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื“ื™ ืคืืœื’ืขื ื“ืข ืคึฟืึทืจ ืื•ื ื“ื–:

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืžื™ืจ ื•ื•ืขืœืŸ ื–ื™ื™ืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ 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

ืึทืœืฅ ื•ื•ืึธืก ืื™ื– ืื™ืŸ ื“ืขื ื‘ืึทืžืขืจืงื•ื ื’ ื‘ืœืึธืง ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ืคึผืึธื’ืึธ ื‘ืขืฉืึทืก ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืงืึธื“ ืจื™ื“ื–ืฉืขื ืขืจื™ื™ืฉืึทื ื– ืจื•ืง ืื•ื•ืขืง!. ืึทืœืฅ ื•ื•ืึธืก ืื™ื– ื ื™ืฉื˜ ืื™ืŸ ื‘ืœืึทืงืก ื•ื•ืขื˜ ื–ื™ื™ืŸ! ื“ืึธืก ื–ืขื ืขืŸ ื“ื™ ืขืจื˜ืขืจ ื•ื•ื• ืžื™ืจ ืงืขื ืขืŸ ืคึผืจืึธื’ืจืึทื ืื•ืŸ ืžืึทื›ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข ืจืขื“ืืงืฆื™ืข.

ืื™ืฆื˜ ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืคืึทื ื’ืงืฉืึทื ื– ื“ื™ ืงืœืึทืก ื›ึผื•ืœืœ? 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, ื“ื™ ืคืึทื ื’ืงืฉืึทื ื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืจื•ืคืŸ ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืกื“ืจ: ืฉื˜ืขื ื“ื™ืง_ืขืงืกืึทืงื™ื•ื˜ืึทื“_ืงืจื•ืง, 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

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืขืก ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืขื˜ืœืขื›ืข ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืœืึธื–ืŸ ืื•ื ื“ื– ืื™ืฆื˜ ืžืึทื›ืŸ ืื•ื ื“ื–ืขืจ ืจืขื“ืึทื’ื™ืจืŸ-> ืฉืึทืคึฟืŸ ืกืขืจื•ื•ื™ืจืขืจ

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ืื™ื:

ื˜ืึทื ื’ืึธ ืงืึธื ื˜ืจืึธืœืก

ื’ืึธืจื ื™ืฉื˜ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ, ืขืจืฉื˜ืขืจ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื•ื™ืคืŸ ืื•ื ื“ื–ืขืจ ืคึผืจืึธื’ืจืึทื:

sudo ./NEO6M neo6m -v2

ืื™ืš ืงืขืŸ ื ืึธืจ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ืงืึธืžืคึผืึธืจื˜ ืžื™ื˜ ืจืขื›ื˜ ื•ื•ืึธืจืฆืœโ€” ื . 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

ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ื•ื•ื™ ืึท ื‘ืึทืคึฟืขืœ ืฆื•ืจื™ืงืงื•ืžืขืŸ, ื’ืขื ื•ืžืขืŸ ื“ื™ ืึทื˜ืจื™ื‘ื™ื•ืฅ ืคื•ืŸ ืึท ืฉื˜ืจื™ืงืœ ืื•ืŸ ืึท ืžืขื ื’ืข ืคื•ืŸ โ€‹โ€‹ืื•ืชื™ื•ืช.

ืจืขืคึฟืขืจืขื ืฆืŸ

ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืคึฟืึทืจ ื–ื™ืš, ื•ื•ื™ื™ึทืœ ื ืึธืš ืึท ื‘ืฉืขืช ืื™ืš ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ืคืึทืจื’ืขืกืŸ ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ.

ื“ืื ืง ืื™ืจ ืคึฟืึทืจ ืื™ื™ืขืจ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’