Python通過串口實現(xiàn)收發(fā)文件
單位內(nèi)外網(wǎng)是隔離的,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}") # 關(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() #接收文件
上面是簡單的文件傳輸代碼.
我目前內(nèi)外網(wǎng)傳輸最多的就是截圖,內(nèi)網(wǎng)通過串口給外網(wǎng)發(fā)送指令,外網(wǎng)根據(jù)指令截圖,然后自動傳回內(nèi)網(wǎng),不用切換電腦,不用插拔優(yōu)盤,確實方便.
到此這篇關(guān)于Python通過串口實現(xiàn)收發(fā)文件的文章就介紹到這了,更多相關(guān)Python串口收發(fā)文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中串口通信庫pyserial基礎(chǔ)知識
- Python讀取串口數(shù)據(jù)的實現(xiàn)方法
- python讀取串口數(shù)據(jù)有幾種方法
- python serial串口通信示例詳解
- 玩轉(zhuǎn)串口通信:利用pyserial庫,Python打開無限可能
- Python串口通信的接收與發(fā)送的實現(xiàn)
- python實現(xiàn)串口通信的示例代碼
- Python?Serial串口的簡單數(shù)據(jù)收發(fā)方式
- 使用Python玩轉(zhuǎn)串口(基于pySerial問題)
- python串口讀取數(shù)據(jù)的實例
- 使用 Python 列出串口的實現(xiàn)方法
- Python中串口操作的實現(xiàn)示例
相關(guān)文章
Python中用format函數(shù)格式化字符串的用法
這篇文章主要介紹了Python中用format函數(shù)格式化字符串的用法,格式化字符串是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識,本文主要針對Python2.7.x版本,需要的朋友可以參考下2015-04-04利用Pandas和Numpy按時間戳將數(shù)據(jù)以Groupby方式分組
這篇文章主要介紹了利用Pandas和Numpy按時間戳將數(shù)據(jù)以Groupby方式分組,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python Matplotlib條形圖之垂直條形圖和水平條形圖詳解
這篇文章主要為大家詳細介紹了Python Matplotlib條形圖之垂直條形圖和水平條形圖,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Python列表轉(zhuǎn)一維DataFrame的完整指南
在數(shù)據(jù)處理領(lǐng)域,Pandas的DataFrame是當(dāng)之無愧的王者,本文將用5個核心方法,教你優(yōu)雅地將一維列表轉(zhuǎn)換為Pandas DataFrame,感興趣的可以了解下2025-04-04