我有我的PHP網站(這是使用的API,這就是爲什麼它必須是PHP)的問題。Communicateur通過網絡與客戶端的串行端口
本網站是通過連接到熱敏打印機(通過串行端口)的樹莓派b +啓動的,我使用python腳本來測試打印機。
現在我的問題是:是否可以通過網絡發送數據,使覆盆子打印一些數據?所以發送一個像寫入端口'/ dev/ttyxxx'客戶端的指令?
感謝您的幫助
我有我的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