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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- Python中串口通信庫pyserial基礎知識
- Python讀取串口數(shù)據的實現(xiàn)方法
- python讀取串口數(shù)據有幾種方法
- python serial串口通信示例詳解
- 玩轉串口通信:利用pyserial庫,Python打開無限可能
- Python串口通信的接收與發(fā)送的實現(xiàn)
- python實現(xiàn)串口通信的示例代碼
- Python?Serial串口的簡單數(shù)據收發(fā)方式
- 使用Python玩轉串口(基于pySerial問題)
- python串口讀取數(shù)據的實例
- 使用 Python 列出串口的實現(xiàn)方法
- Python中串口操作的實現(xiàn)示例
相關文章
python網絡編程調用recv函數(shù)完整接收數(shù)據的三種方法
本文主要介紹了python網絡編程調用recv函數(shù)完整接收數(shù)據的三種方法。具有很好的參考價值,下面跟著小編一起來看下吧2017-03-03
Python實現(xiàn)快速排序和插入排序算法及自定義排序的示例
這篇文章主要介紹了Python實現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下2016-02-02
python GUI框架pyqt5 對圖片進行流式布局的方法(瀑布流flowlayout)
這篇文章主要介紹了python GUI框架pyqt5 對圖片進行流式布局的方法(瀑布流flowlayout),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03

