Ошибка типа: аргумент encode () ‘encoding’ должен быть str, а не int

#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, которые вы можете использовать.