2015-11-06 96 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。 –