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

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

рдХреНрдпрд╛ рд╣реИ рдЯреИрдВрдЧреЛ?

рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИред
рдЯреИрдВрдЧреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 4 рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рд▓рд┐рдирдХреНрд╕, рд╡рд┐рдВрдбреЛрдЬ рдПрдирдЯреА, рд╕реЛрд▓рд╛рд░рд┐рд╕ рдФрд░ рдПрдЪрдкреА-рдпреВрдПрдХреНрд╕ред
рдпрд╣рд╛рдВ рд╣рдо рд▓рд┐рдирдХреНрд╕ (рдЙрдмрдВрдЯреВ 18.04) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ

рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?

рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

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

рдХрд╣рд╛рдВ рд╕реЗ рд▓рд╛рдПрдВ?

рдореИрдВ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛; рдореИрдВрдиреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдВрдЧреЛрдмреЙрдХреНрд╕ 9.3 рдХреА рддреИрдпрд╛рд░ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдирд┐рд░реНрджреЗрд╢ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ?

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

рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рджреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрдЧреАред

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

  • C
  • рд╕реА + +
  • рдЬрд╛рд╡рд╛
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
  • рдЕрдЬрдЧрд░
  • matlab
  • LabVIEW

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдФрд░ рд╕реА++ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ C++ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛.

рдЖрдЗрдП рдЕрдм рдЗрд╕ рд╡рд┐рд╡рд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЯреИрдВрдЧреЛ рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╢реБрд▓реНрдХ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреАрдкреАрдПрд╕ рдирд┐рдпреЛ-6рдПрдо-0-001:

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

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

рдкреЛрдЧреЛ

рдЕрдм рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдкреЛрдЧреЛ, рдФрд░ рд╣рдорд╛рд░реЗ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓реЗрдЯрди рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░реЗрдВред

pogo

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

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрдб рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ, рдЪрд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдлрд╝рд╛рдЗрд▓->рдирдпрд╛.

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

рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддрд╛ рд╣реИ:

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

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

рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ; рдЬреАрдкреАрдПрд╕ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмреЛрд░реНрдб рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ com='/dev/ttyUSB0' рдФрд░ рдХреЙрдо рдкреЛрд░реНрдЯ рд╕реНрдкреАрдб рдмреЙрдбреНрд░реЗрдб=9600

рдХрдорд╛рдиреЛрдВ - рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢; рдЙрдиреНрд╣реЗрдВ рддрд░реНрдХ рдФрд░ рд░рд┐рдЯрд░реНрди рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рд░рд╛рдЬреНрдп - рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╕реЗ рд░рд╛рдЬреНрдп
  • рд╕реНрдерд┐рддрд┐ - рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкреВрд░рдХ рд╣реИ рд░рд╛рдЬреНрдп
  • рдЬреАрдкреАрдПрд╕рдЕрд░реЗ - рд░рд┐рдЯрд░реНрди рдЬреАрдкреАрдПрд╕ рдкреНрд░рдкрддреНрд░ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ DevVarCharArray

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

рд░рд╛рдЬреНрдп - рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдЙрдкрдХрд░рдг рд╕реНрдерд┐рдд рд╣реИред

  • рдЦреБрд▓реА - рдбрд┐рд╡рд╛рдЗрд╕ рдЦреБрд▓рд╛ рд╣реИ.
  • рдмрдВрдж - рдбрд┐рд╡рд╛рдЗрд╕ рдмрдВрдж рд╣реИ.
  • рдЕрд╕рдлрд▓ - рдЧрд▓рддреАред
  • ON - рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  • рдмрдВрдж тАФ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ.

рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЬреАрдкреАрдПрд╕_рд╕реНрдЯреНрд░рд┐рдВрдЧ:

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

рдорддрджрд╛рди рдЕрд╡рдзрд┐ рдПрдордПрд╕ рдореЗрдВ рд╕рдордп, рдЬреАрдкреАрдПрд╕_рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХрд┐рддрдиреА рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЕрджреНрдпрддрди рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдЕрджреНрдпрддрди рдХреА рдЬрд╛рдПрдЧреАред

рдШрдЯрд┐рдд:

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

рдЕрдм рдЖрдкрдХреЛ рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдлрд╝рд╛рдЗрд▓->рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ

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

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ; рдкрд╣рд▓реА рдмрд╛рд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдирдИ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдореЗрдВ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡ рдбрд┐рд▓реАрдЯ рди рд╣реЛ рдЬрд╛рдПрдВред рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рдВрдХрд▓рди рдХреБрдВрдЬреА, рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЗрдВ) рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдЪрд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред рдкреЛрдЧреЛ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛:

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

рд╣рдореЗрдВ 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_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);

рдЬрдм рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреАрдкреАрдПрд╕_рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рд╣рдореЗрд╢рд╛_рдирд┐рд╖реНрдкрд╛рджрд┐рдд_рд╣реБрдХ, read_attr_рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ ╨╕ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ