Communicateur с клиентским последовательным портом через сеть

У меня проблема с моим сайтом PHP (который использует API, поэтому это должен быть PHP).

Этот веб-сайт запущен на Raspberry Pi B +, который подключен к термопринтеру (через последовательный порт), я использовал скрипт Python для тестирования принтера.

Теперь у меня вопрос: можно ли отправлять данные через Интернет, чтобы малина распечатала некоторые данные? Итак, отправьте инструкцию типа write на порт ‘/ dev / ttyxxx’ на стороне клиента?

Спасибо за вашу помощь

0

Решение

Если вы имеете в виду: «У меня есть приложение PHP, которому необходим доступ к последовательному порту сервера»:
PHP может получить доступ к последовательному порту на сервере (в данном случае, к вашему raspberry pi). PHP воспринимает это как нормальный файл.

От PHP Fopen страница:

<?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 можно использовать.
Пример видео

0

Другие решения

Я пришел к мысли о нескольких решениях; в основном вы хотели бы, чтобы ваша php-страница анализировала данные и создавала доверенный вывод, который можно распечатать (т.е. PDF-файл, если ваш принтер поддерживает это).

Ваша следующая задача — как это сделать доверенный вывод отправлен на принтер. Опять же, существует несколько решений.

  1. Пусть ваш php-скрипт выполняет системный исполняемый файл, например, cat output.pdf > /dev/ttyxxx (здесь ясно, что я не знаю, как печатать из unix). Обратите внимание, что исполняемый файл не зависит от ввода совсем, то есть вы хотите снизить риск инъекционных атак и тому подобного. Для этого необходимо, чтобы созданный вами файл output.pdf заслуживал доверия.

  2. Попросите cron-job найти выходные файлы и отправить их на принтер. Применяются те же соображения, что и выше. Это может быть лучше, так как это может избежать узких мест, если несколько php-сессий пытаются распечатать документ.

  3. Создайте меньшую структуру вокруг вышеупомянутого, которая может сообщать о возникновении ошибок и т. Д. Но все же, в основном вариант 1 + магия.

В общем, разделите процесс на два этапа. Тот, который принимает ввод, анализирует и проверяет на ошибочность / злонамеренный ввод и создает необходимый вывод для принтера. Это может быть сделано в защищенной среде, которая в случае взлома не подвергает систему опасности (по крайней мере, не больше, чем обычный php).
Шаг 2 затем заботится об отправке вывода на оборудование, либо bash-script, исполняемый файл, либо python.

0

По вопросам рекламы [email protected]