我可以通过 SSH/WiFi 将 python 脚本输出发送到 Raspberry Pi 吗?

问题描述

我正在组装一架无人机,我在 RaspBerry Pi 上运行了一个 Python 脚本,该脚本接收 XBox 控制器输入并将它们转换为我可以使用的 Python 输出,例如:

if (event.code == 'ABS_Y'):
    if event.state in range(25001,32768):
        print("Full Throttle Reverse Left")
        kit.motor1.throttle = -1

但是控制器需要连接到 RaspBerry Pi,这限制了我的范围。我可以将控制器连接到笔记本电脑并通过路由器将这些输出发送到 RaspBerry Pi 以执行 Python 命令吗?

我刚开始接触编程,我确信有更聪明的方法可以做到这一点,因此欢迎提供任何帮助或替代建议。

解决方法

方法如下:

在 Raspberry Pi 中,确保您有 OpenSSH(您可能有,如果无法连接,请尝试运行 apt install openssh-server),并且您的计算机上还需要 OpenSSH 客户端('ssh' 命令)。

  1. 首先,让我们看看您的脚本。在您的 Python 脚本上,您可以编写如下内容来输出 JSON:

print(json.dumps(your message here....))

  1. 在您的 Raspberry Pi 上,找出您的私有 IP。您可以执行以下操作:ifconfig | grep 192

  2. 在您的计算机上,键入: ssh pi@<your private IP> 'python <your script path,example: /home/pi/Desktop/script.py>'

    您可能需要将 pi 更改为您在 Raspberry Pi 上使用的用户名。

  3. 该脚本将在您的 Raspberry Pi 上运行,您将在您的计算机上获得 JSON 输出!您可以使用 subprocessjson.loads 轻松实现自动化。这种方式也是安全的,因为 SSH 使用加密。

如果这对您有帮助,请告诉我。如果您遇到问题,请在下方发表评论。

,

我建议为您的应用程序使用套接字。 客户端(在笔记本电脑上运行)可以接收 xbox 控制器输入并将其发送到服务器(在 raspberry pi 上运行)。

这是一个简单的套接字应用程序:

客户:

$tempName = $SQL->query("Select temporadas.nome from temporadas INNER JOIN episodios ON 
  temporadas.url_anime = episodios.url_anime AND temporadas.temporada = 
  episodios.temporada WHERE temporadas.nome = 1 LIMIT  500");

服务器:

import socket

ip = "192.168.xxx.yyy" # IP of Raspberry Pi

# connect to server
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((ip,8080))
print("CLIENT: connected")

# send a message
msg = "I am CLIENT"
client.send(msg.encode())

# recive a message and print it
from_server = client.recv(4096).decode()
print("Recieved: " + from_server)

# exit
client.close()

可以在here找到更多信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...