เดŸเดพเด‚เด—เต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ

เดŸเดพเด‚เด—เต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ

เดŽเดจเตเดคเต เดŸเดพเด‚เด—เต‹?

เดตเดฟเดตเดฟเดง เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเดฑเตเด•เดณเตเด‚ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเตเด•เดณเตเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเดฎเดพเดฃเดฟเดคเต.
TANGO เดจเดฟเดฒเดตเดฟเตฝ 4 เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเตเด•เดณเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต: Linux, Windows NT, Solaris, HP-UX.
เดฒเดฟเดจเด•เตเดธเตเดฎเดพเดฏเดฟ (เด‰เดฌเตเดฃเตเดŸเต 18.04) เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด‚.

เดฆเดฒเตเดฏเดพ เดšเต†เด—เต‹ เดจเต‚เดทเตเดจเต‹?

เดตเดฟเดตเดฟเดง เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดธเต‹เดซเตเดฑเตเดฑเตเดตเต†เดฏเดฑเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต.

  • เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดกเดพเดฑเตเดฑ เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เดšเดฟเดจเตเดคเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เด‡เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด‡เดคเดฟเดจเด•เด‚ เดšเต†เดฏเตเดคเตเด•เดดเดฟเดžเตเดžเต.
  • เดชเต‹เดณเดฟเด‚เด—เต เดธเต†เตปเดธเดฑเตเด•เตพเด•เตเด•เตเดณเตเดณ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเด‚ เดฎเดคเดฟ.
  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ เด’เดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเดฟเดฒเต‡เด•เตเด•เต เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดŽเดตเดฟเดŸเต† เดฒเดญเดฟเด•เตเด•เตเด‚?

เดธเต‹เดดเตเดธเต เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดคเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเดจเดพเดฏเดฟเดฒเตเดฒ; เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดžเดพเตป TangoBox 9.3-เดจเตเดฑเต† เด’เดฐเต เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เด‡เดฎเต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต.
เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเด™เตเด™เดจเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต?

  • เดœเต€เดตเต - TANGO เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เดพเดฃเดพเดจเตเด‚ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.
  • เดชเต‹เด—เต‹ - TANGO เด‰เดชเด•เดฐเดฃ เดธเต†เตผเดตเดฑเตเด•เตพเด•เตเด•เตเดณเตเดณ เด•เต‹เดกเต เดœเดจเดฑเต‡เดฑเตเดฑเตผ.
  • เด†เดธเตเดฑเตเดฑเตผ - TANGO เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดฎเดพเดจเต‡เดœเตผ.

เด†เดฆเตเดฏเดคเตเดคเต† เดฐเดฃเตเดŸเต เด˜เดŸเด•เด™เตเด™เดณเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเดพเด•เต‚.

เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เตพ

  • C
  • เดธเดฟ ++
  • เดœเดพเดต
  • เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต
  • เดชเตˆเดคเตเดคเตบ
  • เดฎเดพเดคเตโ€Œเดฒเดพเดฌเต
  • เดฒเดพเดฌเตโ€Œเดตเตเดฏเต‚

เดชเตˆเดคเตเดคเดฃเดฟเดฒเตเด‚ เดธเดฟ++ เดฒเตเด‚ เดžเดพเตป เด…เดคเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเต. เด‡เดตเดฟเดŸเต† C++ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดŸเดพเตปเด—เต‹เดฏเดฟเดฒเต‡เด•เตเด•เต เด‰เดชเด•เดฐเดฃเด‚ เดŽเด™เตเด™เดจเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚, เด…เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเด‚ เดŽเดจเตเดจเดคเดฟเดจเตเดฑเต† เดตเดฟเดตเดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเดฎเตเด•เตเด•เต เดชเต‹เด•เดพเด‚. เดซเต€เดธเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเด‚ GPS เดจเดฟเดฏเต‹-6m-0-001:

เดŸเดพเด‚เด—เต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ

เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, UART CP2102 เดตเดดเดฟ เดžเด™เตเด™เตพ เดฌเต‹เตผเดกเต เดชเดฟเดธเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดชเดฟเดธเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด‰เดชเด•เดฐเดฃเด‚ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจเต /dev/ttyUSB[0-N], เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ /dev/ttyUSB0.

เดชเต‹เด—เต‹

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเดพเด‚ เดชเต‹เด—เต‹, เด•เต‚เดŸเดพเดคเต† เดžเด™เตเด™เดณเตเดŸเต† เดฌเต‹เตผเดกเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด…เดธเตเดฅเดฟเด•เต‚เดŸ เด•เต‹เดกเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.

pogo

เดŸเดพเด‚เด—เต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ

เดžเดพเตป เด‡เดคเดฟเดจเด•เด‚ เด•เต‹เดกเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต, เดจเดฎเตเด•เตเด•เต เด…เดคเต เดตเต€เดฃเตเดŸเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ เดซเดฏเตฝ->เดชเตเดคเดฟเดฏเดคเต.

เดŸเดพเด‚เด—เต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ

เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต:

เดŸเดพเด‚เด—เต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ

เดžเด™เตเด™เดณเตเดŸเต† เด‰เดชเด•เดฐเดฃเด‚ (เดญเดพเดตเดฟเดฏเดฟเตฝ, เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดญเดพเด—เด‚ เดŽเดจเตเดจเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต) เดถเต‚เดจเตเดฏเดฎเดพเดฃเต เด•เต‚เดŸเดพเดคเต† เดฐเดฃเตเดŸเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดฃเตเดŸเต: เด…เดตเดธเตเดฅ & เดชเดฆเดตเดฟ.

เด†เดตเดถเตเดฏเดฎเดพเดฏ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ เด•เตŠเดฃเตเดŸเต เด‡เดคเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚:

เด‰เดชเด•เดฐเดฃ เดธเตเดตเดคเตเดคเต - เดกเดฟเดตเตˆเดธเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจ เดธเตเดฅเดฟเดฐ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ; เดœเดฟเดชเดฟเดŽเดธเต เดฌเต‹เตผเดกเดฟเดจเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต† เดฌเต‹เตผเดกเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เด•เตˆเดฎเดพเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. com="/dev/ttyUSB0" เด•เต‹เด‚ เดชเต‹เตผเดŸเตเดŸเต เดตเต‡เด—เดคเดฏเตเด‚ เดฌเต‹เดกเตเดฐเต‡เดกเต=9600

เด•เดฎเดพเตปเดกเตเด•เตพ โ€” เดžเด™เตเด™เดณเตเดŸเต† เด‰เดชเด•เดฐเดฃเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ; เด…เดตเดฏเตเด•เตเด•เต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เดณเตเด‚ เดฑเดฟเดŸเตเดŸเต‡เตบ เดฎเต‚เดฒเตเดฏเดตเตเด‚ เดจเตฝเด•เดพเด‚.

  • STATE - เดจเดฟเดจเตเดจเต เดจเดฟเดฒเดตเดฟเดฒเต† เด…เดตเดธเตเดฅ เดจเตฝเด•เตเดจเตเดจเต เดธเด‚เดธเตเดฅเดพเดจเด™เตเด™เตพ
  • เดชเดฆเดตเดฟ - เดจเดฟเดฒเดตเดฟเดฒเต† เดจเดฟเดฒ เดจเตฝเด•เตเดจเตเดจเต, เด‡เดคเต เดธเตเดŸเตเดฐเดฟเด‚เด—เดฟเดจเตเดฑเต† เดชเต‚เดฐเด•เดฎเดพเดฃเต STATE
  • GPSArray - เดฎเดŸเด™เตเด™เตเดจเตเดจเต เดœเดฟเดชเดฟเดŽเดธเต เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดฆเต‡เดตเตเดตเตผเดšเดพเตผเด…เดฑเต‡

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เดพเตป/เดŽเดดเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•.
เดธเตเด•เต†เดฏเดฟเดฒเตผ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ - เดฒเดณเดฟเดคเดฎเดพเดฏ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ (เดšเดพเตผ, เดธเตเดŸเตเดฐเดฟเด‚เด—เต, เดจเต€เดณเด‚ เดฎเตเดคเดฒเดพเดฏเดต)
เดธเตเดชเต†เด•เตเดŸเตเดฐเด‚ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ - เดเด•เดฎเดพเดจ เดถเตเดฐเต‡เดฃเดฟเด•เตพ
เด‡เดฎเต‡เดœเต เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ - เดฆเตเดตเดฟเดฎเดพเดจ เดถเตเดฐเต‡เดฃเดฟเด•เตพ

เดธเด‚เดธเตเดฅเดพเดจเด™เตเด™เตพ - เดžเด™เตเด™เดณเตเดŸเต† เด‰เดชเด•เดฐเดฃเด‚ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจ เดธเด‚เดธเตเดฅเดพเดจเด‚.

  • เดคเตเดฑเด•เตเด•เตเด• - เด‰เดชเด•เดฐเดฃเด‚ เดคเตเดฑเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • เด…เดŸเดฏเตเด•เตเด•เตเด• - เด‰เดชเด•เดฐเดฃเด‚ เด…เดŸเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดชเดฐเดพเดœเดฏเด‚ - เดชเดฟเดถเด•เต.
  • 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 เดฎเต‚เดฒเตเดฏเด‚ 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

เดŽเดจเดฟเด•เตเด•เต เด•เต‹เด‚ เดชเต‹เตผเดŸเตเดŸเดฟเดฒเต‡เด•เตเด•เต เด…เดตเด•เดพเดถเด™เตเด™เดณเต‹เดŸเต† เดฎเดพเดคเตเดฐเดฎเต‡ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚ เดตเต‡เดฐเต-เดŽ. 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•