В настоящее время я создаю автоматизированную корзину для мусора с использованием Raspberry Pi 3 B + с поддержкой приложений Android, где я бы использовал серводвигатель в качестве привода для крышки, а приложение Android - в качестве формы беспроводного дистанционного управления.Все шло гладко, пока я не столкнулся с проблемой, что всякий раз, когда я пытаюсь нажать кнопку в моем приложении Android, во время тестирования в программе оболочки Python возникают ошибки.Я использовал эталонное видео (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-адрес, порт и текст «Увеличить» не отображаются, то есть что-то не так скод.
Согласно некоторым комментариям, которые были сделаны людьми, которые смотрели видео, этот код устарел, используя 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();
Я уже изменил текстовые строки, которые использовали формат '', в формат (""), поскольку он также приводил к некоторым ошибкам в коде, которые я немедленно исправил.
Любая помощь будет принята с благодарностью и заранее спасибо!