рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рдХреЗ рдЯрд╛рдиреНрдЧреЛ?

рдпреЛ рд╡рд┐рднрд┐рдиреНрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реЛред
TANGO рд▓реЗ рд╣рд╛рд▓ рек рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ: Linux, Windows NT, Solaris рд░ HP-UXред
рдпрд╣рд╛рдБ рд╣рд╛рдореА рд▓рд┐рдирдХреНрд╕ (Ubuntu 18.04) рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреМрдВред

рдпреЛ рдХреЗ рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ?

рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдг рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕рдВрдЧ рдХрд╛рдо рд╕рд░рд▓ред

  • рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдбрд╛рдЯрд╛ рдХрд╕рд░реА рднрдгреНрдбрд╛рд░ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░рд┐рд╕рдХрд┐рдПрдХреЛ рдЫред
  • рдорддрджрд╛рди рд╕реЗрдиреНрд╕рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдпрдиреНрддреНрд░ рд╡рд░реНрдгрди рдЧрд░реНрди рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫред
  • рддрдкрд╛рдИрдВрдХреЛ рд╕рдмреИ рдХреЛрдбрд▓рд╛рдИ рдПрдХ рдорд╛рдирдХрдорд╛ рдШрдЯрд╛рдЙрдБрдЫред

рдХрд╣рд╛рдБ рдкреБрдЧреНрдиреЗ

рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реНрд░реЛрдд рдХреЛрдбрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХрд┐рди; рдореИрд▓реЗ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ TangoBox 9.3 рдХреЛ рддрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВред
рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрд▓реЗ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдмрд╛рдЯ рдХрд╕рд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫред

рдпрд╕рдорд╛ рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдЫ?

  • рдЬреАрд╡ - TANGO рдбрд╛рдЯрд╛рдмреЗрд╕ рд╣реЗрд░реНрди рд░ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛред
  • POGO - TANGO рдЙрдкрдХрд░рдг рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ред
  • рдПрд╕реНрдЯрд░ - TANGO рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдмрдиреНрдзрдХред

рд╣рд╛рдореА рдХреЗрд╡рд▓ рдкрд╣рд┐рд▓реЛ рджреБрдИ рдШрдЯрдХрд╣рд░реВрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдиреЗрдЫреМрдВред

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

  • C
  • рд╕реА ++
  • Java
  • рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
  • рдЕрдЬрдЧрд░
  • рдорд╛рддреНрд▓рд╛рдм
  • рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рджреГрд╢реНрдп

рдореИрд▓реЗ рдкрд╛рдЗрдерди рд░ c++ рдорд╛ рдпрд╕рдХреЛ рд╕рд╛рде рдХрд╛рдо рдЧрд░реЗрдВред рдпрд╣рд╛рдБ C++ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫред

рдЕрдм рдЯреНрдпрд╛рдЩреНрдЧреЛрдорд╛ рдпрдиреНрддреНрд░ рдХрд╕рд░реА рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рд░ рддреНрдпрд╕рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рд╡рд┐рд╡рд░рдгрдорд╛ рдЬрд╛рдФрдВред рд╢реБрд▓реНрдХрд▓рд╛рдИ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рд▓рд┐рдЗрдиреЗрдЫ GPS neo-6m-0-001:

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рддрдкрд╛рдИрд▓реЗ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╣рд╛рдореА рдмреЛрд░реНрдбрд▓рд╛рдИ рдкреАрд╕реАрдорд╛ UART CP2102 рдорд╛рд░реНрдлрдд рдЬрдбрд╛рди рдЧрд░реНрдЫреМрдВред PC рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрджрд╛, рдЙрдкрдХрд░рдг рджреЗрдЦрд╛ рдкрд░реНрджрдЫ /dev/ttyUSB[0-N], рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ /dev/ttyUSB0ред

POGO

рдЕрдм рд╕реБрд░реБ рдЧрд░реМрдВ рдкреЛрдЧреЛ, рд░ рд╣рд╛рдореНрд░реЛ рдмреЛрд░реНрдбрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрдВрдХрд╛рд▓ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

pogo

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рдореИрд▓реЗ рдХреЛрдб рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рд╕рдХреЗрдХреЛ рдЫреБ, рдпрд╕рд▓рд╛рдИ рдлреЗрд░рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рдлрд╛рдЗрд▓->рдирдпрд╛рдБ.

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдкрд╛рдЙрдБрдЫреМрдВ:

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

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

рдпреЛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реБ рд╕рдВрдЧ рднрд░рд┐рдПрдХреЛ рд╣реБрдиреБрдкрд░реНрдЫ:

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

рдЖрджреЗрд╢рд╣рд░реВ - рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЖрджреЗрд╢рд╣рд░реВ; рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рддрд░реНрдХ рд░ рдлрд┐рд░реНрддрд╛ рдореВрд▓реНрдп рджрд┐рди рд╕рдХрд┐рдиреНрдЫред

  • рд░рд╛рдЬреНрдп - рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдлрд░реНрдХрд╛рдЙрдБрдЫ, рдмрд╛рдЯ рд░рд╛рдЬреНрдпрд╣рд░реБ
  • рд╕реНрдерд┐рддрд┐ - рд╣рд╛рд▓рдХреЛ рд╕реНрдерд┐рддрд┐ рдлрд░реНрдХрд╛рдЙрдБрдЫ, рдпреЛ рд╕реНрдЯреНрд░рд┐рдЩрдХреЛ рдкреВрд░рдХ рд╣реЛ рд░рд╛рдЬреНрдп
  • GSArray - рдлрд░реНрдХрд╛рдЙрдБрдЫ рдЬреАрдкреАрдПрд╕ рдлрд╛рд░рдордорд╛ рд╕реНрдЯреНрд░рд┐рдЩ DevVarCharArray

рдЕрд░реНрдХреЛ, рдпрдиреНрддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬреБрди рдпрд╕рд▓рд╛рдИ рдкрдвреНрди/рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред
рд╕реНрдХреЗрд▓рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ - рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ (char, string, long, etc.)
рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ - рдПрдХ-рдЖрдпрд╛рдореА arrays
рдЫрд╡рд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ - рджреБрдИ-рдЖрдпрд╛рдореА arrays

рд░рд╛рдЬреНрдпрд╣рд░реБ - рд╣рд╛рдореНрд░реЛ рдпрдиреНрддреНрд░ рдЕрд╡рд╕реНрдерд┐рдд рднрдПрдХреЛ рд░рд╛рдЬреНрдпред

  • рдЦреБрд▓реНрд▓рд╛ - рдЙрдкрдХрд░рдг рдЦреБрд▓рд╛ рдЫред
  • рдирд┐рдХрдЯрдХреЛ - рдЙрдкрдХрд░рдг рдмрдиреНрдж рдЫред
  • рдлреЗрд▓ - рддреНрд░реБрдЯрд┐ред
  • ON - рдЙрдкрдХрд░рдгрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрддред
  • рдмрдиреНрдж - рдЙрдкрдХрд░рдгрдмрд╛рдЯ рдХреБрдиреИ рдбрд╛рдЯрд╛ рдЫреИрдиред

рд╡рд┐рд╢реЗрд╖рддрд╛ рдердкреНрдиреЗ рдЙрджрд╛рд╣рд░рдг gps_string:

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рдорддрджрд╛рди рдЕрд╡рдзрд┐ рд╕рдордп ms рдорд╛, рдХрддрд┐ рдкрдЯрдХ gps_string рдорд╛рди рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреЗрдЫред рдпрджрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдиреБрд░реЛрдзрдорд╛ рдорд╛рддреНрд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдиреЗрдЫред

рднрдпреЛ:

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рдЕрдм рддрдкрд╛рдИрдВрд▓реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдлрд╛рдЗрд▓-> рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЯреНрдпрд╛рдЩреНрдЧреЛ рдирд┐рдпрдиреНрддреНрд░рдгрд╣рд░реВ

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, Makefile рдЙрддреНрдкрдиреНрди рд╣реБрдБрджреИрди; рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдмрд╛рдХрд╕ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░рд┐рдиреНрдЫ рддрд╛рдХрд┐ рдпрд╕рдорд╛ рдЧрд░рд┐рдПрдХрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдирдпрд╛рдБ рдкреБрд╕реНрддрд╛рдХреЛ рд╕рдордпрдорд╛ рдореЗрдЯрд┐рдиреЗ рдЫреИрдирдиреНред рдпрд╕рд▓рд╛рдИ рдПрдХ рдкрдЯрдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рд░ рддрдкрд╛рдЗрдБрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ (рджрд░реНрддрд╛ рд╕рдВрдХрд▓рди рдХреБрдЮреНрдЬреАрд╣рд░реВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓рд╣рд░реВ), рддрдкрд╛рдЗрдБ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрд┐рд░реНрд╕рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдЕрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдорд╛ рдЬрд╛рдФрдВред 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 ╨╕ рдкрдвреНрдиреБрд╣реЛрд╕реН_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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди