使用android应用程序在树莓派上调用一个函数?

艾哈迈德

我有一个项目,我需要在树莓派上调用一个函数。我已经在 python 中编写了该函数。两个设备都将使用 WiFi 连接。现在我不知道如何在我的应用程序中调用 python 函数。

艾哈迈德

我将我的 raspberry pi 和 android 连接到同一个 Wifi 网络,然后使用套接字连接到特定的 IP 和端口。在 Android 上运行以下代码。

 class CT implements Runnable {
        String ip1;
        int port1;
        public CT(String ip, int port){
            ip1=ip;
            port1=port;
        }
        @Override
        public void run(){
            try{
                in = InetAddress.getByName(ip1);
                s = new Socket(in,port1);
                i = new DataInputStream(s.getInputStream());
                send("query");
                receive();
            }catch(Exception e){}
        }
    }
    public void send(String str){
        try{
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream())),true);
            out.println(str);
            receive();
        }catch(Exception e){}
    }
    public void receive(){
        stopWorker=false;
        workerThread = new Thread(new Runnable() {
            public void run() {
                while(!Thread.currentThread().isInterrupted()&&!stopWorker)
                {
                    try{
                        int n = i.available();
                        if(n>0){
                            byte[] received = new byte[n];
                            i.read(received);
                            data = new String(received,"US-ASCII");
                            h.post(new Runnable()
                            {
                                public void run()
                                {
                                    try{
                                        toggleUi(data);
                                    }
                                    catch(Exception x){}
                                }
                            });
                        }
                    }catch(Exception e){
                        stopWorker=true;
                    }
                }
            }
        });
        workerThread.start();
    }

    public void toggleUi(String data) {
        if(data.contains("PIROK")){


            t1.setText("PIR IS ON");

        }
        if(data.contains("PIROF")){

            t1.setText("PIR IS OFF");

        }
        if (data.contains("1On"))
            s1.setChecked(true);
        else if(data.contains("1Of"))
            s1.setChecked(false);
        if(data.contains("2On"))
            s2.setChecked(true);
        else if(data.contains("2Of"))
            s2.setChecked(false);
    }

    class Close implements Runnable {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            try{
                i.close();
                out.close();
                s.close();
            }
            catch(Exception e){}
        }

    }

- Raspberry pi 上的此代码作为服务来获取来自 android 的调用。

from socket import *
import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)
def init():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(11, GPIO.OUT)  # motor 2
    GPIO.setup(13, GPIO.OUT)  # motor 2
    GPIO.setup(15, GPIO.OUT)  # motor 1
    GPIO.setup(16, GPIO.OUT)  # motor 1
    GPIO.setup(36, GPIO.OUT)
    GPIO.setup(37, GPIO.OUT)

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)  # enable 2
GPIO.setup(36, GPIO.OUT)  # enable 1

GPIO.output(36, True)  # enable 1
GPIO.output(37, True)  # enable 2

state = True

HOST = "192.168.0.107"  # local host
PORT = 9000  # open port 7000 for connection
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)  # how many connections can it receive at one time
conn, addr = s.accept()  # accept the connection
print "Connected by: ", addr  # print the address of the person connected
while True:
    data = conn.recv(1024)  # how many bytes of data will the server receive

    my_data= data.rstrip()
    print ('data is: ',my_data)
    if my_data == 'u':
        init()
        GPIO.output(11, True)
        GPIO.output(13, False)
        GPIO.output(15, True)
        GPIO.output(16, False)
        print 'forward'
        #GPIO.cleanup()

    elif my_data == 'l':
        init()
        print 'left'
        GPIO.output(11, True)
        GPIO.output(13, True)
        GPIO.output(15, True)
        GPIO.output(16, False)
        #GPIO.cleanup()

    elif my_data == 'r':
        init()
        print 'right'
        GPIO.output(11, True)
        GPIO.output(13, False)
        GPIO.output(15, True)
        GPIO.output(16, True)
        #GPIO.cleanup()

    elif my_data == 'd':
        init()
        print 'reverse'
        GPIO.output(11, False)
        GPIO.output(13, True)
        GPIO.output(15, False)
        GPIO.output(16, True)
        #GPIO.cleanup()
    else :
        init()
        print 'stop'
        GPIO.output(11, False)
        GPIO.output(13, False)
        GPIO.output(15, False)
        GPIO.output(16, False)
        #GPIO.cleanup()

    print "Received: ", repr(data)
# reply = raw_input("Reply: ") #server's reply to the client
    reply = ("ok")
    conn.sendall(reply)
conn.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在我的android应用程序的用户界面中调用另一个android应用程序?

来自分类Dev

从 C#/.NET MVC 应用程序中的另一个类调用函数

来自分类Dev

使用Nginx,Socket.io和Node.js在树莓派上托管Angular应用程序

来自分类Dev

在 mvc 应用程序内的 webform 上调用内联函数

来自分类Dev

Android Google Map应用程序崩溃从一个活动通过意图调用

来自分类Dev

如何使用调用另一个.dylib的外部.dylib部署应用程序?

来自分类Dev

在另一个应用程序中调用一个 Django 应用程序 API URL 以使用 React.js 在前端显示

来自分类Dev

从另一个Flask应用程序调用Flask应用程序的REST API

来自分类Dev

从另一个 Web 应用程序调用 Web 应用程序

来自分类Dev

从另一个应用程序中调用一个应用程序,而两个应用程序在android中都具有相同的程序包名称

来自分类Dev

使用`should`测试nodeJS应用程序时出错(undefined不是一个函数)

来自分类Dev

如何维护一个可由Android应用程序和独立应用程序使用的数据库

来自分类Dev

在一个Nodejs应用程序中从另一个Nodejs应用程序调用API的方法

来自分类Dev

在一个Nodejs应用程序中从另一个Nodejs应用程序调用API的方法

来自分类Dev

在Marionette中从另一个应用程序调用一个应用程序的视图

来自分类Dev

在一个Android应用程序中使用两个Facebook App ID

来自分类Dev

如何使用 android studio 制作一个简单的跟踪 android 应用程序

来自分类Dev

如何从另一个本地调用一个功能应用程序?

来自分类Dev

你如何从一个应用程序调用另一个视图

来自分类Dev

导出一个区域设置的android应用程序

来自分类Dev

第一个基本的Android应用程序?

来自分类Dev

如何创建一个Android聊天应用程序

来自分类Dev

android停止另一个应用程序

来自分类Dev

创建一个基本的 MVP Android 应用程序

来自分类Dev

来自另一个Android应用程序的一个应用程序的Android启动服务

来自分类Dev

如何创建一个使用谷歌地图的Android应用程序?

来自分类Dev

使用语音命令在android中打开另一个应用程序?

来自分类Dev

Android:通过我的应用程序使用一个 Firebase ChildEventListener

来自分类Dev

在android中使用Intent将图像共享到另一个应用程序

Related 相关文章

  1. 1

    如何在我的android应用程序的用户界面中调用另一个android应用程序?

  2. 2

    从 C#/.NET MVC 应用程序中的另一个类调用函数

  3. 3

    使用Nginx,Socket.io和Node.js在树莓派上托管Angular应用程序

  4. 4

    在 mvc 应用程序内的 webform 上调用内联函数

  5. 5

    Android Google Map应用程序崩溃从一个活动通过意图调用

  6. 6

    如何使用调用另一个.dylib的外部.dylib部署应用程序?

  7. 7

    在另一个应用程序中调用一个 Django 应用程序 API URL 以使用 React.js 在前端显示

  8. 8

    从另一个Flask应用程序调用Flask应用程序的REST API

  9. 9

    从另一个 Web 应用程序调用 Web 应用程序

  10. 10

    从另一个应用程序中调用一个应用程序,而两个应用程序在android中都具有相同的程序包名称

  11. 11

    使用`should`测试nodeJS应用程序时出错(undefined不是一个函数)

  12. 12

    如何维护一个可由Android应用程序和独立应用程序使用的数据库

  13. 13

    在一个Nodejs应用程序中从另一个Nodejs应用程序调用API的方法

  14. 14

    在一个Nodejs应用程序中从另一个Nodejs应用程序调用API的方法

  15. 15

    在Marionette中从另一个应用程序调用一个应用程序的视图

  16. 16

    在一个Android应用程序中使用两个Facebook App ID

  17. 17

    如何使用 android studio 制作一个简单的跟踪 android 应用程序

  18. 18

    如何从另一个本地调用一个功能应用程序?

  19. 19

    你如何从一个应用程序调用另一个视图

  20. 20

    导出一个区域设置的android应用程序

  21. 21

    第一个基本的Android应用程序?

  22. 22

    如何创建一个Android聊天应用程序

  23. 23

    android停止另一个应用程序

  24. 24

    创建一个基本的 MVP Android 应用程序

  25. 25

    来自另一个Android应用程序的一个应用程序的Android启动服务

  26. 26

    如何创建一个使用谷歌地图的Android应用程序?

  27. 27

    使用语音命令在android中打开另一个应用程序?

  28. 28

    Android:通过我的应用程序使用一个 Firebase ChildEventListener

  29. 29

    在android中使用Intent将图像共享到另一个应用程序

热门标签

归档