#python #arduino #pyserial
#python #arduino #pyserial
Вопрос:
Я пытаюсь управлять своим Arduino на python с помощью pyserial и получаю эту ошибку: TypeError: аргумент encode () ‘encoding’ должен быть str, а не int
Я действительно новичок в кодировании, поэтому я немного потерялся. Что я пытаюсь сделать, так это то, что я хочу сначала выбрать «функцию» nr 1, которая является «swipe», и я хочу дать ей три аргумента. Во-первых, говорится, что «command» принимает не более двух аргументов, поэтому я попытался использовать 2/3 аргументов, чтобы заставить его работать, но теперь он жалуется, что аргументы должны быть str… Кто-нибудь, кто может помочь мне заставить это работать??
import time
import serial
strComPort = '/dev/ttyACM0'
strComBaud = 9600
cmdSerial = serial.Serial(strComPort, strComBaud)
time.sleep(2) #sec
while True:
command= input("Enter command number in list: n1: Swipe n2: tapn3: Double tapn4: Pressn5: Dragn6: Flick rightn7: Flick left")
if (command == '1'):
x = int(input("From which deg?: "))
y = int(input("To which deg? :"))
spd = int(input("Speed of swipe? :"))
cmdSerial.write(command.encode(x, y, spd))
time.sleep(1)
if (command == '2'):
cmdSerial.write(command.encode())
time.sleep(1)
if (command == '3'):
cmdSerial.write(command.encode())
time.sleep(1)
elif (command == '4'):
cmdSerial.write(command.encode())
time.sleep(1)
elif (command == '5'):
x = int(input("From which deg?: "))
y = int(input("To which deg? :"))
cmdSerial.write(command.encode(x, y))
time.sleep(1)
elif (command == '6'):
cmdSerial.write(command.encode())
time.sleep(1)
elif (command == '7'):
cmdSerial.write(command.encode())
time.sleep(1)
elif (command == 'q'):
print("Exiting...")
break
else:
print("Only number between 1-6 or 'q' (exit)")
Ответ №1:
Вы получаете ошибку, потому что пытаетесь закодировать строку целым числом.
Вот список всех encode, которые вы можете использовать.