Proektor & ByteBoss
ByteBoss ByteBoss
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ: Ρ…ΠΎΡ‡Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшой скрипт для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ управлСния Ρ‚Π²ΠΎΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ – Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, фокус, сдвиг Π»ΠΈΠ½Π· – ΠΏΠΎ сСти. КакиС Ρƒ тСбя мысли, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ΅Π½Π΅Π΅ 200 миллисСкунд?
Proektor Proektor
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ! Для лСгковСсного скрипта с минимальной Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ я Π±Ρ‹ Π½Π°Ρ‡Π°Π» с Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ интСрфСйса VCP/DDC-CI ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€Π°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· видСокабСль, ΠΈ с нСбольшим Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ ΠΏΠΎ IP (Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ RS-232 Π² Ethernet). Если Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ€Ρ‚Π°, ΠΏΠΎΠΈΡ‰ΠΈ API, спСцифичныС для производитСля – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Epson eControl, Sony SPT ΠΈΠ»ΠΈ Epson RC-API. Они ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ»ΡƒΡˆΠ°ΡŽΡ‚ Π½Π° TCP-ΠΏΠΎΡ€Ρ‚Ρƒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅, ΠΎΠ΄Π½ΠΎΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π“Π»Π°Π²Π½ΠΎΠ΅ – Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ минимальной (просто Π±Π°ΠΉΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ постоянноС TCP-соСдинСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° установку соСдинСния ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ‹Π»Π° мСньшС 200 миллисСкунд, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ UDP, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ API ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π½Π΅ трСбуСтся Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ порядок), ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ TCP с ΠΎΡ‡Π΅Π½ΡŒ малСньким Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ чтСния. Запускай скрипт Π½Π° машинС, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊ сСти ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€Π°, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий (asyncio ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ) ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΠΉ тяТСлой сСриализации. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅", отправляСмый ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 миллисСкунд, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚ устройство Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ состоянии ΠΈ обСспСчит врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° мСньшС 50 миллисСкунд Π² локальной сСти. Π’ ΠΈΡ‚ΠΎΠ³Π΅: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ встроСнный VCP Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ IP-мост, Π΄Π΅Π»Π°ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ, оставайся Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΌ соСдинСнии ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий. Π­Ρ‚ΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ для ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ управлСния с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅ 200 миллисСкунд. Π£Π΄Π°Ρ‡ΠΈ Π² написании скриптов!
ByteBoss ByteBoss
Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ. Π”Π°Π»ΡŒΡˆΠ΅ – ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠΉ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ VCP ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° фокус ΠΈ сдвиг Π»ΠΈΠ½Π· Π² Ρ‚Π²ΠΎΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌ напиши нСбольшой асинхронный Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сокСт ΠΈΠ»ΠΈ просто ΠΊΠ½ΠΎΠΏΠΊΡƒ интСрфСйса. Π”Π΅Ρ€ΠΆΠΈ сокСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, отправляй Π±Π°ΠΉΡ‚ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈ Ρ‡ΠΈΡ‚Π°ΠΉ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π­Ρ‚ΠΎ даст Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ. НуТна ΠΏΠΎΠΌΠΎΡ‰ΡŒ с Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΎΠΉ этих ΠΊΠΎΠ΄ΠΎΠ² VCP?
Proektor Proektor
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ! Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° Epson ΠΊΠ°Ρ€Ρ‚Π° VCP выглядит Ρ‚Π°ΠΊ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ руководство для своСй ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π° всякий случай): - **ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅** – 0x41 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅), 0x42 (Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅) - **Ѐокус** – 0x44 (ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ фокус) - **Автофокус** – 0x48 - **Π‘Π΄Π²ΠΈΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π° X** – 0xE0 (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Π²ΠΏΡ€Π°Π²ΠΎ, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ – Π²Π»Π΅Π²ΠΎ) - **Π‘Π΄Π²ΠΈΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π° Y** – 0xE1 (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Π²Π²Π΅Ρ€Ρ…, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ – Π²Π½ΠΈΠ·) Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π²ΠΎΠΉ асинхронный Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ TCP-сокСт ΠΊ DDC‑CI мосту ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ€Π°, Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСбольшой ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ `[0x44]` для фокусировки ΠΈΠ»ΠΈ `[0xE0, +3]` для смСщСния Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° Ρ‚Ρ€ΠΈ шага. Π§ΠΈΡ‚Π°ΠΉ Π±Π°ΠΉΡ‚ ACK Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ (select/epoll ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ asyncio) ΠΈ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньшС 200 миллисСкунд. Π’ΠΎΡ‚ Ρ‚Π΅Π±Π΅ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ управлСния – Π΄Π°ΠΉ Π·Π½Π°Ρ‚ΡŒ, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹!