2013-05-31 17 views
1

我有一個web服務器運行一個簡單的PHP頁面,有幾個按鈕(12345678) 這些按鈕通過arduino控制我家的燈光。從php應用程序執行一個表單文章

現在我想創建一個簡單的應用程序來控制這些按鈕。 PHP腳本張貼如下:

<?php if (isset($_POST['button1'])) { shell_exec('screen -S led -X stuff 1'); } ?> 
<?php if (isset($_POST['button2'])) { shell_exec('screen -S led -X stuff 2'); } ?> 
<?php if (isset($_POST['button3'])) { shell_exec('screen -S led -X stuff 3'); } ?> 
<?php if (isset($_POST['button4'])) { shell_exec('screen -S led -X stuff 4'); } ?> 
<?php if (isset($_POST['button5'])) { shell_exec('screen -S led -X stuff 5'); } ?> 
<?php if (isset($_POST['button6'])) { shell_exec('screen -S led -X stuff 6'); } ?> 
<?php if (isset($_POST['button7'])) { shell_exec('screen -S led -X stuff 7'); } ?> 
<?php if (isset($_POST['button8'])) { shell_exec('screen -S led -X stuff 8'); } ?> 

<form action="" method="post"> 
<button type="submit" name="button1">AV Rack</button> 
<br> 
<button type="submit" name="button2">Scherm bureau + LEDs</button> 
<br> 
<button type="submit" name="button4">Woonkamer LEDs + Beamer</button> 
<br> 
<button type="submit" name="button3">Buiten Achter</button> 
<br> 
<button type="submit" name="button5">Red LED test</button> 
<br> 
<button type="submit" name="button6">Error test</button> 
<br> 
<button type="submit" name="button7">Alles aan</button> 
<br> 
<button type="submit" name="button8">Alles uit</button> 
</form> 

有人可以指出我在正確的方向嗎?

編輯:

我真的得到了一個地方,但不是所有的方式。

應用程序正在工作併發送命令,因爲它應該。 網絡界面仍在運行

我認爲我的服務器(ubuntu)不接受我發送的信息/命令。我想我在命令結束時做錯了什麼。

index.php?action=""&method="post"&type="submit"&name="button1" 

如果我把我的瀏覽器地址欄或,我試圖不給我一個結果,但與按鈕只是網頁任何其他字符串。

有什麼建議嗎?

+0

1表單1提交按鈕 – Fabio

+0

頁面由php生成的事實是不相關的;所有重要的是它是一個HTML頁面,你的服務器期待HTTP請求。這樣做,也許你想嘗試一種更加標準的HTTP消息傳遞方式(SOAP,JSON,REST)(我不知道Arduino是否支持它們)。 – SJuan76

回答

2

實際上,您不控制這些按鈕。您執行一個POST請求(您可能想要查看HTTP標準),並且如代碼所示,只要您將任何內容傳遞給keyX爲keyX的變量,它就會完成您想要的操作。對於POST請求,Java中有一個HTTP庫,將爲您完成大部分工作。

[編輯:] This教程可能會有所幫助。可悲的是,發送這樣一個簡單的請求並不那麼簡單,特別是因爲你甚至不關心答案。但是有了這個代碼,我相信你將能夠弄清楚。

[編輯2:]如果你只想完成它,請查看@ FoamyGuy的答案。這堂課看起來不錯,我發表了一則評論,與班級相結合,應該很快就會到場。

+0

謝謝你,我現在正在某個地方,當我取得一些進展時,我會更新你。 –

2

我想如果你下載類的副本使用HttpRequest object given in this answer

,並把它放在你的項目,你可以發送這樣的請求:

HttpRequest mReq = new HttpRequest(); 
mReq.sendPost(urlToYourServer, data); 

您需要填寫網址到您的服務器,以及要發送的數據的url編碼名稱值對列表。我不是特別流利的PHP,所以我不明白什麼參數,如果你的服務器期待,但如果是這樣的話data是你把它們放在哪裏。如果沒有,你可以給它一個空白的字符串。

+0

他的PHP腳本希望其中一個變量button1到button8爲_exist_。如果數據在這裏是一個字符串,執行Button1後面的命令將要求數據字符串看起來有點像這樣:''Button1 = execute「',其中execute可以是任何東西,實際上,因爲腳本只檢查變量是否可用,並不關心內容。 –

+0

我對android編程挺陌生,不知道把剛剛發佈的代碼片段放在哪裏。我有這個類,根據我的需要更改了參數,並在activity_main.xml中創建了按鈕。我如何繼續連接這些組件? –

+0

您可以將它放入活動中的點擊監聽器,以便每當您單擊按鈕時它都會發送請求。要進行測試,儘管你可以將它放在onCreate裏面,如果你想的話,它會在應用程序啓動時發送帖子\ – FoamyGuy