Python通过串口实现收发文件

 更新时间:2023年11月23日 09:25:20   作者:mYlEaVeiSmVp  
这篇文章主要为大家详细介绍了Python如何通过串口实现收发文件功能,文中的示例代码简洁易懂,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下

单位内外网是隔离的,USB对拷线被禁用,安全优盘使用太费事,就想到了通过串口传输文件.

import serial
from xmodem import XMODEM
import os
 
def Send_File(filepath, port='COM8', baudrate=115200):
    bn = os.path.basename(filepath)
    filesize = os.stat(filepath).st_size
    strSendFileCMD = "AFF_" + str(filesize) + "_" + bn + "\n"
    # 打开串口
    ser = serial.Serial(port, baudrate)
     
    # 定义YMODEM发送函数
    def send_ymodem(filename):
        def getc(size, timeout=1):
            return ser.read(size)
        def putc(data, timeout=1):
            return ser.write(data)
        modem = XMODEM(getc, putc)
        with open(filename, "rb") as f:
            status = modem.send(f)
        return status
     
    # 发送指令
    ser.write(strSendFileCMD.encode())
    # 发送文件
    status = send_ymodem(filepath)
    if status:
        print(f"文件发送成功:{filepath}")
    else:
        print(f"文件发送失败:{filepath}")
    # 关闭串口
    ser.close()
 
 
def Recv_File(port='COM2', baudrate=115200):
    # 打开串口
    ser = serial.Serial(port, baudrate)
     
    # 定义YMODEM接收函数
    def recv_ymodem(filename):
        def getc(size, timeout=1):
            return ser.read(size) or None
        def putc(data, timeout=1):
            return ser.write(data)
        modem = XMODEM(getc, putc)
        with open(filename, "wb") as f:
            status = modem.recv(f)
        return status
     
    # 循环监听指令
    while True:
        # 接收指令
        print("等待接收指令")
        strCMD = ser.read_until().strip().decode()
        print(strCMD)
        cmdlist = strCMD.split("_")
        cmd = cmdlist[0]
        filesize = cmdlist[1]
        filename = cmdlist[2]
        if cmd == "AFF":
            # 收到指令后开始接收文件
            print("开始接收文件")
            # 接收文件并保存
            status = recv_ymodem(filename)
            if status:
                print(f"文件接收成功:{filename}")
            else:
                print(f"文件接收失败:{filename}")
            # 继续监听指令
            continue
        # 其他指令
        print(f"收到指令:{cmd}")
    # 关闭串口
    ser.close()
 
if __name__=="__main__":
    Send_File("D:/users.7z") #发送文件
    #Recv_File() #接收文件

上面是简单的文件传输代码.

我目前内外网传输最多的就是截图,内网通过串口给外网发送指令,外网根据指令截图,然后自动传回内网,不用切换电脑,不用插拔优盘,确实方便.

到此这篇关于Python通过串口实现收发文件的文章就介绍到这了,更多相关Python串口收发文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用python爬取古诗文网中各类古诗的方法

    利用python爬取古诗文网中各类古诗的方法

    这篇文章主要介绍了利用python爬取古诗文网中各类古诗的方法,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • keras中的卷积层&池化层的用法

    keras中的卷积层&池化层的用法

    这篇文章主要介绍了keras中的卷积层&池化层的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python远控代码的教程详解

    python远控代码的教程详解

    大家远控还在用软件吗,其实几行代码轻松搞定,这篇文章小编就来和大家介绍一下如何使用Python实现远程控制代码,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • 浅谈使用Python变量时要避免的3个错误

    浅谈使用Python变量时要避免的3个错误

    这篇文章主要介绍了浅谈使用Python变量时要避免的3个错误,还是比较不错的,涉及部分代码分析,以及字典的创建等相关内容,需要的朋友可以参考下。
    2017-10-10
  • Python中的字典类型详解

    Python中的字典类型详解

    在Python中,字典是一种无序且可变的数据类型,用于存储键值对数据,字典可以根据键(key)来快速检索对应的值,相比于其他类型的容器,如列表(List)、元组等,字典具有更高效的查找和插入性能,因此在Python编程中被广泛使用
    2023-06-06
  • Python中用format函数格式化字符串的用法

    Python中用format函数格式化字符串的用法

    这篇文章主要介绍了Python中用format函数格式化字符串的用法,格式化字符串是Python学习当中的基础知识,本文主要针对Python2.7.x版本,需要的朋友可以参考下
    2015-04-04
  • 利用Pandas和Numpy按时间戳将数据以Groupby方式分组

    利用Pandas和Numpy按时间戳将数据以Groupby方式分组

    这篇文章主要介绍了利用Pandas和Numpy按时间戳将数据以Groupby方式分组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python设置环境变量的作用和实例

    python设置环境变量的作用和实例

    在本篇文章里小编给各位整理了关于python设置环境变量的作用和实例内容知识点,需要的朋友们学习参考下。
    2019-07-07
  • Python Matplotlib条形图之垂直条形图和水平条形图详解

    Python Matplotlib条形图之垂直条形图和水平条形图详解

    这篇文章主要为大家详细介绍了Python Matplotlib条形图之垂直条形图和水平条形图,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python列表转一维DataFrame的完整指南

    Python列表转一维DataFrame的完整指南

    在数据处理领域,Pandas的DataFrame是当之无愧的王者,本文将用5个核心方法,教你优雅地将一维列表转换为Pandas DataFrame,感兴趣的可以了解下
    2025-04-04

最新评论