LINUX.ORG.RU

сложно ли написать программу аналогично WndLpt ?

 ,


0

2

WndLpt (win приложение, но не суть ) Назначение: Автоматическое и ручное управление устройствами, подключенными к LPT-порту (до 12 выходов). Управление через COM порт (до 32 выходов).

Возможности: [1] Управление выходами по заранее заданному сценарию (скрипту). [2] Светомузыка через LPT-порт (суммарный звук системы, Winamp, AIMP2, WMP). [3] Интерактивное управление выходами LPT порта с помощью клавиатуры или мыши.

требуется только 1 вариант

нашел статью где написано

Модуль Рython-Рarallel Данный модуль собственно и предназначен для управления параллельным (lpt) портом.

установив его предлагают скрипт

import parallel; import time; p = parallel.Parallel() p.setData(1) time.sleep(1) p.setData(2) time.sleep(1) p.setData(4) time.sleep(1) p.setData(8) time.sleep(1) p.setData(16) time.sleep(1) p.setData(32) time.sleep(1) p.setData(64) time.sleep(1) p.setData(128) time.sleep(1) p.setData(0)

..... тут более менее понятно ... но как сделать скрипт так https://mavius.mavjuz.com/projects/msvc/wndlpt/images/scripts/eff_1.mlh_y.gif в уме не понимаю ... может кто может или пример скрипта сделать или написать под linux такое? думаю с нуля самому долго изучать что-б написать программу подобна WndLpt под linux.

Это в job, как определитесь с размером вознаграждения за скрипт.

Но, если

тут более менее понятно

и у вас есть чем смотреть состояние выводов lpt-порта, то не вижу причин, почему вы сами не напишите такое. Там битовые операции и цикл...

mky ★★★★★ ()

но как сделать скрипт

Я думаю тебе не надо заморачиваться и достаточно записать всю анимацию в текстовом файле - так будет и наглядно, и гибко, и менять легко. Вот она:

0----------0
-0--------0-
--0------0--
---0----0---
----0--0----
-----00-----
----0--0----
---0----0---
--0------0--
-0--------0-
0----------0
00--------00
000------000
0000----0000
00000--00000
000000000000
-0000000000-
--00000000--
---000000---
----0000----
-----00-----
----0--0----
---0----0---
--0------0--
-0--------0-
0----------0
-0--------0-
--0------0--
---0----0---
----0--0----
-----00-----
----0000----
---000000---
--00000000--
-0000000000-
000000000000
00000--00000
0000----0000
000------000
00--------00

Программно её сгенерировать можно так (python3):

import sys
import time

def gen_half_frame(width, pos, left, exact, right):
    return [left] * pos + [exact] + [right] * (width - pos - 1)

def gen_full_frame(width, pos, left, exact, right):
    return gen_half_frame(width, pos, left, exact, right) + list(reversed(gen_half_frame(width, pos, left, exact, right)))

def iter_scene_in(width, left, exact, right):
    for pos in range(width - 1):
        yield gen_full_frame(width, pos, left, exact, right)

def iter_scene_out(width, left, exact, right):
    for pos in range(width - 1):
        yield gen_full_frame(width, width - 1 - pos, left, exact, right)

def iter_animation(width):
    while True:
        yield from iter_scene_in(width, '-', '0', '-')
        yield from iter_scene_out(width, '-', '0', '-')

        yield from iter_scene_in(width, '0', '0', '-')
        yield from iter_scene_in(width, '-', '0', '0')

        yield from iter_scene_out(width, '-', '0', '-')
        yield from iter_scene_in(width, '-', '0', '-')

        yield from iter_scene_out(width, '-', '0', '0')
        yield from iter_scene_out(width, '0', '0', '-')

for arr in iter_animation(6):
    print(''.join(arr), end='\r', file=sys.stderr)
    time.sleep(0.1)

slovazap ★★★★★ ()
Последнее исправление: slovazap (всего исправлений: 1)

Ничего особо сложного нет, записываешь в порт, ждешь, еще записываешь ну и так далее. А потом цикл повторяется

https://www.opennet.ru/docs/RUS/perl_obzor/lpt.html http://eagerfish.eu/lpt-programming-example-in-c-for-ubuntu-linux/ вот можешь почитать

SZT ★★★★ ()
Последнее исправление: SZT (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.