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

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

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

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

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}")
    # 關(guān)閉串口
    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}")
    # 關(guān)閉串口
    ser.close()
 
if __name__=="__main__":
    Send_File("D:/users.7z") #發(fā)送文件
    #Recv_File() #接收文件

上面是簡(jiǎn)單的文件傳輸代碼.

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

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

相關(guān)文章

最新評(píng)論

无为县| 杂多县| 林西县| 红安县| 新绛县| 鄂州市| 榆中县| 安丘市| 罗源县| 合江县| 新安县| 黎平县| 阳泉市| 敦化市| 南涧| 临海市| 邛崃市| 射洪县| 宝鸡市| 于田县| 桃园县| 邳州市| 平邑县| 勐海县| 蒙山县| 桦甸市| 瓦房店市| 股票| 额济纳旗| 陆良县| 荥经县| 瑞金市| 新巴尔虎左旗| 如皋市| 榕江县| 长海县| 和田县| 方城县| 辉南县| 洪雅县| 卢龙县|