У меня проблема с моим сайтом PHP (который использует API, поэтому это должен быть PHP).
Этот веб-сайт запущен на Raspberry Pi B +, который подключен к термопринтеру (через последовательный порт), я использовал скрипт Python для тестирования принтера.
Теперь у меня вопрос: можно ли отправлять данные через Интернет, чтобы малина распечатала некоторые данные? Итак, отправьте инструкцию типа write на порт ‘/ dev / ttyxxx’ на стороне клиента?
Спасибо за вашу помощь
Если вы имеете в виду: «У меня есть приложение PHP, которому необходим доступ к последовательному порту сервера»:
PHP может получить доступ к последовательному порту на сервере (в данном случае, к вашему raspberry pi). PHP воспринимает это как нормальный файл.
<?php
// Set timeout to 500 ms
$timeout=microtime(true)+0.5;
// Set device controle options (See man page for stty)
exec("/bin/stty -F /dev/ttyS0 19200 sane raw cs8 hupcl cread clocal -echo -onlcr ");
// Open serial port
$fp=fopen("/dev/ttyS0","c+");
if(!$fp) die("Can't open device");
// Set blocking mode for writing
stream_set_blocking($fp,1);
fwrite($fp,"foo\n");
// Set non blocking mode for reading
stream_set_blocking($fp,0);
do{
// Try to read one character from the device
$c=fgetc($fp);
// Wait for data to arive
if($c === false){
usleep(50000);
continue;
}
$line.=$c;
}while($c!="\n" && microtime(true)<$timeout);
echo "Responce: $line";
?>
Если вы имеете в виду: «У меня есть веб-сайт, который каким-то образом должен что-то отправлять на последовательный порт клиента», тогда единственное решение — это приложение для браузера.
Там есть Chrome Serial API какие приложения Chrome можно использовать.
Пример видео
Я пришел к мысли о нескольких решениях; в основном вы хотели бы, чтобы ваша php-страница анализировала данные и создавала доверенный вывод, который можно распечатать (т.е. PDF-файл, если ваш принтер поддерживает это).
Ваша следующая задача — как это сделать доверенный вывод отправлен на принтер. Опять же, существует несколько решений.
Пусть ваш php-скрипт выполняет системный исполняемый файл, например, cat output.pdf > /dev/ttyxxx
(здесь ясно, что я не знаю, как печатать из unix). Обратите внимание, что исполняемый файл не зависит от ввода совсем, то есть вы хотите снизить риск инъекционных атак и тому подобного. Для этого необходимо, чтобы созданный вами файл output.pdf заслуживал доверия.
Попросите cron-job найти выходные файлы и отправить их на принтер. Применяются те же соображения, что и выше. Это может быть лучше, так как это может избежать узких мест, если несколько php-сессий пытаются распечатать документ.
Создайте меньшую структуру вокруг вышеупомянутого, которая может сообщать о возникновении ошибок и т. Д. Но все же, в основном вариант 1 + магия.
В общем, разделите процесс на два этапа. Тот, который принимает ввод, анализирует и проверяет на ошибочность / злонамеренный ввод и создает необходимый вывод для принтера. Это может быть сделано в защищенной среде, которая в случае взлома не подвергает систему опасности (по крайней мере, не больше, чем обычный php).
Шаг 2 затем заботится об отправке вывода на оборудование, либо bash-script, исполняемый файл, либо python.