Π˜ΡΡ‚Ρ€Π°ΠΆΠΈΠ²Π°ΡšΠ΅ ΠœΠ΅Π΄ΠΈΠ°ΡΡ‚Ρ€Π΅Π°ΠΌΠ΅Ρ€2 Π’ΠΎΠ˜ΠŸ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°. Π”Π΅ΠΎ 6

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π» Ρ‡Π»Π°Π½ΠΊΠ° јС ΠΏΡ€Π΅ΡƒΠ·Π΅Ρ‚ са ΠΌΠΎΠ³ Π·Π΅Π½ ΠΊΠ°Π½Π°Π».

ΠŸΡ€Π΅Π½ΠΎΡ Π°ΡƒΠ΄ΠΈΠΎ сигнала ΠΏΡ€Π΅ΠΊΠΎ РВП Ρ‚ΠΎΠΊΠ°

Π˜ΡΡ‚Ρ€Π°ΠΆΠΈΠ²Π°ΡšΠ΅ ΠœΠ΅Π΄ΠΈΠ°ΡΡ‚Ρ€Π΅Π°ΠΌΠ΅Ρ€2 Π’ΠΎΠ˜ΠŸ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°. Π”Π΅ΠΎ 6

Π£ ΠΏΠΎΡΠ»Π΅Π΄ΡšΠΈΡ… Π§Π»Π°Π½Π°ΠΊ Баставили смо ΠΊΠΎΠ»ΠΎ Π·Π° даљинско ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΠ½Π° ΠΈ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Ρ‚ΠΎΠ½Π° који Ρ€Π°Π΄Π΅ Ρƒ ΠΎΠΊΠ²ΠΈΡ€Ρƒ истог ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ Ρ›Π΅ΠΌΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° користимо РВП ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» (Π Π€Π¦ 3550 - РВП: Вранспортни ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ) Π·Π° ΠΏΡ€ΠΈΡ˜Π΅ΠΌ/прСнос Π°ΡƒΠ΄ΠΈΠΎ сигнала ΠΏΡ€Π΅ΠΊΠΎ Π•Ρ‚Ρ…Π΅Ρ€Π½Π΅Ρ‚ ΠΌΡ€Π΅ΠΆΠ΅.

РВП ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» (ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ) ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ Π·Π½Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ, користи сС Π·Π° прСнос Π·Π²ΡƒΠΊΠ°, Π²ΠΈΠ΄Π΅Π°, ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, свСга ΡˆΡ‚ΠΎ Π·Π°Ρ…Ρ‚Π΅Π²Π° прСнос Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ. Π£Π·ΠΌΠΈΠΌΠΎ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°ΡƒΠ΄ΠΈΠΎ сигнал. ЀлСксибилност ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° јС Ρ‚Π°ΠΊΠ²Π° Π΄Π° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° прСнос Π°ΡƒΠ΄ΠΈΠΎ сигнала ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠ³ ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚Π°.

ΠŸΡ€Π΅Π½ΠΎΡ сС Π²Ρ€ΡˆΠΈ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ΠΌ Π£Π”ΠŸ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° јС Π³ΡƒΠ±ΠΈΡ‚Π°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Π° сасвим ΠΏΡ€ΠΈΡ…Π²Π°Ρ‚Ρ™ΠΈΠ² Ρ‚ΠΎΠΊΠΎΠΌ прСноса. Π‘Π²Π°ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ садрТи посСбно РВП Π·Π°Π³Π»Π°Π²Ρ™Π΅ ΠΈ Π±Π»ΠΎΠΊ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΎ ΠΏΡ€Π΅Π½ΠΎΡˆΠ΅Π½ΠΎΠΌ сигналу. Π—Π°Π³Π»Π°Π²Ρ™Π΅ садрТи насумично ΠΎΠ΄Π°Π±Ρ€Π°Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠ·Π²ΠΎΡ€Π° сигнала, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Ρƒ ΠΎ Ρ‚ΠΈΠΏΡƒ сигнала који сС прСноси ΠΈ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈ Π±Ρ€ΠΎΡ˜ сСквСнцС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΌΠΎΠ³Ρƒ Π±ΠΈΡ‚ΠΈ распорСђСни Ρƒ исправном рСдослСду ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ°, Π±Π΅Π· ΠΎΠ±Π·ΠΈΡ€Π° Π½Π° рСдослСд којим су испоручСни ΠΎΠ΄ странС ΠΌΡ€Π΅ΠΆΠ΅. Π—Π°Π³Π»Π°Π²Ρ™Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° садрТи ΠΈ Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅, Ρ‚Π°ΠΊΠΎΠ·Π²Π°Π½Ρƒ Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Ρƒ, која ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° сС Π·Π°Π³Π»Π°Π²Ρ™Π΅ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈ Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Ρƒ Ρƒ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠΌ Π·Π°Π΄Π°Ρ‚ΠΊΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π‘Π»ΠΎΠΊ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° садрТи носивост ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π£Π½ΡƒΡ‚Ρ€Π°ΡˆΡšΠ° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜Π° зависи ΠΎΠ΄ врстС ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ°, Ρ‚ΠΎ ΠΌΠΎΠ³Ρƒ Π±ΠΈΡ‚ΠΈ ΡƒΠ·ΠΎΡ€Ρ†ΠΈ ΠΌΠΎΠ½ΠΎ сигнала, стСрСо сигнала, линијС Π²ΠΈΠ΄Π΅ΠΎ сликС ΠΈΡ‚Π΄.

Π’ΠΈΠΏ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ° јС ΠΎΠ·Π½Π°Ρ‡Π΅Π½ сСдмобитним Π±Ρ€ΠΎΡ˜Π΅ΠΌ. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡƒΠΊΠ° Π Π€Π¦3551 (РВП ΠΏΡ€ΠΎΡ„ΠΈΠ» Π·Π° Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ˜Π΅ са ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΠΌ) ΡƒΡ‚Π²Ρ€Ρ’ΡƒΡ˜Π΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ врста ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ°, Π° ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π° Ρ‚Π°Π±Π΅Π»Π° дајС опис Ρ‚ΠΈΠΏΠΎΠ²Π° ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ° ΠΈ Π·Π½Π°Ρ‡Π΅ΡšΠ΅ ΡˆΠΈΡ„Ρ€ΠΈ којима су ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π΅. НСки ΠΊΠΎΠ΄ΠΎΠ²ΠΈ нису стриктно Π²Π΅Π·Π°Π½ΠΈ Π·Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡ˜Ρƒ врсту ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ°; ΠΌΠΎΠ³Ρƒ сС користити Π·Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°ΡšΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΡ™Π½ΠΎΠ³ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ°.

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π±Π»ΠΎΠΊΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° јС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΈΠ·Π½Π°Π΄ максималном Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° који сС ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ Π½Π° Π΄Π°Ρ‚Ρƒ ΠΌΡ€Π΅ΠΆΡƒ Π±Π΅Π· ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ (МВУ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€). Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, ΠΎΠ²ΠΎ нијС вишС ΠΎΠ΄ 1500 Π±Π°Ρ˜Ρ‚ΠΎΠ²Π°. Π”Π°ΠΊΠ»Π΅, Π΄Π° бистС ΠΏΠΎΠ²Π΅Ρ›Π°Π»ΠΈ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° који сС прСносС Ρƒ сСкунди, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ›Π°Ρ‚ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄ΠΎ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½Π΅ Ρ‚Π°Ρ‡ΠΊΠ΅, Π° Π·Π°Ρ‚ΠΈΠΌ Ρ›Π΅Ρ‚Π΅ ΠΌΠΎΡ€Π°Ρ‚ΠΈ Π΄Π° ΠΏΠΎΠ²Π΅Ρ›Π°Ρ‚Π΅ учСсталост слања ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π£ мСдијском стримСру, ΠΎΠ²ΠΎ јС подСшавањС којС сС ΠΌΠΎΠΆΠ΅ конфигурисати. ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ јС 50 Π₯Π·, Ρ‚Ρ˜. 50 ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρƒ сСкунди. РСдослСд ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈΡ… РВП ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π°Π·Π²Π°Ρ›Π΅ΠΌΠΎ РВП Ρ‚ΠΎΠΊ.

Π—Π° ΠΏΠΎΡ‡Π΅Ρ‚Π°ΠΊ прСноса ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΠΈΠ·Π²ΠΎΡ€Π° ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊΠ°, Π΄ΠΎΠ²ΠΎΡ™Π½ΠΎ јС Π΄Π° ΠΏΡ€Π΅Π΄Π°Ρ˜Π½ΠΈΠΊ Π·Π½Π° ИП адрСсу ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊΠ° ΠΈ Π±Ρ€ΠΎΡ˜ ΠΏΠΎΡ€Ρ‚Π° који користи Π·Π° ΠΏΡ€ΠΈΡ˜Π΅ΠΌ. ОнС. Π±Π΅Π· ΠΈΠΊΠ°ΠΊΠ²ΠΈΡ… ΠΏΡ€Π΅Π»ΠΈΠΌΠΈΠ½Π°Ρ€Π½ΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΈΠ·Π²ΠΎΡ€ ΠΏΠΎΡ‡ΠΈΡšΠ΅ Π΄Π° прСноси ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅, Π° ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊ јС, Π·Π°ΡƒΠ·Π²Ρ€Π°Ρ‚, спрСман Π΄Π° ΠΈΡ… ΠΎΠ΄ΠΌΠ°Ρ… ΠΏΡ€ΠΈΠΌΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π΄ΠΈ. ΠŸΡ€Π΅ΠΌΠ° стандарду, Π±Ρ€ΠΎΡ˜ ΠΏΠΎΡ€Ρ‚Π° који сС користи Π·Π° прСнос ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌ РВП Ρ‚ΠΎΠΊΠ° ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ ΠΏΠ°Ρ€Π°Π½.

Π£ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° ΠΊΠ°Π΄Π° јС Π½Π΅ΠΌΠΎΠ³ΡƒΡ›Π΅ ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ Π·Π½Π°Ρ‚ΠΈ адрСсу ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊΠ°, користС сС сСрвСри Π³Π΄Π΅ ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΡ†ΠΈ ΠΎΡΡ‚Π°Π²Ρ™Π°Ρ˜Ρƒ ΡΠ²ΠΎΡ˜Ρƒ адрСсу, Π° ΠΏΡ€Π΅Π΄Π°Ρ˜Π½ΠΈΠΊ Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ‚ΠΈ ΠΏΠΎΠ·ΠΈΠ²Π°Ρ˜ΡƒΡ›ΠΈ сС Π½Π° Π½Π΅ΠΊΠΎ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΎ ΠΈΠΌΠ΅ ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊΠ°.

Π£ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ° ΠΊΠ°Π΄Π° су ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½ΠΎΠ³ ΠΊΠ°Π½Π°Π»Π° ΠΈΠ»ΠΈ могућности ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊΠ° Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡ˜Π΅ сС ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½ΠΈ ΠΊΠ°Π½Π°Π» ΠΏΡ€Π΅ΠΊΠΎ којСг ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° обавСсти ΠΏΡ€Π΅Π΄Π°Ρ˜Π½ΠΈΠΊ ΠΎ својим могућностима, Π±Ρ€ΠΎΡ˜Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° којС јС пропустио ΠΈΡ‚Π΄. Овај ΠΊΠ°Π½Π°Π» користи РВЦП ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° који сС прСносС Π½Π° ΠΎΠ²ΠΎΠΌ ΠΊΠ°Π½Π°Π»Ρƒ јС дСфинисан Ρƒ Π Π€Π¦ 3605. ΠŸΡ€Π΅ΠΊΠΎ ΠΎΠ²ΠΎΠ³ ΠΊΠ°Π½Π°Π»Π° сС прСноси Ρ€Π΅Π»Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΌΠ°Π»ΠΎ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, 200..300 Π±Π°Ρ˜Ρ‚ΠΎΠ²Π° Ρƒ сСкунди, Ρ‚Π°ΠΊΠΎ Π΄Π° Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ њСгово присуство нијС ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›ΡƒΡ˜ΡƒΡ›Π΅. Π‘Ρ€ΠΎΡ˜ ΠΏΠΎΡ€Ρ‚Π° Π½Π° који сС ΡˆΠ°Ρ™Ρƒ РВЦП ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ Π½Π΅ΠΏΠ°Ρ€Π°Π½ ΠΈ Π·Π° јСдан Π²Π΅Ρ›ΠΈ ΠΎΠ΄ Π±Ρ€ΠΎΡ˜Π° ΠΏΠΎΡ€Ρ‚Π° са којСг Π΄ΠΎΠ»Π°Π·ΠΈ РВП Ρ‚ΠΎΠΊ. Π£ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π½Π΅Ρ›Π΅ΠΌΠΎ користити овај ΠΊΠ°Π½Π°Π», ΠΏΠΎΡˆΡ‚ΠΎ могућности ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊΠ° ΠΈ ΠΊΠ°Π½Π°Π»Π° ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ ΠΏΡ€Π΅Π²Π°Π·ΠΈΠ»Π°Π·Π΅ нашС, Π΄ΠΎ сада скромнС, ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅.

Π£ нашСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ, ΠΊΠΎΠ»ΠΎ Π·Π° прСнос ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΡƒ ΠΎΠ΄ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π±ΠΈΡ›Π΅ ΠΏΠΎΠ΄Π΅Ρ™Π΅Π½ΠΎ Π½Π° Π΄Π²Π° Π΄Π΅Π»Π°: ΠΏΡƒΡ‚ Π·Π° прСнос ΠΈ ΠΏΡƒΡ‚ Π·Π° ΠΏΡ€ΠΈΡ˜Π΅ΠΌ. Π—Π° сваки Π΄Π΅ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ›Π΅ΠΌΠΎ сопствСни ΠΈΠ·Π²ΠΎΡ€ сата, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° насловној слици.

ΠˆΠ΅Π΄Π½ΠΎΡΠΌΠ΅Ρ€Π½Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΡšΠΈΡ… Ρ›Π΅ сС ΠΎΠ΄Π²ΠΈΡ˜Π°Ρ‚ΠΈ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ΠΌ РВП ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. Π£ ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π½Π°ΠΌ нијС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° СкстСрна ΠΌΡ€Π΅ΠΆΠ°, ΠΏΠΎΡˆΡ‚ΠΎ Ρ›Π΅ сС ΠΈ ΠΏΡ€Π΅Π΄Π°Ρ˜Π½ΠΈΠΊ ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊ Π½Π°Π»Π°Π·ΠΈΡ‚ΠΈ Π½Π° истом Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ€Ρƒ - ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Ρ›Π΅ ΠΏΡƒΡ‚ΠΎΠ²Π°Ρ‚ΠΈ ΡƒΠ½ΡƒΡ‚Π°Ρ€ њСга.

Π”Π° Π±ΠΈ успоставио РВП Ρ‚ΠΎΠΊ, мСдијски стримСр користи Π΄Π²Π° Ρ„ΠΈΠ»Ρ‚Π΅Ρ€Π°: МБ_РВП_БЕНД ΠΈ МБ_РВП_Π Π•Π¦Π’. ΠŸΡ€Π²ΠΈ прСноси Π΄Ρ€ΡƒΠ³ΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ° РВП Ρ‚ΠΎΠΊ. Π”Π° Π±ΠΈ ΠΎΠ²ΠΈ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ΠΈ функционисали, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° прослСдС ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ‡ Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚ РВП сСсијС, који ΠΌΠΎΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Π΅ Ρ‚ΠΎΠΊ Π±Π»ΠΎΠΊΠΎΠ²Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ Ρ‚ΠΎΠΊ РВП ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ Π΄Π° ΡƒΡ€Π°Π΄ΠΈ супротно. ΠŸΠΎΡˆΡ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° мСдија стримСра Π½Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° РВП ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΏΡ€Π΅ прСноса ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ МБ_РВП_БЕНД, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° користитС Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ који ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Π΅ 16-Π±ΠΈΡ‚Π½Π΅ ΡƒΠ·ΠΎΡ€ΠΊΠ΅ Π°ΡƒΠ΄ΠΈΠΎ сигнала Ρƒ осмобитнС ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Ρƒ складу са Ρƒ-Π·Π°ΠΊΠΎΠ½ (ΠΌΡƒ-Π·Π°ΠΊΠΎΠ½). На ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΎΡ˜ страни, Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° ΠΎΠ±Π°Π²Ρ™Π° супротну Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ.

Испод јС тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° који ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½Ρƒ Π½Π° слици (симбол # ΠΏΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ су Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΡƒΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ° ΡƒΠΊΠ»ΠΎΡšΠ΅Π½Π΅, Π½Π΅ Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° ΠΈΡ… ΡƒΠΊΡ™ΡƒΡ‡ΠΈΡ‚Π΅):

/* Π€Π°ΠΉΠ» mstest6.c Π˜ΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€ ΠΏΡƒΠ»ΡŒΡ‚Π° управлСния ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
#include <mediastreamer2/msvolume.h>
#include <mediastreamer2/mstonedetector.h>
#include <mediastreamer2/msrtp.h>
#include <ortp/rtpsession.h>
#include <ortp/payloadtype.h>
/* ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с функциями управлСния событиями
* мСдиастримСра.*/
include <mediastreamer2/mseventqueue.h>
#define PCMU 0
/* Ѐункция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½
ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ совпадСниС характСристик Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сигнала с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. */
static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,
MSToneDetectorEvent *ev)
{
printf("ΠŸΡ€ΠΈΠ½ΡΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°: %sn", ev->tone_name);
}
/*----------------------------------------------------------------------------*/
/* Ѐункция рСгистрации Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ. */
void register_payloads(void)
{
/*РСгистрируСм Ρ‚ΠΈΠΏΡ‹ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ. ПозднСС, ΠΏΠΎ индСксу
взятому ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° RTP-ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ· этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для дСкодирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°. */
rtp_profile_set_payload (&av_profile, PCMU, &payload_type_pcm8000);
}
/*----------------------------------------------------------------------------*/
/* Π­Ρ‚Π° функция создана ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ create_duplex_rtpsession() Π² audiostream.c
мСдиастримСра2. */
static RtpSession *
create_rtpsession (int loc_rtp_port, int loc_rtcp_port,
bool_t ipv6, RtpSessionMode mode)
{
RtpSession *rtpr;
rtpr = rtp_session_new ((int) mode);
rtp_session_set_scheduling_mode (rtpr, 0);
rtp_session_set_blocking_mode (rtpr, 0);
rtp_session_enable_adaptive_jitter_compensation (rtpr, TRUE);
rtp_session_set_symmetric_rtp (rtpr, TRUE);
rtp_session_set_local_addr (rtpr, ipv6 ? "::" : "0.0.0.0", loc_rtp_port,
loc_rtcp_port);
rtp_session_signal_connect (rtpr, "timestamp_jump",
(RtpCallback) rtp_session_resync, 0);
rtp_session_signal_connect (rtpr, "ssrc_changed",
(RtpCallback) rtp_session_resync, 0);
rtp_session_set_ssrc_changed_threshold (rtpr, 0);
rtp_session_set_send_payload_type(rtpr, PCMU);
/* По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ RTCP-сСссию, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ наш ΠΏΡƒΠ»ΡŒΡ‚ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘. */
rtp_session_enable_rtcp (rtpr, FALSE);
return rtpr;
}
/*----------------------------------------------------------------------------*/
int main()
{
ms_init();
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экзСмпляры Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ². */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
MSFilter *volume = ms_filter_new(MS_VOLUME_ID);
MSSndCard *card_playback =
ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
MSFilter *snd_card_write = ms_snd_card_create_writer(card_playback);
MSFilter *detector = ms_filter_new(MS_TONE_DETECTOR_ID);
/* ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ массив находящийся Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Ρ‚ΠΎΠ½ΠΎΠ², ΠΎΠ½ описываСт
* особыС ΠΏΡ€ΠΈΠΌΠ΅Ρ‚Ρ‹ разыскиваСмых сигналов.*/
ms_filter_call_method(detector, MS_TONE_DETECTOR_CLEAR_SCANS, 0);
/* ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. */
ms_filter_set_notify_callback(detector,
(MSFilterNotifyFunc)tone_detected_cb, NULL);
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ описываСт характСристику
* ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚ΠΎΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ: ВСкстовоС имя
* Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта, частота Π² Π³Π΅Ρ€Ρ†Π°Ρ…, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² миллисСкундах,
* ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 0,775Π’. */
MSToneDetectorDef scan[6]=
{
{"V+",440, 100, 0.1}, /* Команда "Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ". */
{"V-",540, 100, 0.1}, /* Команда "Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ". */
{"C+",640, 100, 0.1}, /* Команда "Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°". */
{"C-",740, 100, 0.1}, /* Команда "Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°". */
{"ON",840, 100, 0.1}, /* Команда "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΎΡ€". */
{"OFF", 940, 100, 0.1}/* Команда "Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΎΡ€". */
};
/* ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ "ΠΏΡ€ΠΈΠΌΠ΅Ρ‚Ρ‹" сигналов Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Ρ‚ΠΎΠ½ΠΎΠ². */
int i;
for (i = 0; i < 6; i++)
{
ms_filter_call_method(detector, MS_TONE_DETECTOR_ADD_SCAN,
&scan[i]);
}
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΊΠΎΠ΄Π΅Ρ€Π° ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° */
MSFilter *encoder = ms_filter_create_encoder("PCMU");
MSFilter *decoder=ms_filter_create_decoder("PCMU");
/* РСгистрируСм Ρ‚ΠΈΠΏΡ‹ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. */
register_payloads();
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ RTP-сСссию ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°. */
RtpSession *tx_rtp_session = create_rtpsession (8010, 8011, FALSE, RTP_SESSION_SENDONLY);
rtp_session_set_remote_addr_and_port(tx_rtp_session,"127.0.0.1", 7010, 7011);
rtp_session_set_send_payload_type(tx_rtp_session, PCMU);
MSFilter *rtpsend = ms_filter_new(MS_RTP_SEND_ID);
ms_filter_call_method(rtpsend, MS_RTP_SEND_SET_SESSION, tx_rtp_session);
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ RTP-сСссию ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. */
MSFilter *rtprecv = ms_filter_new(MS_RTP_RECV_ID);
RtpSession *rx_rtp_session = create_rtpsession (7010, 7011, FALSE, RTP_SESSION_RECVONLY);
ms_filter_call_method(rtprecv, MS_RTP_RECV_SET_SESSION, rx_rtp_session);
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ источники Ρ‚Π°ΠΊΡ‚ΠΎΠ² - Ρ‚ΠΈΠΊΠ΅Ρ€Ρ‹. */
MSTicker *ticker_tx = ms_ticker_new();
MSTicker *ticker_rx = ms_ticker_new();
/* БоСдиняСм Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, volume, 0);
ms_filter_link(volume, 0, encoder, 0);
ms_filter_link(encoder, 0, rtpsend, 0);
/* БоСдиняСм Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°. */
ms_filter_link(rtprecv, 0, decoder, 0);
ms_filter_link(decoder, 0, detector, 0);
ms_filter_link(detector, 0, snd_card_write, 0);
/* ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ источник Ρ‚Π°ΠΊΡ‚ΠΎΠ². */
ms_ticker_attach(ticker_tx, voidsource);
ms_ticker_attach(ticker_rx, rtprecv);
/* НастраиваСм структуру, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ сигналом Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. */
MSDtmfGenCustomTone dtmf_cfg;
dtmf_cfg.tone_name[0] = 0;
dtmf_cfg.duration = 1000;
dtmf_cfg.frequencies[0] = 440;
/* Π‘ΡƒΠ΄Π΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΎΠ½, частоту Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΎΠ½Π° установим Π² 0. */
dtmf_cfg.frequencies[1] = 0;
dtmf_cfg.amplitude = 1.0;
dtmf_cfg.interval = 0.;
dtmf_cfg.repeat_count = 0.;
/* ΠžΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» сканирования Π½Π°ΠΆΠ°Ρ‚Ρ‹Ρ… клавиш. Π’Π²ΠΎΠ΄ нуля Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚
* Ρ†ΠΈΠΊΠ» ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. */
char key='9';
printf("НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°Ρ‚Π΅ΠΌ Π²Π²ΠΎΠ΄.n"
"Для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ 0.n");
while(key != '0')
{
key = getchar();
if ((key >= 49) && (key <= 54))
{
printf("ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°: %cn", key);
/* УстанавливаСм частоту Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² соотвСтствии с
* ΠΊΠΎΠ΄ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши. */
dtmf_cfg.frequencies[0] = 440 + 100*(key-49);
/* Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ c ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ частотой. */
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM,
(void*)&dtmf_cfg);
}
/* Π£ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Ρ‚Ρ€Π΅Π΄ Π² спячку Π½Π° 20мс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€Π΅Π΄Ρ‹
* прилоТСния ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ врСмя Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ. */
ms_usleep(20000);
}
}

Бастављамо ΠΈ ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ΠΌΠΎ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌ Ρ›Π΅ Ρ€Π°Π΄ΠΈΡ‚ΠΈ ΠΊΠ°ΠΎ Ρƒ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π°Π»ΠΈ Ρ›Π΅ сС ΠΏΠΎΠ΄Π°Ρ†ΠΈ прСносити ΠΏΡƒΡ‚Π΅ΠΌ РВП Ρ‚ΠΎΠΊΠ°.

Π£ слСдСћСм Ρ‡Π»Π°Π½ΠΊΡƒ Ρ›Π΅ΠΌΠΎ овај ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΠΈ Π½Π° Π΄Π²Π΅ нСзависнС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ - ΠΏΡ€ΠΈΡ˜Π΅ΠΌΠ½ΠΈΠΊ ΠΈ ΠΏΡ€Π΅Π΄Π°Ρ˜Π½ΠΈΠΊ ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ ΠΈΡ… Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΈΠΌΠ°. Π˜ΡΡ‚ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΎ Ρ›Π΅ΠΌΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ΠΈ РВП ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠΎΡ›Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π’Π‘Ρ…Π°Ρ€ΠΊ.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€