Python通過(guò)串口實(shí)現(xiàn)收發(fā)文件
單位內(nèi)外網(wǎng)是隔離的,USB對(duì)拷線被禁用,安全優(yōu)盤(pán)使用太費(fèi)事,就想到了通過(guò)串口傳輸文件.
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" # 打開(kāi)串口 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): # 打開(kāi)串口 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)聽(tīng)指令 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": # 收到指令后開(kāi)始接收文件 print("開(kāi)始接收文件") # 接收文件并保存 status = recv_ymodem(filename) if status: print(f"文件接收成功:{filename}") else: print(f"文件接收失?。簕filename}") # 繼續(xù)監(jiān)聽(tīng)指令 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)通過(guò)串口給外網(wǎng)發(fā)送指令,外網(wǎng)根據(jù)指令截圖,然后自動(dòng)傳回內(nèi)網(wǎng),不用切換電腦,不用插拔優(yōu)盤(pán),確實(shí)方便.
到此這篇關(guān)于Python通過(guò)串口實(shí)現(xiàn)收發(fā)文件的文章就介紹到這了,更多相關(guān)Python串口收發(fā)文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中串口通信庫(kù)pyserial基礎(chǔ)知識(shí)
- Python讀取串口數(shù)據(jù)的實(shí)現(xiàn)方法
- python讀取串口數(shù)據(jù)有幾種方法
- python serial串口通信示例詳解
- 玩轉(zhuǎn)串口通信:利用pyserial庫(kù),Python打開(kāi)無(wú)限可能
- Python串口通信的接收與發(fā)送的實(shí)現(xiàn)
- python實(shí)現(xiàn)串口通信的示例代碼
- Python?Serial串口的簡(jiǎn)單數(shù)據(jù)收發(fā)方式
- 使用Python玩轉(zhuǎn)串口(基于pySerial問(wèn)題)
- python串口讀取數(shù)據(jù)的實(shí)例
- 使用 Python 列出串口的實(shí)現(xiàn)方法
- Python中串口操作的實(shí)現(xiàn)示例
相關(guān)文章
利用python爬取古詩(shī)文網(wǎng)中各類古詩(shī)的方法
這篇文章主要介紹了利用python爬取古詩(shī)文網(wǎng)中各類古詩(shī)的方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03淺談使用Python變量時(shí)要避免的3個(gè)錯(cuò)誤
這篇文章主要介紹了淺談使用Python變量時(shí)要避免的3個(gè)錯(cuò)誤,還是比較不錯(cuò)的,涉及部分代碼分析,以及字典的創(chuàng)建等相關(guān)內(nèi)容,需要的朋友可以參考下。2017-10-10Python中用format函數(shù)格式化字符串的用法
這篇文章主要介紹了Python中用format函數(shù)格式化字符串的用法,格式化字符串是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),本文主要針對(duì)Python2.7.x版本,需要的朋友可以參考下2015-04-04利用Pandas和Numpy按時(shí)間戳將數(shù)據(jù)以Groupby方式分組
這篇文章主要介紹了利用Pandas和Numpy按時(shí)間戳將數(shù)據(jù)以Groupby方式分組,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python設(shè)置環(huán)境變量的作用和實(shí)例
在本篇文章里小編給各位整理了關(guān)于python設(shè)置環(huán)境變量的作用和實(shí)例內(nèi)容知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)參考下。2019-07-07Python Matplotlib條形圖之垂直條形圖和水平條形圖詳解
這篇文章主要為大家詳細(xì)介紹了Python Matplotlib條形圖之垂直條形圖和水平條形圖,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Python列表轉(zhuǎn)一維DataFrame的完整指南
在數(shù)據(jù)處理領(lǐng)域,Pandas的DataFrame是當(dāng)之無(wú)愧的王者,本文將用5個(gè)核心方法,教你優(yōu)雅地將一維列表轉(zhuǎn)換為Pandas DataFrame,感興趣的可以了解下2025-04-04