Communicateur通过网络与客户端的串行端口
我有我的PHP网站(这是使用的API,这就是为什么它必须是PHP)的问题。Communicateur通过网络与客户端的串行端口
本网站是通过连接到热敏打印机(通过串行端口)的树莓派b +启动的,我使用python脚本来测试打印机。
现在我的问题是:是否可以通过网络发送数据,使覆盆子打印一些数据?所以发送一个像写入端口'/ dev/ttyxxx'客户端的指令?
感谢您的帮助
如果你的意思是:“我有一个需要访问服务器的串行端口的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";
?>
如果你的意思是:“我有一个网站,出于某种原因需要送东西到客户端的串行端口” 那么唯一的解决方案是一个浏览器应用程序。
有Chrome应用程序可以使用的Chrome Serial API。 Video Example
我想到了几种解决方案;基本上你会希望你的php页面解析数据并创建一个trusted可以打印的输出(例如,如果你的打印机支持这个PDF文件)。
您的下一个任务是如何将此可信输出发送到打印机。再次,存在几种解决方案。
让您的php脚本执行系统可执行文件,例如,
cat output.pdf > /dev/ttyxxx
(这里很明显,我不知道如何从unix打印)。请注意,可执行文件完全不依赖于输入,即所有,即您想要降低注入攻击等的风险。这一点要求您创建的output.pdf值得信赖。对输出文件进行cron-job查找并将它们发送到打印机。与上述相同的考虑适用。这可能会更好,因为如果多个php会话尝试打印文档,它可以避免瓶颈。
构建一个较小的框架围绕上述可以报告错误发生等等。但仍然,基本上选项1 +魔术。
总而言之,将过程分为两步。一个接受输入,解析并检查错误/恶意输入,并为打印机创建所需的输出。这可以在受保护的环境中完成,如果遭到黑客攻击,则不会暴露系统(至少不会超过通常的PHP)。 第2步然后负责发送输出到硬件,无论是bash脚本,可执行文件或python。
谢谢您的回答,亲爱的朋友。你的解决方案是好的,但我的问题是,所有必须自动发生(我按下1个网站上的按钮=使文件+执行python代码,将打印文件) 是否有可能通过执行一些python脚本网络? 谢谢 – SolidTerre 2015-02-24 13:52:09
啊,所以串口不是在托管php的服务器上,而是在客户端上。在服务器上的php不能在客户端上执行任何事情。它可能需要一个浏览器插件,在这个插件中,php脚本发送一个插件拦截并可以在客户端执行的输出,但这是一个主要的安全风险! – MrGumble 2015-02-24 15:47:54
你能@MrGrumble链接我一些教程或一些视频,告诉我如何通过插件做到这一点?这将是很好的。 谢谢你的帮助。 – SolidTerre 2015-02-25 09:13:13
谢谢你的回答亲爱的朋友,但我想你误解了我,或者我没有解释得很好。树莓不是服务器,但它是客户端(有点像PoS)!所以我需要一个解决方案,以便服务器执行一些神奇的arcanic代码,这将允许我写入客户端的^^(或一些php代码,我可以执行我的python代码)的串行端口。感谢您的帮助 – SolidTerre 2015-02-24 13:25:29
因此,您的树莓派正在运行Web浏览器连接到PHP网站?哪个浏览器? – Tremmors 2015-02-24 15:51:18
无论它需要什么浏览器。它运行Linux,因此我可以根据需要安装Mozilla或Chrome。我只需要一些解决方案^^' 谢谢你的帮助。 – SolidTerre 2015-02-25 09:12:17