tyty697 发表于 2024-1-19 14:42:05

使用pyserial制作串口上位机时的一个问题

设备是使用STM USB虚拟串口在一直向电脑发送数据的

我是用的是pyserial库,程序不停的进行读数据,解析数据,打印解析后的数据
因为数据格式是4个字节为一个基本单位,所以我是读4个字节解一下,读四个字节解一下,一直解到包尾后将解到的数据同一返回
但是当我在程序中加入了延时或者定时器让程序周期性的执行上述过程后,程序就会抛出异常
异常如下图所示,我搜到的说法都是权限不够或者是设备接触不良之类的,但是在我不加定时器时是没有问题的,所以感觉不是上述的原因
我尝试使用两个usb转串口的工具相互发送数据,一直打印缓冲区中的字节数,一直满了程序也没有出现问题,所以感觉也不是缓冲区的问题
我在抛出异常后去打印还在设备上的串口设备,返回出来的是空,感觉像是什么问题自动把设备给断了一样。
求助大佬们,还可能是什么原因导致的啊,还是说虚拟串口的驱动自身也有buff上限?还是在程序运行过程中因为不当操作引起了某些问题?




eric2013 发表于 2024-1-20 08:39:26

帮顶下,没用过pyserial

tyty697 发表于 2024-1-20 14:29:34

eric2013 发表于 2024-1-20 08:39
帮顶下,没用过pyserial

硬汉哥,在给stm的usb虚拟串口写上位机的时候,和给实体串口写上位机会有什么区别么?

eric2013 发表于 2024-1-20 16:05:24

tyty697 发表于 2024-1-20 14:29
硬汉哥,在给stm的usb虚拟串口写上位机的时候,和给实体串口写上位机会有什么区别么?

一样的,都是直接操作电脑端出来的COM串口设备就行了。

emwin 发表于 2024-1-20 23:53:38

用过这个包,没遇到过问题,你读取时用的哪种方式,回调还是查询?

tyty697 发表于 2024-1-21 12:24:15

emwin 发表于 2024-1-20 23:53
用过这个包,没遇到过问题,你读取时用的哪种方式,回调还是查询?

我是每轮阻塞读四个字节

tyty697 发表于 2024-1-21 12:28:21

会不会是每秒传输的比特数大于波特率了,所以设备端断开连接了?

庄永 发表于 2024-1-21 22:21:46

tyty697 发表于 2024-1-21 12:24
我是每轮阻塞读四个字节

建议你利用回调的方式试试。你这个看起来像是库有BUG,被你触发了BUG

tyty697 发表于 2024-1-22 10:47:33

庄永 发表于 2024-1-21 22:21
建议你利用回调的方式试试。你这个看起来像是库有BUG,被你触发了BUG

回调是怎么一种写法呀,

庄永 发表于 2024-1-22 20:51:56

tyty697 发表于 2024-1-22 10:47
回调是怎么一种写法呀,

了解一下serial_asyncio或者自己开一个线程读
页: [1]
查看完整版本: 使用pyserial制作串口上位机时的一个问题