python编程调用设备串口发送数据方式

 更新时间:2023年09月06日 10:15:18   作者:乐观的lishan  
这篇文章主要介绍了python编程调用设备串口发送数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python调用设备串口发送数据

为了通过python编程控制串口发送数据给单片机,编写此程序

使用serial模块完成串口的读取和数据的收发

重点掌握以下几个api的使用方法

  • 读取串口设备列表:list(serial.tools.list_ports.comports())
  • 初始化串口对象:ser=serial.Serial()
  • 打开串口:ser.isOpen()
  • 发送数据:ser.write()
  • 读取数据:ser.read()
  • 关闭串口:ser.close()

完整代码

# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
# ============================================================
# @Date    : 2022/05/16 21:50:12
# @Author  : miles
# @Email   : lishan@st.xatu.edu.cn
# @File    : serial_demo.py
# @IDE     : PyCharm
# @Func    : Describes the function of the file
# @Note    : pip install pyserial
# ============================================================
"""
import time
import serial.tools.list_ports
if __name__ == '__main__':
    # 读取串口列表
    ports_list = list(serial.tools.list_ports.comports())
    if len(ports_list) <= 0:
        print("无串口设备")
    else:
        print("可用的串口设备如下: ")
        print("%-10s %-30s %-10s" % ("num", "name", "number"))
        for i in range(len(ports_list)):
            comport = list(ports_list[i])
            comport_number, comport_name = comport[0], comport[1]
            print("%-10s %-30s %-10s" % (i, comport_name, comport_number))
        # 打开串口
        port_num = ports_list[0][0]
        print("默认选择串口: %s" % port_num)
        # 串口号: port_num, 波特率: 115200, 数据位: 7, 停止位: 2, 超时时间: 0.5秒
        ser = serial.Serial(port=port_num, baudrate=115200, bytesize=serial.SEVENBITS, stopbits=serial.STOPBITS_TWO,
                            timeout=0.5)
        if not ser.isOpen():
            print("打开串口失败")
        else:
            print("打开串口成功, 串口号: %s" % ser.name)
            # 串口发送字符串数据
            data = "%d:%d" % (130, 1)
            print("发送数据: %s" % data)
            write_len = ser.write(data.encode('utf-8'))
            print("串口发出{}个字节".format(write_len))
            # 串口发送十六进制数据
            # data = 0xAB
            # print("发送数据: %X" % data)
            # write_len = ser.write(bytearray([data]))
            # print("串口发出{}个字节".format(write_len))
            # 等待串口返回信息并输出
            t0 = time.time()
            while True:
                com_input = ser.read(10)
                t1 = time.time()
                t = t1 - t0
                print("\r等待串口接收数据, %.2f 秒" % t, end="")
                if com_input or t >= 3:
                    if com_input:
                        print("\n%s" % com_input)
                    else:
                        print("\n%s" % "没有接收到任何数据")
                    break
            # 关闭串口
            ser.close()
            if ser.isOpen():
                print("串口未关闭")
            else:
                print("串口已关闭")

在电脑上插入USB转串口模块连接到单片机,

运行结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅析Python函数式编程

    浅析Python函数式编程

    在本篇文章中我们给大家分享了关于Python函数式编程的相关知识点内容,有兴趣的朋友参考下。
    2018-10-10
  • pytorch创建tensor函数详情

    pytorch创建tensor函数详情

    这篇文章主要介绍了pytorch创建tensor函数详情,文章围绕tensor函数的相关自来哦展开详细内容的介绍,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03
  • python高级特性和高阶函数及使用详解

    python高级特性和高阶函数及使用详解

    Python很棒,它有很多高级用法值得细细思索,学习使用。这篇文章主要介绍了python高级特性和高阶函数及使用详解,需要的朋友可以参考下
    2018-10-10
  • Python中多个装饰器执行顺序验证深入讲解

    Python中多个装饰器执行顺序验证深入讲解

    装饰器是Python中一种强大的语法结构,本质上是一个特殊的函数,它的主要作用是在不改变原函数代码的基础上,为其他函数或类添加额外的功能,这篇文章主要介绍了Python中多个装饰器执行顺序验证的相关资料,需要的朋友可以参考下
    2025-10-10
  • Python自动化操作Excel生成专业数据透视表的实战指南

    Python自动化操作Excel生成专业数据透视表的实战指南

    在数据分析的广阔领域中,数据透视表无疑是处理和理解海量数据的强大工具,本文将深入探讨如何利用Python库,实现Excel数据透视表的自动化生成、配置与格式化,感兴趣的可以了解下
    2025-12-12
  • PyCharm打代码时出现白色光标问题(笔记本的解决方案)

    PyCharm打代码时出现白色光标问题(笔记本的解决方案)

    PyCharm中白色光标通常是虚拟空格功能导致的,可以通过按下Insert键或在设置中取消勾选“Show virtual space at line end”选项来解决
    2025-02-02
  • Python round函数的基本用法与实例代码

    Python round函数的基本用法与实例代码

    round()函数是Python中用于对浮点数进行四舍五入的内置函数,这篇文章详细介绍了round()函数的基本用法、参数详解、特殊情况处理以及应用场景,并提供了丰富的示例代码,需要的朋友可以参考下
    2024-11-11
  • Python空间数据处理之GDAL读写遥感图像

    Python空间数据处理之GDAL读写遥感图像

    这篇文章主要介绍了Python空间数据处理之GDAL读写遥感图像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Pandas:Series和DataFrame删除指定轴上数据的方法

    Pandas:Series和DataFrame删除指定轴上数据的方法

    今天小编就为大家分享一篇Pandas:Series和DataFrame删除指定轴上数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python线程之如何解决共享变量问题

    Python线程之如何解决共享变量问题

    这篇文章主要介绍了Python线程之如何解决共享变量问题,掐灭问我们学习了银行转账的这个场景,本文解决上次多个线程的操作都更改了amount变量导致运行结果不对的问题,需要的朋友可以参考一下
    2022-02-02

最新评论