Python 如何通过串行通信正确发送int
我试图通过串行通信使用python和arduino控制伺服电机,但我似乎无法找到如何将int值发送给arduino。(无法转换为字符串,因为str函数不支持unicode) 该代码打开一个带有x和y轴的窗口,并将坐标打印到屏幕上。它们都是int类型。我怎样才能把它们送到arduino去移动伺服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
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”我也会研究这个问题。谢谢你的回答