2015-11-06 109 views
0

我編碼在python覆盆子pi。我想通過互聯網控制我的pi,因爲我需要從我的android應用程序發送數據到我的Pi上正在運行的python腳本。例如,如果我在我的android應用程序上單擊按鈕B,則樹莓派的python腳本應通過Internet獲取數據「12345」作爲字符串或整數。我會比較接收到的數據並在python中採取所需的操作。反之亦然。如果我點擊由tkinter創建的python中的按鈕,python應該通過Internet向我的android應用程序發送一些數據,如「67890」作爲字符串或整數。我會比較接收到的數據我的android應用程序,並採取必要的行動。應該繼續在Java中創建的android應用程序和Pi上的python腳本之間發送和接收數據的持續過程。我已經創建了沒有這個通信部分的python程序和android應用程序。如何才能做數據發送?如何從python腳本通過互聯網發送數據到android應用程序,反之亦然。

回答

3

你不應該從互聯網上的溝通開始。一開始可以使用你的本地WiFi(代碼保持不變,但是你不能把你的RPi設置成一個帶DynDNS的服務器和類似的東西,如果你不知道你在做什麼正在做)。

然後從python部分開始。您的Pi充當您的應用程序的服務器。所以看一下使用Python的ServerSockets:like this example。在這裏你定義一個服務運行的端口。 您的Python代碼現在將在該端口上等待傳入連接。

現在,在您的Android設備上,您需要連接到該套接字。

Socket sock = new Socket("IP-ADDRESS_OF_YOUR_RPi", PORT); 

現在你的Android是與RPI通過您的本地WiFi連接(假設兩者都是在同一個網絡中)

然後你就可以在輸入和Outputstreams您Android的應用程序和你的Python之間的溝通-服務器。

但是你應該肯定對服務器客戶端和TCP套接字通信做一些研究。將這個應用程序連接到互聯網是你應該做的最後一步(因爲互聯網服務器上的開放端口是對犯罪分子的邀請)。

+0

謝謝。 python服務器和客戶端正在工作。但是,如果我在eclipse中切換Android工作室和Python服務器中的android模擬器,當我作爲客戶端執行我的android應用並嘗試發送數據時,它會崩潰,myapp不幸停止工作。是否因爲需要在Windows的軟件之外進行一些設置才能發生這種情況,或者這是我的android代碼錯誤?我甚至從清單中授予Android應用程序Internet和Wifi許可。 –

+0

你應該看看你的Android應用程序的「logcat」來找出錯誤是什麼。 「應用程序停止工作」消息不會告訴我們任何事情。 logcat應該在你的應用程序崩潰時運行。你有你的errormessage和stacktrace。 –

相關問題