Я использую малиновый PI (Jessi) для отправки строки шестнадцатеричных символов на устройство с использованием последовательного порта (от USB к последовательному порту). Я успешно использовать следующую команду из командной строки:Запись шестнадцатеричного в последовательный порт из PHP
echo -en "\x63\x69\x72\x62\x0d" > /dev/ttyUSB0
Я хочу сделать то же самое с помощью PHP на том же Raspberry Pi, но когда я пытаюсь послать ту же команду из PHP-файла я не получаю желаемый результат. Пример PHP код:
var_dump(shell_exec('echo -en "\x63\x69\x72\x62\x0d" > /dev/ttyUSB0'));
Я пробовал много вещей, чтобы получить эту работу:
- я добавил WWW-данных (PHP пользователей) для группы исходящих звонков (группа для/DEV/ttyUSB0)
- Я поставил CHMOD 777 для/DEV/ttyUSB0
- Я проверил, что PHP можно написать/DEV/ttyUSB0 (is_writable())
- Я пробовал много различных настроек Stty (например: Запущенная -F/de v/ttyUSB0 -isig -icanon)
- Я пробовал разные способы в PHP писать на последовательный порт (PhpSerial library, pack() и fwrite(), printf() и т. д.) Между прочим.
Я не нашел способ, чтобы увидеть именно то, что PHP пишет в/DEV/ttyUSB0 (экран, Миником), но я знаю, что это что-то делает, так как после того, как я попробовал PHP-скрипт в следующий раз, когда я пытаюсь от командной строки это не сработает. Во второй раз, после попытки PHP, попытка из командной строки прошла успешно.
Я попытался запустить файл PHP из командной строки (CLI, PHP5 и PHP7) и использовать веб-сервер, но ничего не работает.
Я пробовал все, что мог придумать, и нашел его в Интернете, но я все еще не могу заставить его работать.
Что может вызвать эту проблему? Команда работает, я просто хочу запустить ее с помощью PHP, но это не удается. Другая команда, которую я пытаюсь, используя PHP, работает - например:
var_dump(shell_exec('whoami'));
Update # 1 Я создал файл Баш скрипт с рабочей командой, а также добавил эхо «ОК», чтобы получить выход обратно. Файл работает при запуске из командной строки, но когда я пытаюсь запустить его с PHP, я получаю «ok», но он все еще не работает с подключенным устройством. Я попытался запустить скрипт Баш из командной строки, как пользователь WWW-данных и что работает, но до сих пор ничего я с помощью PHP не работает:
sudo -u www-data bash -c '/home/test/cmd'
Update # 2 Пробовал то же самое на другой компьютер, управляющий Kodi, с тем же отрицательным результатом. Команда работает, но не при запуске с использованием PHP.
Как вы можете видеть выше, я даже попробовал chmod 777 для/dev/ttyUSB0, поэтому разрешения на запись не были моей проблемой. – AxAn