使用Python进行串口通讯

#! python3
import serial #导入模块
import time
import sys
# 传入参数,当传入的参数只有命令时,默认测试超时为2秒
argvs = sys.argv[1:]
command = sys.argv[1] + "\r\n"
timeOut = 2
if len(argvs)>1:
  timeOut = int(sys.argv[2])

try:

  #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
  portx="/dev/cu.usbserial-Fixture"
  #波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200,230400
  bps=115200
  #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
  timex=5
  # 打开串口,并得到串口对象
  ser=serial.Serial(portx,bps,timeout=timex)

  print("串口名称:",ser.port)#获取到当前打开的串口名
  print("串口波特率:",ser.baudrate)#获取波特率

  result=ser.write(command.encode("gbk"))#写数据

  #print(ser.read())#读一个字节
  # print(ser.read(10).decode("gbk"))#读十个字节
  #print(ser.readline().decode("gbk"))#读一行
  #print(ser.readlines())#读取多行,返回列表,必须匹配超时(timeout)使用
  #print(ser.in_waiting)#获取输入缓冲区的剩余字节数
  #print(ser.out_waiting)#获取输出缓冲区的字节数

  result = ""
  startTime = time.time()
  while True:
    endTime = time.time()
    if endTime - startTime > timeOut:   #超时时,测试结束
      break
    if ser.in_waiting:
      str=ser.read(ser.in_waiting).decode("gbk")
      if str.find(">>")>-1:   #检测到“>>”时,测试结束
        result = result + str
        break
      else:
        result=result+str
  print("读取串口数据:",result)
  print("读取时间:",startTime-endTime)
  print("------ end --------")
  ser.close()   #关闭串口

except Exception as e:
    print("---异常---:",e)

 终端中运行:1. cd到文件所在目录

                       2.python3 serialport.py 参数1 参数2

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三岁牧羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值