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

在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 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试