рдореЛрдбрдмрд╕-рдЖрд░рдЯреАрдпреВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдЕрдореВрд░реНрдд



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







рддреАрди рд▓рд╛рдЗрди рдХрд╛ рд╡рд┐рдЪрд╛рд░



рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП рдореИрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ:



printf "\x00\x03\x00\x00\x00\x01\x85\xDB" > $tty ( dd if=$tty of=$ans count=256 2> /dev/null ) & /usr/bin/sleep $timeout; kill $! echo "[`hexdump -ve '1/1 "%d,"' $ans | sed 's/\(.*\),/\1/'`]"
      
      





рдХрд╛рд░реНрдп



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ OpenWrt рдлрд░реНрдорд╡реЗрдпрд░ рдЬреИрд╕реЗ TL-MR3020 рдХреЗ рд╕рд╛рде рдПрдХ рд░рд╛рдЙрдЯрд░ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдореЙрдбреНрдпреВрдмрд╕-рдЖрд░рдЯреВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд░рд╛рдЙрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдВрдбрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред



рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рд▓рд┐рдмрдордмрдбрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рдХрд╛рд░реНрдп рдХреМрд╢рд▓, рдЙрдкрдпреБрдХреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдУрдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред



рджреВрд╕рд░реА рдЪреАрдЬрд╝ рдЬреЛ рдЖрдк рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ OpenWrt рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдЗрдВрдЬрдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реБрдЖред рдЕрдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдЙрдирдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред TL-MR3020 рд░рд╛рдЙрдЯрд░ рдкрд░ рдмрд╣реБрдд рдХрдо рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд╣реИ, рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ 1 рдПрдордмреА рддрдХред рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдХреЗрдЬ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдХреБрдЫ рдФрд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рджреЗрдЦрд╛: рдХреБрдЫ рдХрд╛рд▓рд╛ рдЬрд╛рджреВ: рдмреИрд╢, рд╕реАрдЬреАрдЖрдИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб ред рдпрд╣ рдЫреЛрдЯрд╛ рд▓реЗрдЦ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЗрд░реА рдЬреИрд╕реА рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реАрдзреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рд╕реЗ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдзрд╛рд░рд╛ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП dd рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рдХреЛрдб рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИред



рдирд┐рд░реНрдгрдп



рдЕрдм рд╣рдо рдЙрди рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рд╣реИред



рдЪрд░рдг 1 рдореЛрдбрдмрд╕-рдЖрд░рдЯреВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд░реЛрдз рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣рдо рдкреНрд░рд┐рдВрдЯрдл рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:



 printf "\x00\x03\x00\x00\x00\x01\x85\xDB" > $tty
      
      





рдЪрд░рдг 2 рдареАрдХ рд╣реИ, рд╣рдордиреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рд╣рдо рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░реАрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдХрдорд╛рдВрдб рдлреНрд░реЗрдВрдбрд▓реА рдирд╣реАрдВ рд╣реИред рд╣рдо рдКрдкрд░ рджрд┐рдП рдЧрдП dd рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд▓реВрдк рдореЗрдВ рдмрд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ (рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдмрд╕ рд╕рдордп рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдкреИрдХреЗрдЬ рдХреЗ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ (256 рдмрд╛рдЗрдЯреНрд╕) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди dd рдЬрдо рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдо рдЖрдиреЗ рдкрд░ рд╕реНрд╡рд╛рдЧрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЕрдВрддрд┐рдо рдЪрд╛рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ: рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреЗрд░реА рдХреЗ рдмрд┐рдирд╛ рдмреИрд╢ рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░реЗрдВ



 ( dd if=$tty of=$ans count=256 2> /dev/null ) & /usr/bin/sleep $timeout; kill $!
      
      





рдпрд╛ рддреЛ:



 timeout $timeout dd if=$tty of=$ans count=256 2> /dev/null
      
      





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



рдЪрд░рдг 3 рд╣рдо рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЛ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ:



 echo "[`hexdump -ve '1/1 "%d,"' $ans | sed 's/\(.*\),/\1/'`]"
      
      





рдпрд╣ рдХреЛрдб рджрд╢рдорд▓рд╡ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдмреАрдЪ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИред рдпрд╣ json рдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ js array (JSON.parse) (рдпрд╛ рдЖрдорддреМрд░ рдкрд░ $ .post ('' json 'рдкреИрд░рд╛рдореАрдЯрд░) рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рд╛рдЙрдЯрд░ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рддреЛ рдЖрдк рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ usb-com рдПрдбреЗрдкреНрдЯрд░ рдФрд░ рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реВрдиреНрдп рдореЙрдбреЗрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рдЙрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдореЛрдбрдмрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдореЛрдбрдмрд╕ рд╕реНрд▓реЗрд╡ ред



рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣рд╛рдБ рд╕реЗ рдЖрддрд╛ рд╣реИ?



рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкрд╛рдардХ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ: "рд▓реЗрдХрд┐рди рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдЖрд░рд╕реА рдХреИрд╕реЗ рдкрдврд╝реЗрдВ?" рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ (рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рдмреИрд╢ рдкрд░ рдЧрдгрдирд╛ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ)ред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ "рдКрдкрд░реА" рд╕реНрддрд░, рдЕрд░реНрдерд╛рддреН HTML рдкреГрд╖реНрда рджреНрд╡рд╛рд░рд╛ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):



 Post: function( slaveid, func, bytes ) { var self = this; //  CRC  . var crc = this.crc16( bytes ); bytes.push( crc & 0xFF ); bytes.push( crc >> 8 ); //    . var adu = ''; for ( var b in bytes ) adu += '\\x' + dec2hex( bytes[b] ); //  application data unit (ADU). $('#console').val( adu ); return $.post( this.Url, { action: 'query', serial: this.Serial, data: adu }, function( data ) { self.OnReceive( slaveid, func, data ); }, 'json' ); }, Function: function( slaveid, func, address, value ) { var bytes = []; try { bytes.push( slaveid ); bytes.push( func ); bytes.push( address >> 8 ); bytes.push( address & 0xFF ); bytes.push( value >> 8 ); bytes.push( value & 0xFF ); return this.Post( slaveid, func, bytes ); } catch ( ex ) { console.error( ex ); } },
      
      





рдЪреЗрдХрд╕рдо рдХреЛ рд╣реА рдПрдХ рд╕рд╛рд░рдгреАрдмрджреНрдз рд╡рд┐рдзрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЯреЗрдмрд▓ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рд╡реЗ рджреЛрдиреЛрдВ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИрдВ, рдФрд░ рдХреЛрдб рд╕реНрд╡рдпрдВ рдорд╛рдирдХ рд╣реИ:



 crc16: function( data ) { var hi = 0xFF; var lo = 0xFF; var i; for (var j = 0, l = data.length; j < l; ++j) { i = lo ^ data[j]; lo = hi ^ CRC_HI[i]; hi = CRC_LO[i]; } return hi << 8 | lo; }
      
      





рдЙрджрд╛рд╣рд░рдг



рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╛рдЗрдмрд░рд╡рд░реНрдЯ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реВрдВ: рд╕рд╛рдЗрдмрд░рд╡рд╛рд░реНрдЯ рдореЛрдбрдмрд╕ рдореЙрдбреНрдпреВрд▓ ред рд╡рд╣рд╛рдВ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬ рднреАред



рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



1. рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ред







2. рд╣рдо 10 рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝рддреЗ рд╣реИрдВред







рдирд┐рд╖реНрдХрд░реНрд╖



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрд░реЛрдд modbus.js рд╣реЛрдЧрд╛, рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдЕрднреА рднреА Modbus.Register [] рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдореИрдВрдиреЗ MBAXP рдореЛрдбрдмрд╕ RTU / ASCII ActiveX рдирд┐рдпрдВрддреНрд░рдг рдХреЗ ActiveX рдШрдЯрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛ рд╕реЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЛрдб рдХреЗ рд╕рдВрдЧрдарди рдХреЛ рд╕рдордЭреЗрдВрдЧреЗред



рдЙрджрд╛рд╣рд░рдг рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╡рд┐рд╡рд░рдг рдкреБрд░рд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



рдЕрдиреБрдкреВрд░рдХ [06/11/2014]



рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЖрд╡рдзрд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕рдорд░реНрдердиред рдЙрдирдХреЗ рдУрд╡рд░рд▓реЗ рдХреЛ рд▓реЗрдХрд░ рд╕рдорд╕реНрдпрд╛ рдереАред



рдЫрд╡рд┐



рд╕рдВрджрд░реНрдн



1. рдореЛрдбрдмрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ V1.1b3 (рдкреАрдбреАрдПрдл)

2. рд░реВрд╕реА рдореЗрдВ рдореЛрдбрдмрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг (рдбреЙрдХреНрдЯрд░)

3. рд╕рд╛рдЗрдмрд░рд╡рд╛рд░реНрдЯ рдореЙрдбреНрдпреВрд▓ "рдореЛрдбрдмрд╕" (рдЙрджрд╛рд╣рд░рдг)



All Articles