本帖最后由 tedelon 于 2019-10-31 18:22 编辑
1、方法一、python使用serial模块进行串口通信,采用轮询方式
[Python] 纯文本查看 复制代码 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模块进行串口通信
[Python] 纯文本查看 复制代码 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[i])
for port in port_list:
print(port[0])
name = port[0]
######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))
|