[英]PHP windows read write to/from serial port usind DOTNET System.IO.Ports
[英]Write hex to serial port from PHP
我正在使用Raspberry PI(Jessi)通過串行端口(USB到串行端口)將十六進制字符字符串發送到設備。 我從命令行成功使用了以下命令:
echo -en "\x63\x69\x72\x62\x0d" > /dev/ttyUSB0
我想在同一Raspberry Pi上使用PHP做同樣的事情,但是當我嘗試從一個PHP文件發送相同的命令時,卻沒有得到想要的結果。 示例PHP代碼:
var_dump( shell_exec('echo -en "\x63\x69\x72\x62\x0d" > /dev/ttyUSB0') );
我已經嘗試了很多方法來使其工作:
我還沒有找到一種方法來確切了解PHP正在寫入/ dev / ttyUSB0(屏幕,minicom),但是我知道它可以執行某些操作,因為在我下次嘗試從命令行嘗試PHP腳本后,它不起作用。 第二次,從PHP嘗試之后,從命令行嘗試成功。
我嘗試從命令行(CLI,PHP5和PHP7)運行PHP文件並使用Web服務器,但沒有任何效果。
我已經嘗試了所有我能想到的東西,並在網上找到了,但仍然無法使它正常工作。
是什么導致此問題? 該命令有效,我只想使用PHP運行它,但是沒有成功。 我嘗試使用PHP的其他命令有效-例如:
var_dump( shell_exec('whoami') );
更新#1我使用工作命令創建了一個bash腳本文件,並且還添加了回顯“ ok”以獲取一些輸出。 從命令行運行該文件時,該文件有效,但是當我嘗試從PHP運行該文件時,我又獲得了“ ok”,但仍然無法影響連接的設備。 我試圖以www-data用戶的身份從命令行運行bash腳本,並且該腳本可以運行,但是仍然無法使用PHP進行操作:
sudo -u www-data bash -c '/home/test/cmd'
更新#2在另一台運行Kodi的計算機上嘗試相同的操作,但結果相同。 該命令有效,但在使用PHP運行時無效。
我遇到了類似的問題。 我最終弄清楚的是,用戶httpd(我正在運行CentOS - apache用戶在您的Linux風格上可能有所不同)沒有對/ dev / ttyS0的寫入權限。
//向所有用戶授予對/ dev / ttyS0的寫權限
須藤chmod a + w / dev / ttyS0
弄清楚如何只向httpd用戶而不是計算機上的所有用戶授予寫許可權,這會稍微優雅一點。
希望這可以幫助你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.