рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдХрд╛рдп рддрдВрдЬреЛ?

рд╡рд┐рд╡рд┐рдз рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЖрдгрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ.
TANGO рд╕рдзреНрдпрд╛ 4 рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ: Linux, Windows NT, Solaris рдЖрдгрд┐ HP-UX.
рдпреЗрдереЗ рдЖрдореНрд╣реА рд▓рд┐рдирдХреНрд╕ (рдЙрдмрдВрдЯреВ 18.04) рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░реВ.

рддреЗ рдХрд╢рд╛рд╕рд╛рдареА рдЖрд╣реЗ?

рд╡рд┐рд╡рд┐рдз рдЙрдкрдХрд░рдгреЗ рдЖрдгрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рд╕рд╣ рдХрд╛рд░реНрдп рд╕реБрд▓рдн рдХрд░рддреЗ.

  • рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдХрд╕рд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рд╛рдпрдЪрд╛ рдпрд╛рдмрджреНрджрд▓ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рддреЗ рдЖрдкрд▓реНрдпрд╛рд╕рд╛рдареА рдЖрдзреАрдЪ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рдХреЗрд╡рд│ рдорддрджрд╛рди рд╕реЗрдиреНрд╕рд░рдЪреНрдпрд╛ рдпрдВрддреНрд░рдгреЗрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
  • рддреБрдордЪреЗ рд╕рд░реНрд╡ рдХреЛрдб рдПрдХрд╛ рдорд╛рдирдХрд╛рдкрд░реНрдпрдВрдд рдХрдореА рдХрд░рддреЗ.

рдХреБрдареЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ?

рдореА рддреЗ рд╕реНрддреНрд░реЛрдд рдХреЛрдбрд╡рд░реВрди рд▓реЙрдиреНрдЪ рдХрд░реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА; рдореА рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА TangoBox 9.3 рдЪреА рддрдпрд╛рд░ рдкреНрд░рддрд┐рдорд╛ рд╡рд╛рдкрд░рд▓реА.
рд╕реВрдЪрдирд╛ рдкреЕрдХреЗрдЬрдордзреВрди рдХрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рд╡реЗ рдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛рдд.

рддреНрдпрд╛рдд рдХрд╛рдп рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ?

  • рдЬреАрд╡ тАФ TANGO рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.
  • рдкреАрдУрдЬреАрдУ тАФ TANGO рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдХреЛрдб рдЬрдирд░реЗрдЯрд░.
  • рдПрд╕реНрдЯрд░ - рдЯреЕрдВрдЧреЛ рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ.

рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдкрд╣рд┐рд▓реНрдпрд╛ рджреЛрди рдШрдЯрдХрд╛рдВрдордзреНрдпреЗрдЪ рд░рд╕ рдЕрд╕реЗрд▓.

рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

  • C
  • C ++
  • рдЬрд╛рд╡рд╛
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
  • python рд▓рд╛
  • рдорд╛рддрд▓рд╛рдм
  • рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛

рдореА рддреНрдпрд╛рдЪреНрдпрд╛рд╕реЛрдмрдд рдкрд╛рдпрдерди рдЖрдгрд┐ рд╕реА++ рдордзреНрдпреЗ рдХрд╛рдо рдХреЗрд▓реЗ. рдпреЗрдереЗ C++ рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдИрд▓.

рдЖрддрд╛ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд▓рд╛ TANGO рд╢реА рдХрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ рддреНрдпрд╛рд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рдпрд╛рдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рдХрдбреЗ рдЬрд╛рдК рдпрд╛. рдлреА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди рдШреЗрддрд▓реЗ рдЬрд╛рдИрд▓ GPS neo-6m-0-001:

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдЬрд╕реЗ рдЖрдкрдг рдЪрд┐рддреНрд░рд╛рдд рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЖрдореНрд╣реА рдмреЛрд░реНрдбрд▓рд╛ рдкреАрд╕реАрд╢реА UART CP2102 рджреНрд╡рд╛рд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЛ. PC рд╢реА рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рджрд┐рд╕рддреЗ /dev/ttyUSB[0-N], рд╕рд╣рд╕рд╛ /dev/ttyUSB0.

рдкреАрдУрдЬреАрдУ

рдЖрддрд╛ рд▓рд╛рдБрдЪ рдХрд░реВрдпрд╛ рдкреЛрдЧреЛ, рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдмреЛрд░реНрдбрд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреЗрд▓реЗрдЯрди рдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рд╛.

pogo

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдореА рдХреЛрдб рдЖрдзреАрдЪ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рддреЛ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░реВ рдлрд╛рдЗрд▓->рдирд╡реАрди.

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдЖрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рдорд┐рд│рддрд╛рдд:

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдЖрдордЪреЗ рдбрд┐рд╡реНтАНрд╣рд╛рдЗрд╕ (рднрд╡рд┐рд╖реНтАНрдпрд╛рдд, рдбрд┐рд╡реНтАНрд╣рд╛рдЗрд╕рджреНрд╡рд╛рд░реЗ рдЖрдореНтАНрд╣рд╛рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪрд╛ рднрд╛рдЧ рд╕рдордЬреЗрд▓) рд░рд┐рдХрд╛рдореЗ рдЖрд╣реЗ рдЖрдгрд┐ рджреЛрди рдирд┐рдпрдВрддреНрд░рдг рдЖрджреЗрд╢ рдЖрд╣реЗрдд: рд░рд╛рдЬреНрдп & рд╕реНрдерд┐рддреА.

рддреЗ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгрдзрд░реНрдорд╛рдВрдиреА рднрд░рд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдорд╛рд▓рдорддреНрддрд╛ - рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рдЬреА рдЖрдореНрд╣реА рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ; рдЬреАрдкреАрдПрд╕ рдмреЛрд░реНрдбрд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдмреЛрд░реНрдбрдЪреЗ рдирд╛рд╡ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ com="/dev/ttyUSB0" рдЖрдгрд┐ рдХреЙрдо рдкреЛрд░реНрдЯ рдЧрддреА baudrade = 9600

рдЖрджреЗрд╢ тАФ рдЖрдордЪреЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдЬреНрдЮрд╛; рддреНрдпрд╛рдВрдирд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЖрдгрд┐ рдкрд░рддрд╛рд╡рд╛ рдореВрд▓реНрдп рджрд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

  • рд░рд╛рдЬреНрдп - рдкрд╛рд╕реВрди рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рдкрд░рдд рдХрд░рддреЗ рд╕реНрдЯреЗрдЯреНрд╕
  • рд╕реНрдерд┐рддреА - рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рдкрд░рдд рдХрд░рддреЗ, рд╣реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪреЗ рдкреВрд░рдХ рдЖрд╣реЗ рд░рд╛рдЬреНрдп
  • GSArray - рдкрд░рддрд╛рд╡рд╛ рдЬреАрдкреАрдПрд╕ рдлреЙрд░реНрдо рдордзреНрдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрд╡рд╡рд░рдЪрд╛рд░рд╛рд░реЗ

рдкреБрдвреЗ, рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рдЪреЗ рдЧреБрдгрдзрд░реНрдо рд╕реЗрдЯ рдХрд░рд╛ рдЬреЗ рддреНрдпрд╛рд╡рд░реВрди/рд╡рд╛рдЪрд▓реЗ/рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.
рд╕реНрдХреЗрд▓рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ - рд╕рд╛рдзреЗ рдЧреБрдгрдзрд░реНрдо (рдЪрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд▓рд╛рдВрдм рдЗ.)
рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдЧреБрдгрдзрд░реНрдо - рдПрдХ-рдЖрдпрд╛рдореА рдЕреЕрд░реЗ
рдкреНрд░рддрд┐рдорд╛ рдЧреБрдгрдзрд░реНрдо - рджреНрд╡рд┐рдорд┐рддреАрдп рдЕреЕрд░реЗ

рд╕реНрдЯреЗрдЯреНрд╕ тАФ рдЖрдордЪреЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдЬреНрдпрд╛ рд╕реНрдерд┐рддреАрдд рдЖрд╣реЗ.

  • рдЙрдШрдбрд╛ - рдЙрдкрдХрд░рдг рдЙрдШрдбреЗ рдЖрд╣реЗ.
  • рдмрдВрдж рдХрд░рд╛ - рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдмрдВрдж рдЖрд╣реЗ.
  • рдЕрдпрд╢рд╕реНрд╡реА - рддреНрд░реБрдЯреА.
  • ON - рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░реВрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛.
  • рдмрдВрдж - рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░реВрди рдХреЛрдгрддрд╛рд╣реА рдбреЗрдЯрд╛ рдирд╛рд╣реА.

рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг gps_string:

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдорддрджрд╛рди рдХрд╛рд▓рд╛рд╡рдзреА 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() рдлрдВрдХреНрд╢рди рдЖрдордЪреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдВрд╕рд╛рдареА рдореЗрдорд░реА рд╡рд╛рдЯрдк рдХрд░рддреЗ: 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

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдХрд╛рд╣реА рдЙрдкрдХрд░рдгреЗ рдЖрд╣реЗрдд, рдЪрд▓рд╛ рдЖрддрд╛ рдЖрдкрд▓реЗ рддрдпрд╛рд░ рдХрд░реВрдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛->рд╕рд░реНрд╡реНрд╣рд░ рддрдпрд╛рд░ рдХрд░рд╛

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдЖрддрд╛ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛:

рдЯрдБрдЧреЛ рдирд┐рдпрдВрддреНрд░рдгреЗ

рдХрд╛рд╣реАрд╣реА рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдкреНрд░рдердо рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд╛рд▓рд╡рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛