QNee 2019-07-30 09:18 采纳率: 0%
浏览 2528

在Python3.7的环境下,每次都是执行到serial.read()就卡住了。

import serial

if name == '__main__':
serial = serial.Serial('COM3',115200)
if serial.isOpen():
print('串口打开成功!\n')
f = open('./test.txt','a')
print(1)
#pass
else :
print('串口打开失败!\n')

    try:
            getBytes=b''
            while True:
                    count = serial.inWaiting()
                    if count > 0:
                            data = serial.read(count)
                            print('数据读取成功')
                            if data != getBytes:
                                    print(data)
                                    f.write(data.decode('utf-8'))
                                    f.write('\n')
                                    getBytes=data

    except KeyboardInterrupt:
            if serial != None:
                    f.close()
                    serial.close()
  • 写回答

1条回答 默认 最新

  • 牛在哪里 2019-07-30 10:05
    关注

    加个延时试下
    serial.iswaiting启动接收,并返回接收数据的长度,然后用read(n)将这指定的数据读出来。但现实中的问题是两者的中间需要加延时(根据波特率计算发送内容所需的时间,这样就不会出现延时过短读出的不全;延时时间长了就会出现前后帧发出的内容重合到一起),此外如果需要判断什么时候串口不活动,可以再serial.iswaiting一直延时(超过几个字符的传送时间,软件延时计数器累加),而在循环体外将计数器清零,在累计的几个字符时间接受的数据长度还为0则认为通讯结束。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器