1

数か月前、Arduino マイクロコントローラー用のシリアル接続ライブラリーを C で作成しました。ライブラリの PHP ラッパーを作成できたらどんなに素晴らしいだろうと考えていました。

「acm_get_door()」と呼ばれる関数を 1 つだけ含む PHP 拡張機能を作成しました。これは、Arduino の特定のピンの状態に応じて、-1、0、または 1 を返す必要があります。-1 が返された場合は、接続が設定されていないことを意味します。

そのため、カスタム拡張機能をロードし、両方の php.ini ファイルを変更して、他のすべてを再起動した後、CLI を介してこのテストを実行しました。

$ php -r 'echo acm_get_door();'

「1」を返しました。私は興奮していたので、回路をいじって、「0」が得られるかどうかを確認しました。よくやったし、拡張機能は完璧に機能していると思いました。

次に、テスト Web サーバー (同じコンピューター) の .php ファイルに移動し、関数を実行しようとしました。それから「-1」の結果を得ました。拡張機能はロードされますが、Arduino への接続を開始できないようです。

特定のファイルへのアクセスに関する許可の問題ではないかと思います。関数は、CLI バージョンで可能な「/dev/ttyACM0」というファイルにアクセスする必要があります。私の Apache Web サーバーがそのファイルにアクセスする権限を持っていない可能性があります。

お時間をいただきありがとうございます。

4

2 に答える 2

1

おそらく、グループにはデバイスの読み取り/書き込み権限があります。

そのため、 を使用してデバイスのグループ所有者を見つけますls -l /dev/tty/ACM0。次に、次を使用して自分自身をグループに追加します。

sudo adduser <me> <the_group>

(ここで、meはユーザー名で、the_groupはデバイスのグループです)

変更されたグループ権限を有効にするには、ログアウト/ログインが必要になる場合があります。

于 2013-03-17T16:46:35.057 に答える
0

わかりました、John Jesus のおかげで、ファイル /dev/ttyACM0 のパーミッションを変更する必要がありました。

660 に設定されていましたが、666 が機能しているようです (ただし、これはおそらく悪い考えです)。

于 2013-03-17T14:13:06.220 に答える