我的PHP网站存在问题(使用API,这就是为什么它必须是PHP)。
本网站是在raspberry pi b +上启动的,它连接到热敏打印机(通过串口),我使用python脚本来测试打印机。
现在我的问题是:是否可以通过网络发送数据以使树莓打印一些数据?所以发送一个像写入端口的指令' / dev / ttyxxx'客户支持?
感谢您的帮助
答案 0 :(得分:0)
如果您的意思是:“我有一个需要访问服务器串口的PHP应用程序”: PHP可以访问服务器上的串行端口(在本例中,是您的覆盆子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";
?>
如果你的意思是:“我有一个网站,不知何故需要发送一些东西到客户端的串口” 然后唯一的解决方案是浏览器App。
Chrome应用可以使用Chrome Serial API。 Video Example
答案 1 :(得分:0)
我想到了几个解决方案;基本上你会希望你的php页面解析数据并创建一个可以打印的可信输出(即PDF文件,如果你的打印机支持这个)。
您的下一个任务是如何将此可信输出发送到打印机。同样,存在几种解决方案。
让您的php脚本执行系统可执行文件,例如cat output.pdf > /dev/ttyxxx
(这里很明显,我不知道如何从unix打印)。请注意,可执行文件不依赖于输入,即您希望降低注入攻击等风险。这一点要求您创建的output.pdf值得信赖。
让cron-job查找输出文件并将其发送到打印机。与上述相同的考虑适用。这可能会更好,因为如果多个php会话试图打印文档,它可以避免瓶颈。
围绕上面构建一个较小的框架,可以报告错误是否发生等等。但是,基本上选项1 +魔术。
总而言之,将流程分为两个步骤。接受输入,解析和检查错误/恶意输入,并为打印机创建所需输出的人。这可以在受保护的环境中完成,如果被黑客入侵,则不会暴露系统(至少不会超过通常的php)。 然后,步骤2负责将输出发送到硬件,bash-script,executable或python。