āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ•āĻŋ āĻĻāĻ•ā§āĻˇāĻŋāĻŖ āĻ†āĻŽā§‡āĻ°āĻŋāĻ•āĻžāĻ° āĻ¨ā§ƒāĻ¤ā§āĻ¯?

āĻāĻŸāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻŦāĻ‚ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĨ¤
TANGO āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ 4āĻŸāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡: Linux, Windows NT, Solaris āĻāĻŦāĻ‚ HP-UXāĨ¤
āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŦ (āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ 18.04)

āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻœāĻžāĻ¨ā§‡āĻ¨?

āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻāĻŦāĻ‚ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡āĨ¤

  • āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻĄā§‡āĻŸāĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ­āĻžāĻŦāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž, āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤
  • āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§‹āĻ˛āĻŋāĻ‚ āĻ¸ā§‡āĻ¨ā§āĻ¸āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨.
  • āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡ āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻĒāĻžāĻŦā§‡āĻ¨

āĻ†āĻŽāĻŋ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ āĻāĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋ; āĻ†āĻŽāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ TangoBox 9.3-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ-āĻ¤ā§ˆāĻ°āĻŋ āĻ›āĻŦāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤
āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻĨā§‡āĻ•ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻāĻŸāĻž āĻ•āĻŋ āĻ—āĻ āĻŋāĻ¤?

  • āĻœā§€āĻŦāĻŋāĻ¤ — TANGO āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤
  • āĻĒā§‹āĻ—ā§‹ — TANGO āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄ āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸāĻ°āĨ¤
  • Astor — TANGO āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ°āĨ¤

āĻ†āĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĻā§āĻŸāĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻšāĻŦā§‡.

āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž

  • C
  • āĻ¸āĻŋ ++
  • āĻœāĻžāĻ­āĻž
  • āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ
  • āĻĒāĻžāĻ‡āĻĨāĻ¨
  • āĻŽāĻ¤āĻ˛āĻŦ
  • āĻ˛ā§āĻ¯āĻžāĻŦāĻ­āĻŋāĻ‰

āĻ†āĻŽāĻŋ āĻāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻŋ ++ āĻ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ C++ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ TANGO āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋāĻ•ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŦāĻ°āĻŖā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĢāĻŋ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻŦā§‡ GPS neo-6m-0-001:

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ†āĻĒāĻ¨āĻŋ āĻ›āĻŦāĻŋāĻ¤ā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨, āĻ†āĻŽāĻ°āĻž UART CP2102 āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦā§‹āĻ°ā§āĻĄāĻŸāĻŋāĻ•ā§‡ āĻĒāĻŋāĻ¸āĻŋāĻ¤ā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻŋāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĒāĻŋāĻ¸āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻšāĻ˛ā§‡, āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ /dev/ttyUSB[0-N], āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ /dev/ttyUSB0āĨ¤

āĻĒā§‹āĻ—ā§‹

āĻāĻ–āĻ¨ āĻ˛āĻžā§āĻš āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻĒā§‹āĻ—ā§‹, āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§‹āĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻ™ā§āĻ•āĻžāĻ˛ āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤

pogo

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋ āĻ†āĻŦāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻĢāĻžāĻ‡āĻ˛->āĻ¨āĻ¤ā§āĻ¨.

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§‡āĻ¤ā§‡:

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ (āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡, āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻŽāĻ°āĻž āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ…āĻ‚āĻļ āĻŦā§‹āĻāĻžāĻŦ) āĻ–āĻžāĻ˛āĻŋ āĻāĻŦāĻ‚ āĻĻā§āĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻ°āĻžāĻˇā§āĻŸā§āĻ° & āĻ…āĻŦāĻ¸ā§āĻĨāĻž.

āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ—ā§āĻŖāĻžāĻŦāĻ˛ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•:

āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻ¸āĻŽā§āĻĒāĻ¤ā§āĻ¤āĻŋ — āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻŽāĻžāĻ¨ āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻžāĻ° āĻ•āĻ°āĻŋ āĻāĻŸāĻŋ āĻ†āĻ°āĻŽā§āĻ­ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯; GPS āĻŦā§‹āĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻŦā§‹āĻ°ā§āĻĄā§‡āĻ° āĻ¨āĻžāĻŽ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ com="/dev/ttyUSB0" āĻāĻŦāĻ‚ com āĻĒā§‹āĻ°ā§āĻŸ āĻ—āĻ¤āĻŋ āĻŦāĻ‰āĻĄā§āĻ°ā§‡āĻĄ=9600

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ — āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ; āĻ¤āĻžāĻĻā§‡āĻ° āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

  • āĻ…āĻŦāĻ¸ā§āĻĨāĻž - āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻĨā§‡āĻ•ā§‡ āĻ¯ā§āĻ•ā§āĻ¤āĻ°āĻžāĻˇā§āĻŸā§āĻ°
  • āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ - āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻāĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻāĻ° āĻĒāĻ°āĻŋāĻĒā§‚āĻ°āĻ• āĻ…āĻŦāĻ¸ā§āĻĨāĻž
  • GSAarray - āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻœāĻŋāĻĒāĻŋāĻāĻ¸ āĻ†āĻ•āĻžāĻ°ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ DevVarCharArray

āĻāĻ° āĻĒāĻ°ā§‡, āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡/āĻĒāĻĄāĻŧāĻž/āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
āĻ¸ā§āĻ•ā§‡āĻ˛āĻžāĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ - āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ (āĻšāĻžāĻ°, āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚, āĻĻā§€āĻ°ā§āĻ˜, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)
āĻŦāĻ°ā§āĻŖāĻžāĻ˛ā§€ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ - āĻāĻ•-āĻŽāĻžāĻ¤ā§āĻ°āĻŋāĻ• āĻ…ā§āĻ¯āĻžāĻ°ā§‡
āĻšāĻŋāĻ¤ā§āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ - āĻĻā§āĻŦāĻŋ-āĻŽāĻžāĻ¤ā§āĻ°āĻŋāĻ• āĻ…ā§āĻ¯āĻžāĻ°ā§‡

āĻ¯ā§āĻ•ā§āĻ¤āĻ°āĻžāĻˇā§āĻŸā§āĻ° — āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋ āĻ¯ā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤

  • āĻ–ā§‹āĻ˛āĻž — āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻ–ā§‹āĻ˛āĻž āĻ†āĻ›ā§‡āĨ¤
  • āĻŦāĻ¨ā§āĻ§ - āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻŸāĻŋ āĻŦāĻ¨ā§āĻ§āĨ¤
  • āĻŦā§āĻ¯āĻ°ā§āĻĨ - āĻ¤ā§āĻ°ā§āĻŸāĻŋ.
  • ON - āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§āĻ¨āĨ¤
  • āĻŦāĻ¨ā§āĻ§ - āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ•ā§‹āĻ¨ āĻĄā§‡āĻŸāĻž āĻ¨ā§‡āĻ‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻœāĻŋāĻĒāĻŋāĻāĻ¸_āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚:

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ­ā§‹āĻŸā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ•āĻžāĻ˛ āĻ¸āĻŽāĻ¯āĻŧ ms, āĻ•āĻ¤ āĻ˜āĻ¨ āĻ˜āĻ¨ gps_string āĻŽāĻžāĻ¨ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻĄā§‡āĻŸā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ…ā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻŖāĻ¤:

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻĢāĻžāĻ‡āĻ˛->āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡, āĻŽā§‡āĻ•āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧ āĻ¨āĻž; āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻāĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻžāĻ•ā§āĻ¸āĻŸāĻŋ āĻšā§‡āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻāĻŸāĻŋāĻ¤ā§‡ āĻ•āĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻœāĻ¨ā§āĻŽā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŽā§āĻ›ā§‡ āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŦāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ (āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ āĻ•ā§€, āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§āĻ¨), āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻ­ā§āĻ˛ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻāĻ–āĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤ 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() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°ā§‡: āĻœāĻŋāĻĒāĻŋāĻāĻ¸_āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ & āĻœāĻŋāĻĒāĻŋāĻāĻ¸_āĻ…ā§āĻ¯āĻžāĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻž āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻœāĻŋāĻ¨āĻŋāĻ¸, āĻāĻ‡ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯:

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

āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ…ā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸ āĻŽāĻžāĻ¨ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻšāĻžāĻ‡ āĻœāĻŋāĻĒāĻŋāĻāĻ¸_āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚, āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•ā§āĻ°āĻŽā§‡ āĻŦāĻ˛āĻž āĻšāĻŦā§‡: āĻ¸āĻ°ā§āĻŦāĻĻāĻž_āĻšāĻžāĻ˛āĻŋāĻ¤_āĻšā§āĻ•, 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

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ•āĻŋāĻ›ā§ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž-> āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻāĻ–āĻ¨ āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

āĻŸā§āĻ¯āĻžāĻ™ā§āĻ—ā§‹ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ

āĻ•āĻŋāĻ›ā§āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻž, āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻšāĻŦā§‡:

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

āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻŦā§‡āĻ¨:

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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨