首页 编程教程正文

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

piaodoo 编程教程 2020-02-22 22:08:56 1009 0 python教程

本文来源吾爱破解论坛

本帖最后由 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))


版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7691.html

搜索