pyserial write()函数在发送之前必须发送多次

2024-09-29 21:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

阿杜伊诺

void setup() {
  Serial.begin(9600);

}

void loop() {
  char readChar[64];
  Serial.readBytesUntil(33,readChar,64);
  String read_ = String(readChar);
  Serial.println(read_);
}

Python

import serial
import time


sr = serial.Serial('COM5', 9600)
time.sleep(2)
sr.flush()
time.sleep(2)
while True:
    wr = '574352936875!'
    print(wr)
    sr.write(wr.encode())
    time.sleep(2)
    rd = sr.readline()
    print(rd)
    time.sleep(2)

结果

574352936875!
b'9922352936875\xed\xbf\xef\xed\xdd\xaem~\xf5\xf6\xb7Y\xf1\x9f3#\xe9j\xd3\xf5\xf9\x8fJr\xf6z\x13\xdb\xfd\xdd]\xfa\xcc4v\xf9F\xf7\xd5\xcc\xdf\x06K?\xf8\x9c\xff\xef\xa0\xfd\xff\r\n'
574352936875!
b'9922352936875\xed\xbf\xef\xed\xdd\xaem~\xf5\xf6\xb7Y\xf1\x9f3#\xe9j\xd3\xf5\xf9\x8fJr\xf6z\x13\xdb\xfd\xdd]\xfa\xcc4v\xf9F\xf7\xd5\xcc\xdf\x06K?\xf8\x9c\xff\xef\xa0\xfd\xff\r\n'
574352936875!
b'5743529368755\xed\xbf\xef\xed\xdd\xaem~\xf5\xf6\xb7Y\xf1\x9f3#\xe9j\xd3\xf5\xf9\x8fJr\xf6z\x13\xdb\xfd\xdd]\xfa\xcc4v\xf9F\xf7\xd5\xcc\xdf\x06K?\xf8\x9c\xff\xef\xa0\xfd\xff\r\n'
574352936875!
b'5743529368755\xed\xbf\xef\xed\xdd\xaem~\xf5\xf6\xb7Y\xf1\x9f3#\xe9j\xd3\xf5\xf9\x8fJr\xf6z\x13\xdb\xfd\xdd]\xfa\xcc4v\xf9F\xf7\xd5\xcc\xdf\x06K?\xf8\x9c\xff\xef\xa0\xfd\xff\r\n'

Process finished with exit code -1

第一个1~2次write()函数是dot not work 在第三个函数之后,write函数可以正常工作。 b'9922352936875更改为b'5743529336875

我用 阿杜伊诺·乌诺 pyserial 3.4 python 3.7

在Arduino Due中没有这样的问题。为什么呢


Tags: timeserialsleepxffsrxefxddxf6

热门问题