tedelon 发表于 2019-10-31 18:19

使用python自动查找串口设备两种方式

本帖最后由 tedelon 于 2019-10-31 18:22 编辑

1、方法一、python使用serial模块进行串口通信,采用轮询方式
import time
import serial
ser = serial.Serial()
def com():
    i=1
    while i<255:            #轮询COM口
      name='COM'+str(i)
      #ser.open
      try:
            #ser.is_open
            ser = serial.Serial(name)
            ser.baudrate=9600
            ser.timeout=0.5# 读超时设置
            print(name)

            data = []
            # 接收返回的信息
            while True:
                count = 1
                while count <= 20:
                  ser.write('MEASure:CURRent?\n'.encode())# 向端口写指令
                  print(count)
                  recv = ser.readline()
                  a = eval(recv)# 将字符串str当成有效的表达式来求值并返回计算结果。
                  print("实时值:", a)
                  data.append(a)
                  print(data)
                  time.sleep(1)
                  count = count + 1
                break

      except serial.serialutil.SerialException:
            print("找不到设备或不能配置")
            #pass

      i+=1
com()
2、方法二、使用serial.tools.list.ports模块进行串口通信
import serial.tools.list_ports
import time
import re
#####list serial ports####
port_list = list(serial.tools.list_ports.comports())
print(port_list)
if len(port_list) == 0:
   print('无可用串口')
else:
    for i in range(0,len(port_list)):
      print(port_list)
for port in port_list:
    print(port)
    name = port
######Read data####
ser=serial.Serial(name,9600,timeout=0.5)
time.sleep(1)
#ser.write("read\n")
while True:
    time.sleep(0.5)
    recv = ser.readline()
    print(str(recv))

yzhqzl 发表于 2019-10-31 19:04

感谢大佬提供思路,收下我的膝盖

1847123212 发表于 2019-10-31 20:02

感谢提供思路,刚好可以用上了

泽龛 发表于 2019-10-31 20:21

感谢分享知识
页: [1]
查看完整版本: 使用python自动查找串口设备两种方式