Управление форсункой через lpt порт. Не печатает принтер через LPT. Рекомендации по настройке принтера. Виды реализаций LPT-порта

Подключение LCD дисплея к компьютеру, не представляет не какой сложности. Этот процесс не дорогой и эффективный способ повысить функциональность вашего ПК.

Будем использовать наиболее распространенный тип LCD индикаторов с микро контроллером HD44780 или на его аналоге KS0076 или KS0066 и т.д.., я использовал wh2004A-YYB-GT стоимость около 240 рублей.

Существует несколько способов подключение LCD к компьютеру, в данной статье рассмотрен наиболее простой из них: подключение к LPT по 7ми линиям управления. Это 4 линии данных, 3 линии управления, также у индикатора есть 5 выводов для подключения питания и настройки. Почему я не задействовал все 8 линии данных – потому что при написании программы я использовал стандартные 8 линий данных LPT порта (4 из которых на данные и 3 на управление), с регистрами данных я связываться не захотел.

Нам понадобится:

  • LCD дисплей
  • 2 переменных резистора
  • провод Bitronics (применяется для подключения принтера через LPT).
  • Провод для подключения питания. Тут несколько вариантов откуда можно запитать девайс не прибегая к посторонним источникам питания, а используя питание от компьютера: от Molex (внутренние разъёмы питания в компьютере, используются для подачи питания на дисководы и винчестеры), от USB порта.

Выбор дисплея

Начнём с выбора дисплея, т.к. это самая важная часть нашего устройства. Он должен быть на микроконтроллере HD44780, возможны и аналоги KS0076 или KS0066…, но я с ними не проверял. Они бывают с подсветкой и без подсветки, различного цвета символов и подсветки, отличаются количеством строк и символов в строке, размером символа и корпуса…

Вот распространенные размеры дисплеев

1х10 1х16 1х20 1х24

1х40 2х16 2х20 2х24

2х40 4х16 4х20 4х40

Маркировка дисплеев фирмы МЭЛТ:

Подбор деталей

Переменные резисторы


Понадобится 2 любых переменных резистора, но лучше и целесообразнее использовать подстрочные т.к. они более компактные и после настройки дисплея вряд ли понадобятся.

Один для регулировки контрастности (примерно 10 кОм (10-36кОм), я использовал 22 кОм) и яркости подсветки дисплея (примерно 100 Ом)

Bitronics

Нам понадобится не весь кабель, а только его часть.

Провод для подключения питания.

Если конструкция располагается вне корпуса компьютера то удобнее запитаться от USB разъёма, их в компьютерах обычно много и большинство из них обычно простаивают. Приобретём USB провод формата A->B или USB удлинитель

Если конструкция будет установлена внутри компьютера (например: в отсеке 5 дюймового дисковода) то её удобнее запитать будет от MOLEX разъема

Также можно приметь любой другой источник питания выходным напряжением 5 вольт.

Приступим к сборке

Выводы на LCD дисплее могут, располагается несколькими вариантами:


Схема подключения:

1 Земля (черный провод на Molex) Земля

2 +5V (красный провод на Molex) Power

3 Земля (черный провод на Molex) Регулятор контраста дисплея. Заземление дает максимальный контраст. Для плавной регулировки используйте 10кОм подстроечный резистор.

4 Контакт 16 на LPT (Зеленый/белый провод) Выбор регистра

5 И снова земля… Селектор Read/Write. Так как мы не собираемся ничего считывать с LCD, можем смело его заземлять - это будет держать LCD постоянно в режиме Write.

6 Контакт 1 на LPT (розовый провод) Enable - Strobe

7 Контакт 2 на LPT (красный провод) Бит 0

8 Контакт 3 на LPT (желтый провод) Бит 1

9 Контакт 4 на LPT (зеленый провод) Бит 2

10 Контакт 5 на LPT (белый провод) Бит 3

11 Контакт 6 на LPT (голубой провод) Бит 4

12 Контакт 7 на LPT (пурпурный провод) Бит 5

13 Контакт 8 на LPT (розовый провод) Бит 6

14 Контакт 9 на LPT (серый провод) Бит 7

Можно воспользоваться приведённой выше таблицей, но не все провода могут быть сделаны по стандарту, поэтому лучше прозвонить.

Питание конструкции

Распиновка MOLEX

При питание от MOLEX разъема потребуются один чёрный и красный провод (подключаться к разъёму или откусывать его и напрямую использовать провода – ваше дело).

Распиновка USB

При питании от USB потребуются два крайних вывода.

Проверка

Если конструкция была правильно собрана и подключена к компьютеру, то индикатор должен реагировать следующим образом на регулировку движков переменных резисторов:

Резистор на 10 кОм будет менять контрастность дисплея: в крайнем положении на индикаторе потемнею сегменты, в противоположном положении индикатор нечего не будет отображать;

Резистор за 100 Ом должен менять яркость подсветки дисплея.

Резисторы не должны нагреваться – если это происходит то при сборки были допущены ошибки и их следует устранить.

Программа

Существует множество программ для подключения LCD дисплея к компьютеру, но они у меня либо отказались работать, либо не понравились – поэтому была написана своя программа — AL LPT to LCD .

Еще на заре появления первых компьютеров перед создателями стояла задача возможности подключения к ним разнообразных устройств. Особенно это стало актуальным тогда, когда компьютеры перестали занимать целые комнаты, а начали помещаться на столе, то есть стали персональными. Ведь компьютер - это не только средство для выполнения вычислений, но и устройство, пользователь которого может выполнять множество различных функций: распечатать текст или фотографии, управлять различными устройствами, воспроизводить фильмы и музыку, связаться с другими пользователями со всех уголков мира с помощью компьютерной сети. Все это становится возможным при подключении к компьютеру внешних устройств, которые называют общим словом периферия, с помощью специальных унифицированных разъемов, называемых портами.

Порты персонального компьютера

Порты персонального компьютера (иначе их еще называют интерфейсы) - это специальные устройства, расположенные на материнской плате компьютера, либо дополнительные платы, подключаемые к ней, которые предназначены для передачи данных между компьютером и внешними устройствами (принтером, мышкой, монитором, веб-камерой и т. п.). Все порты условно можно разделить на 2 большие группы:

  • Внутренние - для подключения устройств внутри ПК (жесткие диски, видеокарты, платы расширения).
  • Внешние - для подключения внешней периферии (сканера, монитора, клавиатуры, фотоаппарата, флешки).

В данной статье мы рассмотрим один из видов внешнего порта, а именно LPT-port, его принцип работы, подключаемые устройства и современное применение.

Появление LPT-порта

Изначально LPT-port (его еще называют разрабатывался только для подключения к ПК принтеров, это отражено даже в его названии - Line Printer Terminal, построчный принтерный терминал. Но в дальнейшем этот интерфейс стал применяться и для подключения других устройств: сканеров, дисководов и даже компьютеров между собой.

LPT-port был разработан компанией Centronics, занимавшейся в 70-х годах прошлого века производством матричных принтеров. Но уже через 10 лет его стала использовать фирма IBM для подключения своих скоростных устройств. Дело дошло до того, что было несколько вариантов данного интерфейса от разных производителей периферии.

В первоначальной версии этот порт был однонаправленным, то есть мог передавать данные только в одном направлении: от компьютера к периферийному устройству. Но это ограничение вскоре перестало устраивать пользователей, так как на рынок массово начали выходить устройства с возможностью передачи данных в обоих направлениях. Для этого различные производители предлагали свои усовершенствования - двунаправленный, ECP, EPP и другие. Пока в 1994 году не был принят международный стандарт IEEE 1284.

Схема LPT-порта

LPT-порт называется параллельным потому, что передача данных с помощью него осуществляется по нескольким проводникам одновременно, то есть параллельно. Этот интерфейс имеет 8-битную шину для передачи данных, 5-битную шину передачи сигналов и 4-битную шину передачи состояния.

Ниже представлена схема контактов LPT-порта.

Принцип работы LPT-порта

В простейшей конфигурации, чтобы реализовать принцип работы параллельного интерфейса, хватило бы только одиннадцати проводов, а именно: 1 провод на корпус (масса), 2 провода подтверждения и 8 проводов передачи данных. Но, по общепринятому стандарту IEEE 1284, каждый из восьми проводов передачи (2-9) данных имеет отдельное заземление.

Во время передачи данных оба устройства должны сообщать друг другу сведения о своем состоянии. Это реализуется с помощью контактов 18 и 35, на которые подается напряжение 0 В либо 5 В.

По проводнику 1 передается особый сигнал STROBE, сообщающий, что компьютер установил байт данных на линии и принтер может начинать печать.

По контакту 11 передается компьютеру сигнал BUSY, сообщающий, что устройство выполняет действие (занято), обрабатывая ту информацию, что находится в буфере.

По контактам 12-14 передаются сигналы, сообщающие контрольные сигналы о состоянии принтера и конфликтах в его оборудовании.

По проводнику 12 на ПК передается информация о том, что в принтере нет бумаги. Компьютер реагирует на это передачей сигналов по линиям SELECT и ERROR и останавливает печать.

По проводнику 13 на компьютер передается информация о состоянии принтера - включен и готов или выключен и не готов.

По контакту 14 принтеру передается сигнал об автоматическом переводе строки.

По контакту 31 (16) передается сигнал о переводе принтера в начальное состояние и очищается буфер данных, т. е. все данные стираются из памяти принтера.

По контакту 32 (15) передаются все сигналы об ошибках во время передачи данных. Сигналы, передаваемые по этой линии, влияют на все остальные контакты и могут остановить печать. Например, часто возникающая ошибка принтера - Time Out, возникающая, когда принтер занят однотипной работой с данными и не может передать на ПК через сигнал BUSY, что он не готов к получению новых данных. Через некоторое время по линии ERROR на компьютер передается ошибка Time Out и новые данные не передаются. Иначе, при отсутствии сигнала ERROR, происходила бы дальнейшая передача данных, что привело бы к зависанию всей системы.

По контакту 36 (17) передается информация о готовности принтера к работе, например после устранения ошибки.

Режимы работы LPT-порта

Существует несколько режимов работы LPT-порта, которые позволяет использовать стандарт IEEE 1284:

  • SPP (Standard Parallel Port) — представляет собой однонаправленный порт, который отлично совмещается в работе с интерфейсом Centronics.
  • NibbleMode — использование этого порта является возможностью организации двунаправленного обмена данными в режиме SPP, при помощи использования управляющих линий (4 бит) для передачи данных от периферийного устройства к контроллеру.
  • Byte Mode— режим для двустороннего обмена данными, который используется довольно редко. Его применяли в некоторых старых контроллерах до принятия стандарта IEEE 1284.
  • EPP (Enhanced Parallel Port) — над разработкой этого порта работали сразу несколько известных компаний: Intel, Xircom и Zenith Data Systems. По своей работе это двунаправленный порт, который передает данные со скоростью до 2 Мбайт/сек.
  • ЕСР (Extended Capabilities Port) — этот вариант порта появился в результате работы двух компаний: HP и Microsoft. У него появились уже дополнительные возможности, например, возможность аппаратного сжатия данных, присутствие буфера и способность работать в режиме DMA. Также поддерживает работу двунаправленного обмена данными (симметричного), скорость которого может быть до 2,5 Мбайт/с.

Настройка LPT-порта

Настройка LPT-порта происходит в два этапа: предварительная настройка аппаратных средств порта и текущее переключение режимов порта прикладным ПО.

Способ и возможности настройки LPT-порта зависят от его местоположения и вида исполнения. Порты, расположенные на картах расширения, обычно конфигурируются через перемычки на самих платах, а порты, размещенные напрямую на материнской плате компьютера, - через настройки BIOS.

Выборы режимов напрямую или через BIOS сами по себе не приводят к повышению скорости обмена данными между ПК и периферией, а служат для возможности выбора драйвером оптимального режима работы. Но драйверы современных устройств сами автоматически выставляют наиболее эффективные режимы работы параллельного порта, поэтому ручная настройка в большинстве случаев уже не требуется.

Виды реализаций LPT-порта

Раньше большинство производителей материнских плат размещали контроллеры LPT-port на своей продукции либо на задней панели платы. Был еще один вариант расположения. В некоторых случаях было удобно помещать контроллер на самой плате - коннекторе для подключения внешней LPT-port планки. Но с момента появления более скоростных интерфейсов для передачи данных материнских плат с распаянными LPT-портами становилось все меньше и меньше. Сейчас даже не у каждого производителя в ассортименте выпускаемой продукции имеются такие платы. И тогда на помощь приходят карты расширения, подключаемые к более современным интерфейсам:

  • PCI - LPT-port. Переходник между LPT-портом и более современным разъемом PCI.
  • PCI2 - LPT-port (PCI-Ex. 2.0). Переходник между LPT-портом и разъемом PCI-Ex.2.0
  • USB - LPT-port. Переходник между LTP-портом и современной версией широко используемого USB-разъема.

Современное применение LPT-порта

Из-за способности параллельной передачи данных такого порта, в 70-х - 80-х годах он зарекомендовал себя одним из самых быстроработающих интерфейсов компьютера. Поэтому он использовался даже для соединения 2-х компьютеров между собой. Но эта же особенность накладывает и ограничение на максимальную длину кабеля из-за возникающих помех в соседних проводниках. Длина не может превышать 5 м, иначе искажения сигналов превышают допустимые для корректного распознавания данных.

C появлением более скоростных интерфейсов актуальность LPT-порта сошла на нет. Второе дыхание ему придали радиолюбители, которые используют его для управления собранными схемами (освещение в доме, светомузыка и другие устройства).

Эта статья – подробная инструкция как запрограммировать AVR микроконтроллер при помощи LPT программатора и программы UniРrof.

Сначала обязательно прочитайте , многое станет понятней.
Скачайте программу UniРrof .
- Программатор для AVR. Смотрим avr.nikolaew.org

нажимаем «ОК» (в следующий раз устанавливать не придется – программа запомнит установки). Все — программатор «прописан».

2 Подключаем программатор к LPT порту.

3 Подключаем программатор к плате микроконтроллера, подаем питание на микроконтроллер.

4 Запускаем UniРrof (если уже не запущен), выбираем в поле LPT порт. Синим должно отобразиться . Для проверки надежности связи тыкаем несколько раз в . Если на каком либо этапе выпадает , то связь ненадежна – ставим галочку — и проверяем заново.

5 Нажимаем кнопку загрузить , выбираем нужный . В окошке появятся цифры – наша программа.


P.S. Нужно прошить кроме Flash еще и EEPROM?
Все просто! Сначала ставим галочку EEPROM — появится окошко EEPROM (Галочку «тормоз» нужно поставить до этого!). Далее открываем HEX-файл, автоматически программа найдет и загрузит EEP-файл (заполнятся данными оба окошка PROGRAM и EEPROM). Если юнипроф сам не определил EEP-файл откроется диалог выбора файла. Далее действуем как описано выше. При нажатии кнопки «Prog» программируется и Flash и EEPROM. Вот и все!

(Visited 22 098 times, 3 visits today)

Раздел: Метки: ,

Навигация по записям

027-UniProf-программируем AVR через LPT порт. : 47 комментариев

  1. alexandershahbazov

    Почему-то с миросхемой SN74HC244N не пошло, а с 5 проводками пошло.
    Пишет «МК не откликнулся …» . Только кнопка «Read» заработала. И очень долго шло.
    Правда отладочная плата моя на ATmega8 .
    С обеими программаторами у меня все идет без запинок на CodeVisionAVR и
    avrdude 5.8 .

    Повторюсь, что с 5 проводками работает.


  2. GetChiper Автор записи

    Пробовали ставить галочку «Тормоз»?
    Не нужно привязываться к UniProf. Программа имеет определенные недостатки. Основное ее достоинство — с ней легко начать работать, даже если до этого Вы никогда не прошивали контроллеры. Неизбежно Вы будете расти в профессиональном плане — поменяете программатор, поменяются и программы.
    Avrdude — очень хорошая альтернатива — пользуйтесь ею!

  3. alexandershahbazov

    «027-UniProf – программируем AVR через LPT порт» прочитал внимательно,
    галочку «Тормоз» ставил.
    avrdude 5.8 попробовал одновременно с UniProf и PonyProg v207c .
    Коммандная строка непривычна для меня, хотя свой самый первый светодиод зажег именно с помощью avrdude на Linux-e RHEL 4 AS .

  4. ec

    аха, с буфером не работает, по всей видимости, потому что юнипроф не дружит с STK, для котором на лпт-разъеме замыкаются 3-11 и 2-12 выводы.
    Зато у понипрог есть файл автоматизации — чудная вещь, если не хочется думать, какие куда ставить фьюзы и быстро прошить.


  5. GetChiper Автор записи

    Ну вот — еще плюс в копилку Юнипрофа. Но вот над помехоустойчивостью я бы, на месте автора программы, поработал. Хотя, если скорость не критична, режим «тормоз» решает все проблемы.

  6. ankar

    А мне он просто нравится тем, что не надо выбирать кристалл.Если не видит ищи косяк.В поньке записываешь, а только потом понимаешь, что потратил даром время. Не, если надо с кучей процов работать, то, конечно, берешь другой побыстрее. А если 1 или там 5 штук, то, для меня Унька (спасибо Николаеву) самое то. Кстати на своем аттлоне ХР3 2.2 гига ни разу не ставил «тормоз».LPT кабель длиной 1.5 метра. Безо всяких наворотов.

  7. Николай

    Успешно прошил ATmegu8 через LPT, но вот второй раз прошить не удаётся, программка пишит «МК неоткликнулся». Пожалуйста, подскажите, что нужно сделать чтоб прошить второй раз! кнопку рессет, на плату не вводил.


  8. GetChiper Автор записи

    А фьюзы шили?

  9. Николай

    Фьюзы шил, по инструкции. Везде понажимал Read, а затем Write. Сам галочки не менял. Контроллер работает, светодиод моргает по прошитому hex, но программа не находит его.

  10. Николай

    Проблема решена! Фьюзы в порядке. Проблема в некачественной пайке, оторвался MOSI на плате. Паяйте добротно и не спеша 🙂 !!!


  11. GetChiper Автор записи

    Слушайте Николая — дело говорит! 🙂

  12. NikAndrew

    А когда фиюзы прописываеш отмеченные галочной 0 или 1?

  13. NikAndrew

    все разобрался 0 нет галочки, 1 есть галочка)

  14. zhenya1995

    Здраствуйте, у меня программатор 5 проводков, также у меня не стандартный LPT порт я его докупал к компьютеру, и у этого порта другой адрес (С880) подскажите пожайлуста программу где можно задать именно этот адрес или еще способ какой, чтобы запрограммировать?


  15. GetChiper Автор записи

    Разве винда его не видит?

  16. ankar
  17. Greider

    А программа в конце прошивки должна выдать какое-то подтверждение, мол все успешно?
    И обязательно ли прошивать фьюзы, если достаточно их значений по-умолчанию?


  18. GetChiper Автор записи

Недавняя реализация простой на FreeBSD, дала почву для развития этой темы. По сути это ее продолжение но немного отделенное по смыслу.
В статье описан способ мониторинга наличия напряжения 220 вольт в электросети через LPT порт.

Статья будет полезна тем, у кого есть ПК с LPT портом, UPS без возможности управления с ПК, желающим корректного завершения работы ОС, вырубания соседних машин и уведомления при отсутствии электричества.

Дано:

UPS без возможности подключения к ПК.
Сервер FreeBSD с LPT портом
Простейшая безопасная схема для подключения 220 к LPT =).
Программа lptmon

Пример работы:

Гдето работает сервер, внезапно пропадает электричество. Cервер и его друзья: конвертер, маршрутизатор, серверы и пр. продолжают работать от UPS.
Cервер, почуяв неладное отправляет об этом смс админу, пишет лог, ждет минуту (вдруг это 5ти секундный сбой) и вырубает другие серверы. Все корректно завершено, данные не утеряны, админ в курсе.
Если электричество появилось, но минута не прошла и сервер не успел вырубиться, он отправляет смс админу что все впорядке и продолжает работать.
Если сервер успел вырубиться, и электричество появилось например через час, то при появлении 220 сервер врубается (через опцию в биосе), загружается, врубает другие сервера через Wake on LAN (прим: настройка Wake on LAN в статье не описывается) и отправляет смс админу о том что все ок.

Инструменты:

FreeBSD + mysql (второе не обязательно, только для лога)
LPT порт
Паяльник, припой, канифоль, провода
Cхема мониторинга 220 (блок питания и оптрон)
программа lptmon

Суть:

У LPT порта есть 5 ног чтения (они же пины) 10,11,12,13 и 15, заметьте 14й тут нет!. Они являются входами и используются принтерами как тумблеры, при событиях например:
кончилась бумага,
принтер занят,
ошибка печати, итд итп.

Они то нам и нужны, к ним можно подключить 5 разных устройств.

Распиновка LPT порта

Под FreeBSD работает программа lptmon которая мониторит эти пины.
Если взять кусок проволоки и замкнуть любой из вышеперечисленных
пинов на землю. (земля - любой с 18 по 25 пин этого же LPT порта) то программа
будет считать что пин включился. Каждый пин, через программу lptmon, может вызывать 3 события при которых можно выполнять комманды или запускать скрипты:
1. Пин включился
2. Пин работает (срабатывает каждую секунду пока пин замкнут)
3. Пин выключился

Собстно lptmon выполняя комманды при событиях от пинов запускает скрипты которые пишут в базу лог срабатывания, текущее состояние устройств подключенных к lpt порту, сохраняет скриншоты с камеры на винт, отправляют смс если нада итд.

План действий

1. Собрать схему, подключить ее к LPT
2. Настроить lptmon
3. Настроить скрипты.

1. Сборка и подключение схемы

Т.к мы будем подключать 220 к порту, необходимо позаботиться о его безопасности. Для этого нужно использовтаь небольшое напряжение, для чего берем блок питания (я нашел на 5в, 2.5А от конвертера) подключаем его к оптрону через резистор и потом уже к LPT.
Оптрон, грубо говоря, работает по принципу: если есть достаточное напряжение и сила тока на 1 и 2 ногах то он замыкает 5 и 4 ноги. Если силы и напряжения не достаточно (когда БП выключен) то он не замыкает 4 и 5 ноги. А если более чем достаточные (например бп переглючил и он стал давать 120вольт) то оптрон сгарает и это не влияет на 4 и 5 ноги (т.е на вторую цепь).
Поскольку оптрон (4n35) штука защитная, имеющая две цепи не связанные между собой, он еще и призван умирать при силе тока большей чем 60мА (это 0.06А, а у моего БП аж 2.5А). То есть, силы тока 2.5А более чем достаточно для того чтоб он испугался и умер. По этому, для того чтобы ограничить силу тока используем резистор. В моем случае это 500ом. Резистор подбирается индивидуально под блок питания. Вычислить резистор можно формулой R=U/I где U - напряжение дающее БП (вольты), I - нужная оптрону сила тока (Амперы) для работы. Сила тока нужная оптрону для замыкания второй цепи лежит в пределах от 0 до 60 мА, Допустим решили подавать ему 1мА для чего расчитаем резистор: R=5в/0.01А, R = 500 следовательно нам нужен резистор 500ом. Можно взять и меньше, 400, 300 ом главное чтоб сила тока не получилась больше 60мА.

Для подключения к LPT был разобран старый шнур от принтера. В корпусе от шнура собраны гнездо для подключения БП и оптрон.
Вот что получилось:

Готовый lpt разьем и черный кабель от БП.


Оптрон с резистором, они внутри разъема


2. Настройка lptmon

Создаем директорию /usr/local/etc/lptmon
качаем архив lptmon.tar.gz с программой lptmon и примерами скриптов и распаковываем:

#mkdir /usr/local/etc/lptmon #cd /usr/local/etc/lptmon #fetch http://zgbox.ru/files/notes/lptmon.tar.gz #tar -xzvf lptmon.tar.gz

Зеркало:

313 26.3kb 2011-06-29 lptmon, скрипты, исходники

В архиве лежит lptmon.c - это исходники программы, писал я ее сам, это моя первая программа на С++ под FreeBSD как и в прочем первая на C =) так что если есть примечения, дополнения - в студию.
Также там лежит сам уже откомпелированный файл lptmon, можно юзать его, установив chmod 777 lptmon если необходимо, а можно откомпелировать исходники коммандой

Теперь программа lptmon будет стартовать с системой, также ее можно стартовать вручную как просто запустив./lptmon так и выполнив rc.d скрипт /usr/local/etc/rc.d/lptmon start или stop
В запуске нет ничего особенного, просто запускается /usr/local/etc/lptmoon/lptmon а при stop убивается коммандой killall lptmon
Но пока не нужно ничего запускать, сначала нужно настроить конфиг, об этом чуть пожже.
Директория testlpt, в ней лежит программа pr22 и ее исходник для тестирования lpt порта. Работает просто: запускается, получает состояния с 10 по 15 пинов и если какойто пин замкнут на землю то выдает pin10 on
у меня в данный момент 10й пин замкнут на что программа отвечает

#./pr22 pin10 on

Можно смело использовать в своих скриптах
Итак собсно пробуем замнкть один или несколько из 10,11,12,13,15 пинов на землю (на любой с 18 по 25 пин) и запустить./pr22
Если программа показывает что замкнутые пин(ы) on значит все ок, если нет - то я хз почему не видит ваш lpt порт, ковыряйте исходники %)

Переходим к настройке самого lptmon.
Итак, исходя из того, что у нас будет подключена схема к 12 пину то сконфигурим так чтоб при событиях 12 пина при старте и запуске выполнялись скрипты 12_start, 12_end.

Ложим конфиг lptmon.config из расспакованного архива в /usr/local/etc/lptmon.config и редактируем любимым редактором, у меня это mcedit от mc.

#cp lptmon.config /usr/local/etc/lptmon.config #mcedit /usr/local/etc/lptmon.config

Это сокращенный, необходимый только для этой статьи конфиг, подробный в архиве.

#конфиг файл lptmon.config программы lptmon #должн лежать в /usr/local/etc/ #в параметрах допускаются табы и пробелы #ковычки не допустимы! #каждый пин может вызывать 3 события (выполнять комманды) при смене состояния: #1. при переходе из пассивного состояния в активное #2. при работе в цикле (срабатыват каждый раз при опросе если пин # в активном состоянии) #3. при переходе из активного состояния в пассивное pin12enable = yes pin12onstart = /usr/local/etc/lptmon/220v/12_start pin12oncycle = /usr/local/etc/lptmon/220v/12_cycle pin12onend = /usr/local/etc/lptmon/220v/12_end

3. Настройка скриптов

Листинг 12_start

#!/bin/sh #скрипт срабатывает когда дали электричество #или загрузился комп #двумя запросами пишем лог в базу и устанавливаем статус on для устройства 220v sql="use $db_name ; insert into objects_hist (obname,status ,dt) values \ ("$obname ","on",now());" #echo $sql /bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass sql="use $db_name ; update objects set status ="on", dtstart=now() \ where obname="$obname ";" /bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass #отправляем смс админу о том что 220 дали или серв включился /usr/local/etc/lptmon/sms "220v ON "`date +%m.%d-%H:%M:%S`

листинг 12_end

#!/bin/sh #срабатывает когда отключилось 220 db_host=localhost db_pass= db_user=root db_name=security obname=220v #пишем в базу логи и состояние off устройства 220v sql="use $db_name ; insert into objects_hist (obname,status ,dt) values \ ("$obname ","off",now());" #echo $sql sql="use $db_name ; update objects set status ="off", dtend=now() \ where obname="$obname ";" #/bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass #отправляем смс о том что нет электричества и ставим таймер на 60 сек #по завершению которого скрипт 12_cycle вырубит компы /usr/local/etc/lptmon/sms "220v OFF "`date +%m.%d-%H:%M:%S` echo 60 > /usr/local/etc/lptmon/220v/timer

Эти скрипты выполняют по два Sql запроса к mysql. Запросы обновляют текущее состояие устройства с именем 220v в таблице objects и пишут лог в таблицу objects_hist. Дамп структуры таблиц dump_security.sql также лежит в архиве.
Помимо этого скрипты отправляют смс.
Скрипт 12_end записывает цифру 60 в файл /usr/local/etc/lptmon/220v/timer для того чтобы потом скрипт 12_cycle который будет срабатывай каждую секунду пока нет электричества, брал эту цифру и отнимал по единице. Когда станет 0 он запустит программу wudown которая вырубит по сети комп с windows (ip 192.168.97.52) и вырубит сервак коммандой shutdown -p now.
листинг 12_cycle

#!/bin/sh path=/usr/local/etc/lptmon/220v/timer timer=`cat $path ` timer=`expr $timer - 1`; if [ $timer -gt 0 ]; then echo $timer > $path echo $timer else echo "shuttdowning..." /usr/local/bin/wudown 192 .168 .97 .52 1209 shutdown shutdown -p now fi

размещено: 2011-06-29,
последнее обновление: 2011-08-21,



Что еще почитать