Консультация № 183716
26.06.2011, 09:47
57.69 руб.
0 8 0
Здравствуйте, уважаемые эксперты!
Помогите, пожалуйста, написать клиент-серверное приложение управления LPT-портом.
Требования к программе:
1) Работа с 1-3 пинами LPT (1, 2 и 3). Клиент и сервер - Windows XP. Связь по Wi-Fi
2) Сигналы (логические 0 и 1) подавать последовательно (сначала на 1 пин, потом на другой, если требуется)
3) Графический интерфейс: кнопки на каждый посылаемый сигнал (каждую кнопку подписать соответствующим номером сигнала "Сигнал 1"). Если требуется обращаться к серверу по IP, то должно быть текстовое поле для ввода IP (192.168.0.45 по умолчанию). Желательно, но не обязательно, использовать горячие клавиши для каждого из сигналов. Требований, на чем реализован интерфейс, нет
4) При запуске программы должны подаваться логические нули на все пины LPT (для остановки всего, что движется)
5) Среда разработки - любая (предпочтительно Visual Studio или Borland Developer Studio 2006)
6) Комментарии к программе приветствуются

В помощь: насколько я знаю, можно использовать библиотеку Inpout32.dll
В интернете есть много программ по управлению LPT и они бы мне подошли, но у меня должно быть клиент-серверное приложение, чем и вызваны мои трудности.
Например, управление LPT в Windows XP на C++ Builder: http://acvarif.info/progbcb/progbcb1.html

Программа будет управлять моторами.

Приложение:
Таблица управляющих кодов (в скобочках стоит очередность подачи сигнала):
Порядковый номер сигнала\ Первый пин\ Второй пин\ Третий пин\ Выполняемое действие
1) 0\ 0\ 0\ Остановка (остальные действия неизвестны до начала тестирования)
2) 0\ 0\ 1\
3) 0\ 1\ 0\
4) 0\ 1 (1)\ 1 (2)\
5) 0\ 1 (2)\ 1 (1)\
6) 1\ 0\ 0\
7) 1 (1)\ 0\ 1 (2)\
8) 1 (2)\ 0\ 1 (1)\
9) 1 (1)\ 1 (2)\ 0\
10) 1 (2)\ 1 (1)\ 0\
11) 1 (1)\ 1 (2)\ 1 (3)\
12) 1 (1)\ 1 (3)\ 1 (2)\
13) 1 (2)\ 1 (1)\ 1 (3)\
14) 1 (3)\ 1 (1)\ 1 (2)\
15) 1 (2)\ 1 (3)\ 1 (1)\
16) 1 (3)\ 1 (2)\ 1 (1)\

Обсуждение

Неизвестный
27.06.2011, 15:19
общий
Не совсем поняла, что делает клиент, а что сервер. Имеется в виду, что команды идут с клиента на удалённом компьютере на серверное приложение на целевом, на котором они и выполняются?
давно
Мастер-Эксперт
325460
1469
27.06.2011, 18:52
общий
Тут скорее всего может быть все и на одном ПК, только серверная часть отвечает за управление портом, а клиентская часть - это интерфейс общения с пользователем, причем между собой клиентская и серверная часть должны общаться по сетевому протоколу.
Об авторе:
to live is to die
Неизвестный
27.06.2011, 22:16
общий
Не важно кто и что делает, но наверняка программа на сервере должна управлять своим LPT портом, получая команды от клиента - ведь так должно быть проще. Клиент- это простая консоль или терминал
Неизвестный
01.07.2011, 02:05
общий
Я постараюсь посмотреть на следующей неделе, если Вам это ещё будет актуально.
Неизвестный
02.07.2011, 03:52
общий
управление LPT сводится к чтению/записи в порт
для Windows NT нужен драйвер, просто так в порт писать не позволит
для Win XP я использовал простой драйвер, упакованный в DLL, так что предварительно устанавливать его в систему не нужно
а в линуксе можно работать с портом и без драйвера, но процесс должен иметь привилегии рута
для передачи команд по сети хватит UDP сокета
и если еще интерфейс реализовать на Qt или GTK или другой кроссплатформенной библиотеке, то потом можно будет без проблем сделать линукс версию клиент-сервера
Неизвестный
02.07.2011, 06:51
общий
Да, вопрос еще актуален.

Alex_S, для WinXP есть примерно 4 dll, позволяющих работать с LPT.
Читать с порт ничего не требуется. Надо только посылать туда необходимые сигналы. Если надо сменить действие, то предполагается, что пользователь нажмет сначала на кнопку посыла нулей для останова движения, а потом уже на другую команду.
Неизвестный
07.07.2011, 23:24
общий
Нет сейчас времени попробовать прикрутить одно к другому, но если проблема в клиент-серверной архитектуре, вот проект (URL >>) с простейшим клиент-сервером на сокетах (VS2005+MFC). К серверной части можно привязать функции по работе с портом (например, взять их из приведённого Вами проекта, они там никак не зависимы от борланда вроде), а с клиента вместо текста посылать, например, два числа (пин и сигнал) в каком-то формате. Сервер его разберёт и пошлёт сигнал на свой локальный порт.
Неизвестный
08.07.2011, 07:10
общий
Спасибо, буду разбираться
Форма ответа