Страница 1 из 2

Взаимодействие с LPT портами

Добавлено: Чт июн 13, 2013 10:23 am
shemnik69
Уважаемые коллеги!
В моем исполнении система управления домашней автоматикой (Умный дом) построена на использовании ключевых элементов, т.е. это реле семисторы и ключи 1-ware.
Центральный (база) модуль всей системы это обособленный блок управления, установленный в отдельном помещении котельной или иными словами программа и силовые элементы, воздействующие на внешние устройства (свет, вентиляция, отопление, ворота, сигнализация и предупреждение и прочее).
Все основные варианты взаимодействия программ, которые крутится на сервере (мат. плата и обвес (HDD/LAN/БП/UPS) были основаны на программах имеющих независимое друг от друга, управление т.е. как таковой единой программы нет. Проблем это не создавало, до появления желания установить MajonoDoMo.
Сама система установилась и сразу заработала, но поскольку у меня есть две платы расширения с LPT и COM портами, на которых все вышеизложенное и подключено (просто так проще и работает уже несколько лет) то возникло желание иметь в программе модуль взаимодействия с LPT портом. Да это несколько старомодно, но очень просто и надежно. Может, кто уже экспериментировал в этой области, прошу поделиться наработками. Сам не силен в PHP и пользуюсь услугами программистов, так что надеюсь на Ваше понимание.
Еще добавлю что внешний модуль на основе ардуино есть, это как раз ворота и калитка но он внешний, а центральные реле и прочее, уже увязаны на LPT и все отлажено в части схемотехники и "железа" а вот программа???

Re: Модуль взаимодействия с LPT портами

Добавлено: Чт июн 13, 2013 10:42 am
sergejey
а как идёт взаимодействие по портам? ну к примеру, что нужно отправить на LPT порт, что бы включить реле.

ещё, система будет стоять на windows или linux?

Re: Модуль взаимодействия с LPT портами

Добавлено: Чт июн 13, 2013 11:27 am
shemnik69
Добрый день Сергей!
На сервере (Win XP Game 2012) установлена программа, (LPT_Switch) которая напрямую воздействует на LPT порт, функции простые, это таймерные установки, например на время срабатывания (освещение, сигнализация прочее), и реакция (и) на датчики, всего 5 только входных сигналов и 12 выходных, причем эти 12 можно изменить как на вход, так и на выход. Карт LPT портов в моем варианте 2 итого это 24 порта вход/выход. Жалко такое не использовать.
Технически LPT порт имеет стандартный выход TTL т.е. 1 -2.4. в. 0---0 . Иными словами просто через стандартные схемы драйверов (например, ULN2003A (ключи Дарлингтона) подключаем реле. Или через отопару семисторы. Входные сигналы, это например датчики герконов или датчики движения. Это просто и понятно, а самое главное очень удобно при центральной группировке сервер – силовая часть, без посредников (ардуино или другое). Но несколько затруднительно при распределенной сети. Тут удобнее, да и вообще практичнее только внешние модули (Ардуино+Lan/USB).
Так вот LPT меня и привлек этим.
На сервере установлена Win. Поскольку в качестве «Умного дома» работает Benuks. Программы авторские закрытые, но работают надежно (не реклама) но хочется единого владельца всего этого хозяйства чему как раз отвечает Ваша программа.

Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3). LPT1 занимает диапазон &H378-&H37F. Адрес &H378 называется базовым и служит для передачи или чтения данных, через контакты 2-9 разъема LPT-порта. Адрес &H37A служит для передачи управляющих сигналов к устройству, подключенного к этому порту (принтер, сканер и т.д.). И, наконец, адрес &H379 предназначен для приема управляющих сигналов с устройства, подключенного к этому порту (принтер, сканер и т.д.).
Если проще то адрес &H379 это только чтение (5 сигналов датчиков), Адрес &H37A это как чтение так и запись 5 сигналов (5 точек подключения). Адрес &H378 основной порт ввод /вывод 8 сигналов. Информацию о том как написать модуль или программку для обслуживания портов на PHP я не нашёл.

Сеть 1-ware это температурные датчики 8 шт и ключи DS2413 b DS2408. К ним претензий нет, работают через COM порты тех же карт расширения. USB (4 шт) использую для опроса электросчетчика (USB-IR головка) и Ардуино.

Re: Модуль взаимодействия с LPT портами

Добавлено: Чт июн 13, 2013 11:53 am
sergejey
Если есть программа LPT_Switch, то может быть через неё сделать связь? MajorDoMo может запускать любые программы и если работа с LPT может быть организована через запуск этой программы с определёнными параметрами, то больше ничего и не нужно. Такое возможно? Можно ссылочку на саму программу?

Re: Модуль взаимодействия с LPT портами

Добавлено: Чт июн 13, 2013 12:10 pm
shemnik69
Ссылка на сайт программы :http://www.counterslab.com/rus/index.htm
Могу приложить саму программу, она 600 кБ. в архиве, как ее ВАм перправить? Могу на эл почту. Мой почта mail@rw4cju.ru вижу постоянно на сматрфоне.
С Уважением!.

Re: Модуль взаимодействия с LPT портами

Добавлено: Чт июн 13, 2013 1:18 pm
sergejey
Программу попробовал -- нашел возможность запуска внешних программ при изменении состояния линии, а вот управлять линией через командную строку не нашёл как. Может плохо искал? Так было бы проще всего организовать связь.

Re: Модуль взаимодействия с LPT портами

Добавлено: Чт июн 13, 2013 2:14 pm
shemnik69
Может этот путь не совсем простой. Здесь проблема в чем... как таймерная, данная программа работает без замечаний и корректно отрабатывает задачи А вот под внешнее управление через удаленный WEB интерфейс она не совсем заточена.
Есть мысль про inpout32 это драйвер управление. сейчас изучаю. Вопрос только в том как из Системы направллять и в систему передовать данные с LPT?

Re: Модуль взаимодействия с LPT портами

Добавлено: Пн июн 17, 2013 7:59 am
shemnik69
Эксперементы увенчались успехом. В сети найдена свободная программа Switcher v2.10 ссылка: http://amx.dxsoft.com/ru/products/switcher/index.html имеющая управление через командную строку т.е. управление реле (семистор) стало очень постое. Теперь разбираюсь как приладить к системе и как через командную строку передовать управление.

Re: Модуль взаимодействия с LPT портами

Добавлено: Пн июн 17, 2013 12:37 pm
sergejey
можно использовать safe_exec для вызова из сценариев. например так:
safe_exex('“C:\Program Files\Switcher\Switcher.exe” /LPT2 /Ontop');

Re: Модуль взаимодействия с LPT портами

Добавлено: Пн июн 17, 2013 11:07 pm
shemnik69
Спасибо! Забыл указать что у программы LPT_Switch, есть внешний модуль клиент он работает по сети и однозначно протокол обмена IP только как его перехватить сам клиент практически полностью управляет основными функциями (он же работает ка удаленный доступ с другого компа. Единственный момент это мало знаний как это протокол отловить и использовать. А с программой еще разбираюсь простая но ...