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í)當中的基礎(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-07
Python Matplotlib條形圖之垂直條形圖和水平條形圖詳解
這篇文章主要為大家詳細介紹了Python Matplotlib條形圖之垂直條形圖和水平條形圖,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Python列表轉(zhuǎn)一維DataFrame的完整指南
在數(shù)據(jù)處理領(lǐng)域,Pandas的DataFrame是當之無愧的王者,本文將用5個核心方法,教你優(yōu)雅地將一維列表轉(zhuǎn)換為Pandas DataFrame,感興趣的可以了解下2025-04-04

