首页 > 编程语言 >python监听串口双方收发消息内容

python监听串口双方收发消息内容

时间:2022-11-13 00:55:44浏览次数:69  
标签:python vspd self 收发 串口 serial config data mcu

使用说明

使用VSPD建立一组虚拟串口

查看MCU的端口号与波特率并修改python程序配置,运行即可看到双方收发的效果

通过串口助手连接到虚拟串口并向其发送消息
即Python显示MCU端发给串口助手的消息,并显示串口助手发送至MCU的消息,中间使用VSPD与Python进行消息互转与打印。

Python监听串口收发双方程序

import serial
import threading
'''
通过监听MCU端与PC上位机软件的通讯,打印双方收发的消息

'''

mcu_serial_config = {"MCU_serial": "COM19", "baud_rate": 115200}

vspd_serial_config = {"VSPD_A": "COM10", "VSPD_B": "COM11"}


class SerialLog:

    def __init__(self, serial_config_dic, vspd_config=None):
        if vspd_config == None:
            vspd_config = {"VSPD_A": "COM10", "VSPD_B": "COM11"}

        self.mcu_serial_num = serial_config_dic["MCU_serial"]
        self.baud_rate = serial_config_dic["baud_rate"]
        self.mcu_serial = serial.Serial(self.mcu_serial_num, self.baud_rate)
        self.vspd_serial = serial.Serial(vspd_config["VSPD_A"], self.baud_rate)
        # 创建两个线程
        try:
            threading.Thread(target=self.listing_mcu).start()
            threading.Thread(target=self.listing_vspd).start()
        except:
            print(f"Error: 无法启动线程\n")
        # 循环
        while 1:
            pass

# 监听MCU端串口信息

    def listing_mcu(self):
        try:
            while 1:
                if not self.mcu_serial.isOpen():
                    continue
                data_size = self.mcu_serial.in_waiting
                if data_size < 1:
                    continue
                data = self.mcu_serial.read(data_size)
                print(f'MCU:{data}')
                self.vspd_serial.write(data)
        finally:
            print("Done")


# 监听VSPD端串口信息

    def listing_vspd(self):
        try:
            while 1:
                if not self.vspd_serial.isOpen():
                    continue
                data_size = self.vspd_serial.in_waiting
                if data_size < 1:
                    continue
                data = self.vspd_serial.read(data_size)
                print(f'VSPD:{data}')
                self.mcu_serial.write(data)
        finally:
            print("Done")

if __name__ == '__main__':
    print('Begining')

    app = SerialLog(mcu_serial_config, vspd_serial_config)

标签:python,vspd,self,收发,串口,serial,config,data,mcu
From: https://www.cnblogs.com/dapenson/p/16885244.html

相关文章

  • python的垃圾回收机制
    python对内存回收引用几个概念计数器:当python程序运行时,会根据数据类型的不同找到相对应的结构体,根据结构体中的字段来进行创建相关的数据。然后将对象添加到refchain双向......
  • python学习笔记(一)
    一、前言要开始准备明年的数学建模比赛了,第一次弄这个比赛先从python学习开始吧,正好学了c语言,感觉大部分都差不多。 二、基础语法有三个非常基础的语法,据我所知c中并......
  • python的深浅拷贝
    在python中,对象的赋值就是简单的引用,a=[1,2,3],b=a,在上述情况下,a和b是一样的,他们指向同一片内存,b不过是a的别名,是引用,我们可以使用bisa去判断,返回Trueb......
  • Python_解决脚本执行过程中,文件被多次读取的问题
    今天在封装pandas过程中,发现封装脚本的执行耗时明显高于未封装的脚本复盘问题importtimeclassDemo:defmock_read_excel(self):print("读取文件")......
  • Python程序流程控制
    Python程序流程控制1.*程序流程概述在现实生活中,我们看到的流程是多种多样的,如汽车在道路上行驶,要顺序地沿道路前进,碰到交叉路口时,驾驶员就需要判断是转弯还是直行,在环......
  • 万万没想到,除了香农计划,Python3.11竟还有这么多性能提升!
    众所周知,Python3.11版本带来了较大的性能提升,但是,它具体在哪些方面上得到了优化呢?除了著名的“香农计划”外,它还包含哪些与性能相关的优化呢?本文将带你一探究竟!作者:Bes......
  • 30分钟学完Python基础语法
    30分钟学完Python基础语法,有一门面向对象语言的基础,30分钟足够看一遍Python的基础了。基础语法#缩进取代大括号#用换行取代分号,也可以使用分号,无所谓#输出print();#输......
  • python函数
    一、定义函数下面是一个打印问候语的简单函数,名为greet_user()1、向函数传递信息通过在这里添加username,就可让函数接受你给username指定的任何值。现在,这个函数要......
  • Python字符串操作
    Python字符串操作1.*字符串的常用操作1.*.&访问字符串中的值Python访问子字符串变量,可以使用方括号来截取字符串。与列表的索引一样,字符串索引从0开始。字符串的索引......
  • Python3.8多进程共享内存之Numpy数组
    在利用python处理数据的时候,想要充分发挥CPU的算力,可以选择利用多进程来实现。如果子进程内存占用较大的话,往往很难多开进程,如果不涉及对内存的写入操作,那么多个子进程共享......