рд╣рдо рдкреЗрдЬрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ POCSAG, рднрд╛рдЧ 1

рд╣рд╛рдп рд╣рдорд░!

рдПрдХ рдмрд╛рд░, рдЬрдм рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдХреА рдХреАрдордд $ 2000 рдереА рдФрд░ рдХреЙрд▓ рдХреЗ рдПрдХ рдорд┐рдирдЯ рдХреА рд▓рд╛рдЧрдд 50 рд╕реЗрдВрдЯ рдереА, рдкреЗрдЬрд┐рдВрдЧ рдЬреИрд╕реА рд▓реЛрдХрдкреНрд░рд┐рдп рдЪреАрдЬ рдереАред рдлрд┐рд░ рдХрдиреЗрдХреНрд╢рди рд╕рд╕реНрддрд╛ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдкреЗрдЬрд░ рдкрд╣рд▓реЗ рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдпреА рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдПрдХ рдХреВрд░рд┐рдпрд░ рдпрд╛ рд╕рдЪрд┐рд╡ рдХреА рдЧреИрд░-рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рдпрд╣ рддрдХрдиреАрдХ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИред


рдЬреЛ рд▓реЛрдЧ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП "рдкреЗрдЬрд░ рдкрдврд╝реЗрдВ, рдмрд╣реБрдд рд╕реЛрдЪрд╛", рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рд░реА рд░рд╣рд╛ред рдЬреЛ рд▓реЛрдЧ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЙрдкрд▓рдмреНрдз рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА


рдЬреЛ рд▓реЛрдЧ рднреВрд▓ рдЧрдП рдереЗ рдпрд╛ 2000 рдХреЗ рджрд╢рдХ рдХреЗ рдмрд╛рдж рдкреИрджрд╛ рд╣реБрдП рдереЗ, рдореИрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╛рдж рдХрд░реВрдВрдЧрд╛ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдкреЗрдЬрд┐рдВрдЧ рд╕рдВрдЪрд╛рд░ рдХреЗ рджреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ:

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

- рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдХрд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рддрд╛рдХрд┐ рдкреЗрдЬрд░ 2 рд╕рд╛рдзрд╛рд░рдг рдПрдП рдмреИрдЯрд░реА рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рддрдХ рд░рд┐рдЪрд╛рд░реНрдЬ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХреЗред

рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рдорд╛рдирдХ рд╣реИрдВ - POCSAG (рдкреЛрд╕реНрдЯ рдСрдлрд┐рд╕ рдХреЛрдб рдорд╛рдирдХреАрдХрд░рдг рд╕рд▓рд╛рд╣рдХрд╛рд░ рд╕рдореВрд╣) рдФрд░ рдлреНрд▓реЗрдХреНрд╕ ред рдорд╛рдирдХ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирдП рдирд╣реАрдВ рд╣реИрдВ, 1982 рдореЗрдВ POCSAG рдХреЛ рд╡рд╛рдкрд╕ рдордВрдЬреВрд░реА рджреЗ рджреА рдЧрдИ, 512, 1200 рдФрд░ 2400 рдмрд┐рдЯ / рдПрд╕ рдХреА рд╕рдорд░реНрдерд┐рдд рдЧрддрд┐ред рд╕рдВрдЪрд░рдг рдХреЗ рд▓рд┐рдП, 4.5KHz рдХреА рдЖрд╡реГрддреНрддрд┐ рд░рд┐рдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рд╢рд┐рдлреНрдЯ рдХреАрдЗрдВрдЧ (FSK) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдпрд╛ рдлреНрд▓реЗрдХреНрд╕ рдорд╛рдирдХ (90 рдХреЗ рджрд╢рдХ рдореЗрдВ рдореЛрдЯреЛрд░реЛрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд) 6400 рдмреАрдкреАрдПрд╕ рддрдХ рдХреА рдЧрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рди рдХреЗрд╡рд▓ рдПрдлрдПрд╕рдХреЗ 2, рдмрд▓реНрдХрд┐ рдПрдлрдПрд╕рдХреЗ 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ, рдФрд░ 20 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдбрд┐рдХреЛрдбрд░реНрд╕ рдЙрдирдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдереЗ рдЬреЛ рдПрдХ рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб рдХреЗ рдЗрдирдкреБрдЯ рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдВрджреЗрд╢ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ)ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


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



рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡реГрддреНрддрд┐ рдореЙрдбреБрд▓рди, рдкреНрд░рд╛рдкреНрдд рдореЛрдб рднреА рдПрдлрдПрдо рд╕реЗрдЯред HDSDR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо WAV рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ wav рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

from scipy.io import wavfile import matplotlib.pyplot as plt fs, data = wavfile.read("pocsag.wav") plt.plot(data) plt.show() 

рдкрд░рд┐рдгрд╛рдо (рдмрд┐рдЯреНрд╕ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИрдВ):



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЗрдВрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рдЖрдВрдЦ рд╕реЗ", рдЖрдк рдмрд┐рдЯреНрд╕ рдХреЛ "0" рдФрд░ рдЬрд╣рд╛рдВ "1" рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЧреНрд░рд╛рдлрд╝ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ "рдмрд┐рдЯ" рдХреА рдЪреМрдбрд╝рд╛рдИ 20 рдирдореВрдиреЗ рд╣реИ, рдЬреЛ 24000 рдирдореВрдиреЛрдВ / рдПрд╕ рдХреА wav рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдХ рдирдореВрдирд╛ рдЖрд╡реГрддреНрддрд┐ рдкрд░ 1200 рдмрд┐рдЯ / рдПрд╕ рдХреА рдЧрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╣рдо рд╕рдВрдХреЗрдд рдореЗрдВ рд╢реВрдиреНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдХреНрд░рдордг рдХреА рдЬрдЧрд╣ рдкрд╛рддреЗ рд╣реИрдВ - рдпрд╣ рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреАред рд╣рдо рдмрд┐рдЯреНрд╕ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░ рдорд╛рд░реНрдХрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред

 speed = 1200 fs = 24000 cnt = int(fs/speed) start = 0 for p in range(2*cnt): if data[p] < - 50 and data[p+1] > 50: start = p break # Bits frame bits = np.zeros(data.size) for p in range(0, data.size - cnt, cnt): bits[start + p] = 500 plt.plot(bits) 

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



рд▓рдВрдмреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрд╡реГрддреНрддрд┐ рд╕рдорд╛рдпреЛрдЬрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

 bits_str = "" for p in range(0, data.size - cnt, cnt): s = 0 for p1 in range(p, p+cnt): s += data[p] bits_str += "1" if s < 0 else "0" print("Bits") print(bits_str) 

рд╢рд╛рдпрдж рд▓реВрдк рдХреЛ рдЫреЛрдбрд╝ рдХрд░ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдкрд░рд┐рдгрд╛рдо рдмрд┐рдЯреНрд╕ (рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ) рдХрд╛ рдПрдХ рд╕рдорд╛рдкреНрдд рдЕрдиреБрдХреНрд░рдо рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред

101010101010101010101010101010101010101010101010101010101010101010101010101
010101010101010101010101010101010101010101010100111110011010010000101001101
100001111010100010011100000110010111011110101000100111000001100101110111101
010001001110000011001011101111010100010011100000110010111011110101000100111
000001100101110111101010001001110000011001011101111010100010011100000110010
011011110101000100111000001100101110111101010001001110000011001011101111010
100010011100000110010111011110101000100111000001100101110111101010001001110
...
111101111

рдбрд┐рдХреЛрдбрд┐рдВрдЧ


рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╕рд┐рд░реНрдл рдПрдХ wav рдлрд╝рд╛рдЗрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдХреЛрдИ рднреА рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

10101010101010101010101010101010
10101010101010101010101010101010
10101010101010101010101010101010
10101010101010101010101010101010
01111100110100100001010011011000
01111010100010011100000110010111
01111010100010011100000110010111
01111010100010011100000110010111
01111010100010011100000110010111
00001000011011110100010001101000
10000011010000010101010011010100
01111100110100100001010111011000
11110101010001000001000000111000
01111010100010011100000110010111
01111010100010011100000110010111
01111010100010011100000110010111
00100101101001011010010100101111

рдпрд╣ рд╕рдм рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдирд╛ рд╣реИ рдХрд┐ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдЦреЛрд▓реЗрдВ, рдЬреЛ рдПрдХ рдкреАрдбреАрдПрдл рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред



рд╕рдм рдХреБрдЫ рдХрдореЛрдмреЗрд╢ рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╕рдВрджреЗрд╢ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рдмреНрд▓реЙрдХ "10101010101" рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдкреЗрдЬрд░ "рд╕реНрд▓реАрдк рдореЛрдб" рдЫреЛрдбрд╝ рджреЗред рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реНрд╡рдпрдВ рдмреИрдЪ -1 рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ... рдмреИрдЪ-рдПрди рдмреНрд▓реЙрдХ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп FSC рдЕрдиреБрдХреНрд░рдо (рдкрд╛рда рдореЗрдВ рдмреЛрд▓реНрдб рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдиреБрдЕрд▓ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рд▓рд╛рдЗрди "0" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ рд╣реИред рдкрддреЗ рдХреЛ рдкреЗрдЬрд░ рдореЗрдВ рд╣реА рд╡рд╛рдпрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдкреЗрдЬрд░ рдмрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛ред рдпрджрд┐ рд░реЗрдЦрд╛ "1" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИред рд╣рдорд╛рд░реА рдРрд╕реА рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред

рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЛ рджреЗрдЦреЗрдВред рд╣рдо рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВ - рдЦрд╛рд▓реА рдмреНрд▓реЙрдХ 01111 ... 0111 рдЬреЛ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рдмрд╣реБрдд рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдмрдЪреА рд╣реИ, рдЬреЛ рд╢реЗрд╖ рд╣реИ:

01111100110100100001001010011011000 - рдлрд╝реНрд░реЗрдо рд╕рд┐рдВрдХ
00001000011011110100010001101000 - рдкрддрд╛
10000011010000010101010011010100 - рд╕рдВрджреЗрд╢

01111100110100100001001010111011000 - рдлрд╝реНрд░реЗрдо рд╕рд┐рдВрдХ
11110101010001000001000000111000 - рд╕рдВрджреЗрд╢
00100101101001011010010100101111 - рдкрддрд╛

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИред

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

рддрд╛рд░ рд╕реЗ 10000011010000010101010011010100 рдФрд░ 11110101010001000001000000111000 рд╕реЗ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 4-рдмрд┐рдЯ рдХреНрд░рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:
1 0000 0110 1000 0010 10101 0011010100 - 0h 6h 8h 2h рдЖрд╣
1 1110 1010 1000 1000 00100 0000111000 - рдПрд╣ рдЕрд╣ 8 рд╣ 8 рд╣ 2 рд╣

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдЪрд░рдг - рд╣рдо рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦрддреЗ рд╣реИрдВред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рдВрджреЗрд╢ рдореЗрдВ рдХреЗрд╡рд▓ рдирдВрдмрд░ 0-9, рдЕрдХреНрд╖рд░ U ("рдмрджрд╕реВрд░рдд"), рдПрдХ рд╕реНрдерд╛рди, рдФрд░ рдХреЛрд╖реНрдардХ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 def parse_msg(block): # 16 lines in a batch, each block has a length 32 bits for cw in range(16): cws = block[32 * cw:32 * (cw + 1)] if cws[0] == "0": addr = cws[1:19] print(" Addr:" + addr) else: msg = cws[1:21] print(" Msg: " + msg) size = 4 s = "" for ind in range(0, len(msg), size): bcd_s = msg[ind:ind + size] value = int(bcd_s, 2) symbols = "0123456789*U -)(" s += symbols[value] print(" ", s) print() 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрджреЗрд╢ "0682 *) * 882" рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдкреНрд░рд╛рд░реВрдк рдбрд┐рдЬрд┐рдЯрд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, POCSAG рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрдХреВрд▓ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рднреА рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рдЕрдм рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╣рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

рдЕрдЧрд▓рд╛ рдЦрдВрдб ASCII рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi438602/


All Articles