问题遇到的现象和发生背景
最近在研究yolov5图像识别,打算用yolov5模型写一个能自动通关森林冰火人的脚本,于是乎就开干,训练以及坐标获取方面都没问题,控制方面打算用arduino leonado板子充当usb键鼠,我的想法是通过pyserial模块让电脑的pycharm的yolov5项目与arduino leonado板子进行通信,以达到控制arduino leonado的目的。
但是当我把串口初始化之后,将serial.write()放入yolo处理每一帧画面的for循环中,serial.write()似乎就没有效果,我猜想可能是serial.write()写入的速度太慢或者板子读取的速度太慢,于是我就在serial.write()后面加了个time.sleep(1)结果arduino leonado就能接收到信息了。想问是不是发送频率太快板子接收不过来呢?
问题相关代码,请勿粘贴截图
电脑pycharm项目中有关pyserial模块简化后的代码:
板子能接收到“1”:
import serial
import time
ser = serial.Serial("COM6",115200)
while True:
ser.write("1".encode())
time.sleep(1)
板子无法接收到“1”
import serial
import time
ser = serial.Serial("COM6",115200)
while True:
ser.write("1".encode())
运行结果及报错内容
运行结果是前者板子能接收到信息,后者不能
我的解答思路和尝试过的方法
我尝试过time.sleep()更短的是间,似乎0.7s是个分界线,大于该时间就能接收到,小于则不能。我严重怀疑板子无法接收高频率的串口信息,但是又不知道该咋整,森林冰火人对延迟要求虽然不是很高,但是0.7s的延迟实在无法接受
我想要达到的结果
我主要就是想实现电脑端pycharm中的项目可以不断地发送实时地指令给arduino leonado开发板,然后开发板通过usb连接电脑充当键鼠的角色。我现在唯一能想到的就是通过TTL-CH340串口线来实现项目和开发板的通信,可是效果不尽人意。求解决方法感谢