Python 如何通过串行通信正确发送int

Python 如何通过串行通信正确发送int,python,arduino,Python,Arduino,我试图通过串行通信使用python和arduino控制伺服电机,但我似乎无法找到如何将int值发送给arduino。(无法转换为字符串,因为str函数不支持unicode) 该代码打开一个带有x和y轴的窗口,并将坐标打印到屏幕上。它们都是int类型。我怎样才能把它们送到arduino去移动伺服 import serial import time import pygame port = serial.Serial("COM3", baudrate=9600) time.sl

我试图通过串行通信使用python和arduino控制伺服电机,但我似乎无法找到如何将int值发送给arduino。(无法转换为字符串,因为str函数不支持unicode)

该代码打开一个带有x和y轴的窗口,并将坐标打印到屏幕上。它们都是int类型。我怎样才能把它们送到arduino去移动伺服

import serial
import time
import pygame

port = serial.Serial("COM3", baudrate=9600)
time.sleep(1)

WIDTH, HEIGHT = 540, 540
WIN = pygame.display.set_mode((WIDTH, HEIGHT))


Color = (255,255,255)


def main():
        run = True
        while run:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    run = False
                #get position x,y mouse
                x, y = pygame.mouse.get_pos()
                #Draw y line
                pygame.draw.line(WIN, Color, (0, y), (WIDTH,y)) 
                #Draw x line
                pygame.draw.line(WIN, Color, (x, 0), (x, HEIGHT)) 
                #Draw circle
                pygame.draw.circle(WIN, (139,0,0), (x, y), 5, 0)
                pygame.display.flip()
                print(x,y)

                WIN.fill([0,0,0])
                time.sleep(0.15)


if __name__ == "__main__":
    main()

这是arduino密码

#include <Servo.h>
Servo myservo;
int x;
void setup() {
  myservo.attach(9); 
  Serial.begin(9600);
}


void loop() {
  while (Serial.available())
  {
    x = Serial.read();
  }
}
#包括
伺服myservo;
int x;
无效设置(){
附件(9);
Serial.begin(9600);
}
void循环(){
while(Serial.available())
{
x=串行.read();
}
}

在发送前尝试将其转换为字节

msg=bytes('1','utf-8')


接收后将其转换为int

您可以将整数转换为bytearray,如下所示

ba = bytearray(struct.pack("i", num))
然后通过串口发送bytearray

ser.write(ba)

在arduino端,您现在读取字节并“构建”int数据类型。

请解释“无法转换为字符串,因为str函数不支持unicode”的含义。unicode支持与此有什么关系
str__
都支持ASCII码。类型错误:不支持unicode字符串,请将其编码为字节:“476”我也会研究这个问题。谢谢你的回答