Обращение к внешней программе на сервере Apache средствами php с последующим ответом?

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

Все это я решил замутить для теплицы.


И идя такова - стоит старый комп на нем есть LPT порт, он будет служить для "попытки" осуществления всех этих планов. И все это дело будет контролироваться через страницу сайта.

5b2d34c0aeb80594628387.jpeg

И вот сижу думаю как наладить связь меду php и внешней программой/службой которую тоже необходимо реализовать, не могу сдвинутся с места из за этого как реализовать этот мост.

Как вариант использовать TCP тунель, сокеты и.т.д но мне кажется это не единственный вариант да и вообще этот вариант меня напрягает как то. Вообще шарился я по форумам по гуглу набрел на fastCGI начал искать про это (зацепило я думаю что уже близок к цели) вообщем ясного ничего не нашел все пишется везде для людей которые уже знают принципы работы с PHP и C++ а я всегда пилил на примерах других и разных кусков чего найдется.

Как я думаю надо пилить прогу на C++ она будет принимать запрос от apache или php напрямую... я пока представить не могу как это работать будет (но только не TCP пжлст), обрабатывать запрос хотябы hello world для начала, потом отправлять ответ на веб страницу с которой был отправлен запрос, ведь в php вроде есть переменные которые можно передавать во внешнюю среду исполнения, тогда вопрос как реализовать это во внешней среде исполнения прием этих переменных, ХЗ как все запилить, горит, бомбит, спать не могу, все смотрю на этот LPT порт, только и мечтаю что все это уже работает.

Помогите крутые ребята.
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
@VadimKholodilo
Так порт последовательный или параллельный? Если последовательный, то комментатор вам предложил годное решение, а если каким-то чудом параллельный, то так:
Пишете программу на c++, которая сможет управляться аргументами коммандной строки типа такого controller.exe /p LPT1 /relay 2
Далее в php что-то типа такого exec("controller.exe /p LPT1 /relay".$relay); где $relay - релюха, которую вы будете врубать. Нужна будет помощь, пишите https://vk.com/vadimkholodilo
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
CGI позволяет вам вашу программу запускать вообще без php.
Вам нужно подучить html/http и соответственно ваша программа должна генерить для apache html страничку.

Пишете консольную программу на C/C++/чем угодно, которая взаимодействует с LPT портом, и умеет выдавать результат в text или html
Изучаете html формы (как создать кнопку, при нажатии которой вызывается файлик)

В Apache настраиваете поддержку cgi - включаете cgi модуль
LoadModule cgi_module modules/mod_cgi.so

Добавляете cgi хендлер
AddHandler cgi-script .cgi
или
AddHandler cgi-script .exe

Разрешаете использование cgi в каталоге сайта, или даже в DocumentRoot
Options ExecCGI

пробуете www.mysite.com/myprogram.exe
Ответ написан
@vasilek-nik
Или можно пойти другим ходом. Вы знаете PHP, не зная других языков и вам нужно работать с последовательным портом. Например, та же Arduino хоть и подключается по USB, определяется как COM-порт. Для PHP есть библиотеки для работы с ним. К примеру вот: https://github.com/lepiaf/serialport
Используя эту или подобную библиотеку вы или избавитель от моста или же напишете его на PHP. Удачи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы