python串口工具,串口上位机

python 使用pyserial串口库开发串口工具

之前发过用tkinter库设计的串口工具UI代码,以下为python串口的逻辑代码,已整理成模块,可以随时保存下来使用。部分函数采用中文命名,只是测试中文函数是否可运行,事实证明可以正常运行。也可另外修改函数名称

1. 示例代码(MyPySerial.py)
# !/usr/bin/python 3.6.5
# coding=utf-8

import serial
import serial.tools.list_ports
import threading

'''
    1、扫描串口列表
    2、打开串口
    3、向串口写数据
    4、从串口读数据
    5、关闭串口
    
    init 初始化串口
        --> 创建线程:
            1. 如果串口未打开,则用于实时扫描串口,检测是否有新设备插入
                有新设备插入:添加到设备列表,并刷新UI的设备列表提供选择
                没有新设备:继续扫描
            2. 如果串口已打开,则用于监测串口是否有接收到数据
                如果有则读取数据,并发送给UI
                如果没有则继续扫描
        参数:主窗口,端口列表,接收窗口
        返回:线程实例(用于关闭窗口前,先关闭线程)
        
    open 打开串口
        --> 参数:端口号,波特率,超时时间
            返回:串口实例(打开成功)/ None(打开失败)
    
    close 关闭串口
        --> 参数:串口实例
            返回:0(关闭成功)/ -1(关闭失败)
            
    write 写数据
    read 读数据
        
'''

SERIAL_IS_OPEN = False      # 默认串口关闭
port_name_list = []         # 端口名称列表
port_com_list = []          # 端口号列表
MySerial = None             # 打开的串口

def 扫描串口():
    port_list = list(serial.tools.list_ports.comports())
    if len(port_list) > 0:
        return port_list
    else:
        return None

def 打开串口(port="COM4", bps=115200, timex=5):
    try:
        # 打开串口
        ser = serial.Serial(port, bps, timeout=timex)

        if ser.is_open:
            global SERIAL_IS_OPEN
            SERIAL_IS_OPEN = True
            print("--- 串口打开 ---")
            return ser

    except Exception as e:
        print("--- 打开异常 ---: ", e)
        return None

def 发送数据(ser, text, code="utf-8"):
    try:
        result = ser.write(text.encode(code))
        if result &
  • 10
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值