将pyserial与Arduino同步

问题描述 投票:0回答:1

我想在Python中使用与Arduino的串行通信,以使电机根据指定的颜色移动。我在与 Arduino

pyserial
同步时遇到问题。

这是我的Python代码:

import serial

# Serial object for communication with Arduino
ser = serial.Serial(port='COM8', baudrate=9600, timeout=.1)
# write distance and radius to Arduino through Serial Communication
ser.write(str(length))
ser.write(bytes('#', "UTF-8"))
ser.write(bytes(radius))
ser.write(bytes('/', "UTF-8"))

这是我的 Arduino 代码:

void loop() {
  while(Serial.available())
  {
    inChar = Serial.read();
    if(inChar == '#'){
      while(Serial.available()){
        inChar = Serial.read();
        if(inChar == '/'){
          break;
        }
        inputStringR += inChar;
      }break;
    }
    inputStringL += inChar;  
  }

这是我的错误:

Traceback (most recent call last):
  File "d:\project gdevelop\belajar web1\clor.py", line 69, in <module>
    ser.write(str(length))
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python311\Lib\site-packages\serial\serialwin32.py", line 310, in write
    data = to_bytes(data)
           ^^^^^^^^^^^^^^
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python311\Lib\site-packages\serial\serialutil.py", line 65, in to_bytes
    raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: '267'

有人熟悉这个问题吗?

python arduino pyserial
1个回答
0
投票

您需要对尝试通过串行发送的字符串进行编码。 根据Serial.py文档serial.write通过端口发送字节数据。

使用编码会将字符串数据转换为字节。

import serial
length = 5
radius = 2
encode_data= ""
# Serial object for communication with Arduino
ser = serial.Serial(port='COM8', baudrate=9600, timeout=.1)
# write distance and radius to Arduino through Serial Communication
ser.write(str(length).encode())
encode_data = "#"
ser.write(encode_data.encode())
ser.write(str(radius).encode())
 encode_data = "/"
ser.write(encode_data.encode())
© www.soinside.com 2019 - 2024. All rights reserved.