最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通過串口實現(xiàn)收發(fā)文件

 更新時間:2023年11月23日 09:25:20   作者:mYlEaVeiSmVp  
這篇文章主要為大家詳細介紹了Python如何通過串口實現(xiàn)收發(fā)文件功能,文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下

單位內外網是隔離的,USB對拷線被禁用,安全優(yōu)盤使用太費事,就想到了通過串口傳輸文件.

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發(fā)送函數(shù)
    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
     
    # 發(fā)送指令
    ser.write(strSendFileCMD.encode())
    # 發(fā)送文件
    status = send_ymodem(filepath)
    if status:
        print(f"文件發(fā)送成功:{filepath}")
    else:
        print(f"文件發(fā)送失?。簕filepath}")
    # 關閉串口
    ser.close()
 
 
def Recv_File(port='COM2', baudrate=115200):
    # 打開串口
    ser = serial.Serial(port, baudrate)
     
    # 定義YMODEM接收函數(shù)
    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
     
    # 循環(huán)監(jiān)聽指令
    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}")
            # 繼續(xù)監(jiān)聽指令
            continue
        # 其他指令
        print(f"收到指令:{cmd}")
    # 關閉串口
    ser.close()
 
if __name__=="__main__":
    Send_File("D:/users.7z") #發(fā)送文件
    #Recv_File() #接收文件

上面是簡單的文件傳輸代碼.

我目前內外網傳輸最多的就是截圖,內網通過串口給外網發(fā)送指令,外網根據指令截圖,然后自動傳回內網,不用切換電腦,不用插拔優(yōu)盤,確實方便.

到此這篇關于Python通過串口實現(xiàn)收發(fā)文件的文章就介紹到這了,更多相關Python串口收發(fā)文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

和林格尔县| 佛教| 新乡市| 萨嘎县| 如皋市| 神农架林区| 乌鲁木齐市| 吉林省| 新巴尔虎左旗| 许昌市| 南昌市| 安丘市| 通榆县| 波密县| 姚安县| 丁青县| 湖南省| 韶关市| 通许县| 彰化县| 志丹县| 浦东新区| 阿瓦提县| 黄石市| 宁蒗| 靖西县| 娄烦县| 延津县| 周至县| 赣榆县| 广水市| 峨边| 武宁县| 甘泉县| 呼图壁县| 安陆市| 达州市| 南宫市| 彰武县| 浦东新区| 运城市|