Python通過串口收發文件

單位內外網是隔離的,USB對拷線被禁用,安全優盤使用太費事,就想到了通過串口傳輸文件.

import serial
from xmodem import XMODEM
import osdef Send_File(filepath, port='COM8', baudrate=115200):bn = os.path.basename(filepath)filesize = os.stat(filepath).st_sizestrSendFileCMD = "AFF_" + str(filesize) + "_" + bn + "\n"# 打開串口ser = serial.Serial(port, baudrate)# 定義YMODEM發送函數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# 發送指令ser.write(strSendFileCMD.encode())# 發送文件status = send_ymodem(filepath)if status:print(f"文件發送成功:{filepath}")else:print(f"文件發送失敗:{filepath}")# 關閉串口ser.close()def Recv_File(port='COM2', baudrate=115200):# 打開串口ser = serial.Serial(port, baudrate)# 定義YMODEM接收函數def recv_ymodem(filename):def getc(size, timeout=1):return ser.read(size) or Nonedef putc(data, timeout=1):return ser.write(data)modem = XMODEM(getc, putc)with open(filename, "wb") as f:status = modem.recv(f)return status# 循環監聽指令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}")# 繼續監聽指令continue# 其他指令print(f"收到指令:{cmd}")# 關閉串口ser.close()if __name__=="__main__":Send_File("D:/users.7z") #發送文件#Recv_File() #接收文件

上面是簡單的文件傳輸代碼.
我目前內外網傳輸最多的就是截圖,內網通過串口給外網發送指令,外網根據指令截圖,然后自動傳回內網,不用切換電腦,不用插拔優盤,確實方便.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161949.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

帶記憶的超級GPT智能體,能做飯、煮咖啡、整理家務!

隨著AI技術的快速迭代,Alexa、Siri、小度、天貓精靈等語音助手得到了廣泛應用。但在自然語言理解和完成復雜任務方面仍然有限。 相比文本的標準格式,語音充滿復雜性和多樣性(例如,地方話),傳統方法很難適應不同用戶的…

【每日OJ —— 20.有效的括號(棧)】

每日OJ —— 20.有效的括號(棧) 1.題目:20.有效的括號(棧)2.方法講解2.1.解法2.1.1.算法講解2.1.2.代碼實現2.1.3.提交通過展示 1.題目:20.有效的括號(棧) 2.方法講解 2.1.解法 利用…

2023 年 亞太賽 APMCM (B題)國際大學生數學建模挑戰賽 |數學建模完整代碼+建模過程全解全析

當大家面臨著復雜的數學建模問題時,你是否曾經感到茫然無措?作為2022年美國大學生數學建模比賽的O獎得主,我為大家提供了一套優秀的解題思路,讓你輕松應對各種難題。 問題一: 建立沒有作物的玻璃溫室內的溫度和風速分…

C語言二十四彈--喝汽水問題

C語言解決喝汽水問題 題目:喝汽水,1瓶汽水1元,2個空瓶可以換一瓶汽水,給20元,可以喝多少汽水? 方法一、逐瓶購買法 思路:一瓶瓶的買 當空瓶有兩個時,汽水數加1即可。 #include &…

MacOS 成為惡意軟件活動的目標

Malwarebytes 警告稱,一個針對 Mac 操作系統 (OS) 的數據竊取程序正在通過虛假的網絡瀏覽器更新分發給毫無戒心的目標。 Atomic Stealer,也稱為 AMOS,是 Mac OS 上流行的竊取程序。 Atomic Stealer (AMOS) 惡意軟件最近被發現使用“ClearFa…

ImportError: cannot import name ‘contextfilter‘ from ‘jinja2‘解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

匯編-pop出棧指令

32位匯編 執行動作分為兩步: 第一步:讀出數據 第二步:改變棧地址 如果操作數是16位, 則ESP加2; 如果操作數是32位, 則ESP加4 espesp2 或 espesp4 格式:

九、sdl顯示bmp圖片

前言 SDL中內置加載BMP的API,使用起來會更加簡單,便于初學者學習使用SDL 如果需要加載JPG、PNG等其他格式的圖片,可以使用第三方庫:SDL_image 測試環境: ffmpeg的4.3.2自行編譯版本windows環境qt5.12sdl2.0.22&…

力扣第462題 最小操作次數使數組元素相等 II C++ 排序基礎 附Java代碼

題目 462. 最小操作次數使數組元素相等 II 中等 相關標簽 數組 數學 排序 給你一個長度為 n 的整數數組 nums ,返回使所有數組元素相等需要的最小操作數。 在一次操作中,你可以使數組中的一個元素加 1 或者減 1 。 示例 1: 輸入&a…

Python深入分享之閉包

閉包(closure)是函數式編程的重要的語法結構。函數式編程是一種編程范式 (而面向過程編程和面向對象編程也都是編程范式)。在面向過程編程中,我們見到過函數(function);在面向對象編程中,我們見過對象(object)。函數和對象的根本目的是以某種…

substr()與substring()的區別

在 JavaScript 編程語言中,substr() 和 substring() 都是字符串函數,用于截取指定位置的子字符串。雖然這兩個函數都可以用于截取字符串,但它們之間存在一些區別。 substr() 語法:string.substr(start,length) 參數值&#xff1a…

IDEA中 java: 警告: 源發行版 11 需要目標發行版 11 如何解決

步驟1找到項目結構,下面有兩種方式 步驟2找到 模塊中對應的項目,修改對應的源的語言級別和依賴的模塊SDK(M) 步驟3,啟動一下,看有無問題, 步驟4,去文件-->設置-->構建、執行、部署-->編譯器-->…

中職組網絡安全B模塊-滲透提權2

任務五:滲透提權2 任務環境說明: 僅能獲取xxx的IP地址 用戶名:test,密碼:123456 訪問服務器主機,找到主機中管理員名稱,將管理員名稱作為Flag值提交; Flag:doyoudoyoudo 訪問服…

C語言二十三彈---求第N項斐波那契數列的值

C語言求第N項斐波那契數列的值 定義:斐波那契數列指的是這樣一個數列:1,1,2,3,5,8,13,21,34,55,89…自然中的斐波那契數列&#xff0…

感恩三十載 再創新輝煌——中國音樂著作權協會成立30周年暨著作權集體管理制度實施30周年紀念大會在京召開

感恩三十載 再創新輝煌 2023年11月19日,中國音樂著作權協會成立30周年暨著作權集體管理制度實施30周年紀念大會在北京舉行。中宣部副部長張建春,國際作者和作曲者協會聯合會(CISAC)總干事甘迪奧龍(Gadi Oron&#xff0…

深入了解批處理文件:從基礎到實例

1. 什么是批處理文件? 批處理文件是一種包含一系列命令的文本文件,通常用于自動化執行一系列任務。在不同操作系統中,批處理也有不同的名稱,如在Windows中被稱為批處理文件(.bat),而在Linux中則…

【MISRA C 2012】Rule 5.1 外部標識符應該是不同的

1. 規則1.1 原文1.2 分類 2. 關鍵描述3. 代碼實例 1. 規則 1.1 原文 Rule 5.1 External identifiers shall be distinct Category Required Analysis Decidable, System Applies to C90, C99 1.2 分類 規則5.1:外部標識符應該是不同的 Required必須類規范。 2.…

1、基礎入門——操作系統文件下載反彈SHELL防火墻繞過

名詞解釋 POC:驗證漏洞存在的代碼; EXP:利用漏洞的代碼; payload:漏洞利用載荷, shellcode:漏洞代碼, webshell:特指網站后門; 木馬:強調控制…

【STL】set, map, multiset, multimap的介紹及使用

TOC 目錄 關聯式容器 樹形結構與哈希結構 鍵值對 set set的定義方式 set的使用 multiset map map的介紹 map的定義方式 map的插入 insert函數的參數 insert函數的返回值 map的查找 map的刪除 map的[ ]運算符重載 map的迭代器遍歷 map的其他成員函數 multim…

Day40:139.單詞拆分、背包問題總結

文章目錄 139.單詞拆分思路代碼實現 背包問題總結背包類型遞推公式 139.單詞拆分 題目鏈接 思路 確定dp數組以及下標的含義 dp[i] : 從0開始長度為i的字符串是否可以拆分為一個或多個在字典中出現的單詞確定遞推公式 如果確定dp[j] 是true,且 [j, i] 這個區間的子…