【发布时间】:2021-01-16 04:59:35
【问题描述】:
我目前正在使用支持 Android 应用程序的 Raspberry Pi 3 B+ 构建一个自动垃圾桶,我将使用伺服电机作为盖子的执行器,并将 Android 应用程序用作无线遥控器的一种形式。一切都进行得很顺利,直到我遇到一个问题,即每当我尝试在我的 Android 应用程序上按下按钮时,Python shell 程序在测试期间都会出错。我使用了一个参考视频 (https://www.youtube.com/watch?v=t8THp3mhbdA&t=1s) 并彻底跟踪了所有内容,直到遇到了这个障碍。
对我来说不断出现的结果是:
Waiting for connection
...connected from :
根据参考视频,假定的结果是:
Waiting for connection
...connected from : ('192.168.1.70', 11937)
Increase: 2.5
如您所见,IP 地址、端口和“增加”文本没有出现,这意味着代码有问题。
根据观看视频的人制作的一些 cmets,此代码已过时,使用 Python 2,而我们现在拥有的最新版本是 Python 3,我们需要使用 ".encode() " 线处于一个条件。但是,作为一个 Python 新手,恐怕我还没有将它应用到代码上的知识。
这是视频中使用的代码:
import Servomotor
from socket import *
from time import ctime
import RPi.GPIO as GPIO
Servomotor.setup()
ctrCmd = ['Up','Down']
HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print 'Waiting for connection'
tcpCliSock,addr = tcpSerSock.accept()
print '...connected from :', addr
try:
while True:
data = ''
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
if data == ctrCmd[0]:
Servomotor.ServoUp()
print 'Increase: ',Servomotor.cur_X
if data == ctrCmd[1]:
Servomotor.ServoDown()
print 'Decrease: ',Servomotor.cur_X
except KeyboardInterrupt:
Servomotor.close()
GPIO.cleanup()
tcpSerSock.close();
我已经将使用 ' ' 格式的文本字符串更改为 (" ") 格式,因为它还在代码中产生了一些错误,我立即更正了。
任何帮助将不胜感激,并在此先感谢您!
【问题讨论】:
-
你知道你在树莓派上使用的是哪个 Python 版本吗?
-
是的,先生。它是我的树莓派中的 Python 3.5.3。
标签: python raspberry-pi servo