У меня есть программа, которая взаимодействует с оборудованием через параллельное программирование портов. я скомпилировал его и использовал его объектный файл для взаимодействия с оборудованием (простой светодиод). когда я выполняю его непосредственно на оболочке, он служит для подсвечивания светодиода, но когда я его запускаю с помощью shell_exec() в php, команда выполняется, но не может взаимодействовать с оборудованием. я совершенно смущен.работает с программой управления параллельным портом через php
ответ
Это может быть не так, но если вы собираетесь использовать PHP для аппаратного взаимодействия, я бы тоже добавил AJAX.
В основном, ваш javascript передает нажатия клавиш на сервер через функцию Ajax. Каждый раз, когда PHP получает новый запрос через javascript, он просматривает нажатие клавиши в массиве предварительно написанного набора команд shell_exec()
и запускает один для этого нажатия клавиши.
Попросите javascript прослушать нажатия клавиш, и массив команд оболочки напрямую коррелирует с каждым возможным нажатием клавиши (или комбинацией штрихов, если вы можете получить фантазию).
Я бы начал с чего-то очень простого, например, точек и тире, но я уверен, вы можете быстро стать очень классными.
Если ваш PHP-скрипт работает как другой пользователь (например, если вы запустили его как модуль Apache, он может быть пользователем apache
), он может не иметь того же доступа к HW, что и при входе в систему как самостоятельно. Проверьте разрешения, необходимые для взаимодействия с параллельным портом.
Если shell_exec вообще не стреляет, он должен запустить сценарий в режиме CGI. Я думал, что он говорит, что только уволил команду, но после этого не дал ему никакого взаимодействия. – Anthony
Он утверждает, что «команда выполнена, но не может взаимодействовать с аппаратным обеспечением», что для меня также звучит как проблема с разрешениями. Скрипт, вероятно, будет запущен как пользователь apache, а apache не будет иметь необходимых прав. Поэтому либо он должен создать скрипт-оболочку, то есть. setuid bit set или демона, который взаимодействует с HW и вызывает это из PHP, или предоставить пользователю apache (или любому другому пользователю скрипт PHP) соответствующие разрешения. Проверка/var/log/messages для сообщений об ошибках также может помочь найти фактическую причину сбоя скрипта. – wimvds
Я установил бы какой-то сервер сокетов на хост, подключенный к параллельному порту, и предоставил сокет домена, с которым мог разговаривать PHP. Это действительно единственный способ борьбы с потоковым вводом-выводом по протоколу RESTful.
Как Anthony mentioned, немного AJAX сделало бы это довольно плавным, насколько это было у пользователя.
Это позволяет использовать простые сокеты PHP для подключения, отправки, получения ответа, отображения, а затем стирания/полоскания/повторения на запрос. Намного проще, чем работать с shell_exec().
- 1. Как протестировать приложение C# с параллельным портом?
- 2. Лучшая виртуальная машина для разработки Delphi с параллельным портом
- 3. Управление параллельным портом через USB-адаптер на современном оборудовании и ОС
- 4. Аппаратное обеспечение управления через php
- 5. Поток управления программой не работает должным образом
- 6. PHP работает с внешней программой, Apache висит
- 7. PDO не работает с портом
- 8. Sony SDK для управления пользовательской программой Windows через USB?
- 9. Как связаться с программой через консоль/C++
- 10. Связь с портом USB
- 11. Как работать с параллельным процессом в php
- 12. Запрос API с PHP параллельным способом
- 13. связывается с последовательным портом через as3
- 14. Очереди сообщений для управления внешней программой python через Django
- 15. .Net Socket не работает с правильным портом?
- 16. socket_connect() не работает с 25 портом
- 17. Как управлять последовательным и параллельным потоком управления с отображаемыми функциями?
- 18. Python - разговор с открытой программой через терминал
- 19. PHP включает внешний файл с указанным портом
- 20. PowerMockRunner с параллельным
- 21. JtextField работает неправильно с программой
- 22. Linux скрипт работает с программой
- 23. Проблема с первой PHP-программой
- 24. Интерфейс веб-страницы с COM-портом для управления страницей
- 25. связь с другой программой python через Интернет
- 26. Почему ProactorEventLoop в Windows не работает с последовательным портом?
- 27. Создание записей DNS с параллельным PLESK апи
- 28. Шаговые двигатели управления через USB
- 29. Проблемы с параллельным программированием
- 30. Xampp Vhost не работает с другим портом
Вы знаете, что 'shell_exec' запускает только одну команду за раз? Может быть, я смущен. Как вы ожидаете продолжения взаимодействия с оборудованием после завершения функции? – Anthony
@ Энтони: если команда только «Светодиод включен», возможно, больше не требуется взаимодействие. – Piskvor
Я читал «взаимодействовать», чтобы означать «туда и обратно», как при управлении устройством за пределами начальной команды. Но я неправильно понял. Если скрипт не запускает команды оболочки, а не те, которые ему нужны, CGI полностью. Тогда перейдем к моей злой идее. – Anthony