第十一課python來寫串口助手-log的自動保存

2021-01-11 李軼君談測試

1、我們串口助手篇終於到第十一課了,估計還有1-2篇就可以完結這個系列,我們下一個系列就來做USB,當年我想做USB的通訊編程,結果沒有什麼入門的方法,自己慢慢摸索完成的,既然開了串口的系列,那就把USB系列做成第二個系列,敬請期待。

2、Txt的讀寫在python非常簡單,我們希望實現的功能:

1)自動在目錄下生成文件名;

2)文件名最好能關聯到時間;

3)內容大於512就自動保存;

4)退出的時候,自動把小於512部分的內容保存到log中。

3、那我們來實現一個變量用於保存臨時的數據,當數據長度大於512就將數據保存,在initdata中增加變量:

self.svaedata=""

4、在文件頭增加代碼:import time,在initdata中增加代碼:

self.logpath="./log/"+str(time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime()))+'_log.txt'

在pythonwork下新建一個目錄log:

將當前的時間按照%Y_%m_%d_%H_%M_%S格式生成日期的字符串與_log.txt拼接成log的文件名,運行一下:

可以看到我們的log文件的路徑名,我們來實現txt保存。

我們可以使用open來寫入txt文件:

def WriteLog(self,sdata,b=0):

self.svaedata+=sdata

if len(self.svaedata)>=512 or b==1:

with open(self.logpath,'a') as f:

f.write(self.svaedata)

f.close()

self.svaedata=""

輸入待寫入的字符串,並將它保存到變量self.savedata,如果長度大於512,我們就寫入txt文件,這樣做的好處在數據交互快速,有大量待寫入操作能節省時間,不需要一直重複寫入。

5、我們將代碼加入之前的代碼中:

def callbacklog(self,msg):

if len(msg)>0:

cbcheck=self.new.cb_receive.checkState()

hdata=""

try:

if cbcheck:

hdata="收到數據:"+self.com.HexToString(msg)

self.ShowMsg(hdata)

else:

hdata="收到數據:"+msg.decode('utf-8','replace')

self.ShowMsg(hdata)

self.WriteLog(hdata+"\r\n")

except Exception as e:

self.ShowMsg(str(e))

在界面關閉事件中增加:

def closeEvent(self, event):

try:

self.cw.close()

self.StopThread()

self.stoptim()

self.com.CloseCom()

self.WriteLog("",b=1)

except Exception as e:

self.ShowMsg(str(e))

接著我們來運行一下:

查看log目錄:

已經生成了相應的文件:

接著關閉程序,我們只發送一條數據,查看關閉文件的時候,是否自動保存:

查看log目錄,並沒有生成log文件,接著關閉文件,查看目錄下,已經自動生成了log文件:

現在我們已經基本實現了數據接收、發送、保存,那我們用它來幹什麼,下一節課將簡單的來接收GPS數據並解析。

相關焦點

  • 小叮噹python人工智慧篇:讓Google為我們自動翻譯英語課文!
    今天,小叮噹就為大家分享如何通過人工智慧使用python讓谷歌為我們自動翻譯出英文課文!在人工智慧「AI+」的新時代,機器翻譯的水平越來越高,雖然有些翻譯結果不盡人意,Google翻譯總體來說還是可以令人接受的。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • python3腳本篇1-串口通訊腳本
    前言本文我們來學習Python軟體包pyserial的使用,硬體採用wemos D1開發板,直接燒錄串口章節代碼即可,本文主要編寫PC端Python腳本,完成腳本和外接串口設備通訊的功能。一、基礎知識1.pyserial簡介:pyserial模塊是python和串口設備通訊的package,串口是計算機上比較通用的通訊協議,串口設備通過USB插入電腦,python通過pyserial模塊就可以完成和串口設備的通訊,
  • 【實例】如何用串口軟體調試變頻器?
    每一個做工控的都必須要會利用串口調試軟體來和我們的外圍設備來做通訊測試。今天我們就來學習怎麼用串口調試軟體控制臺達的這款變頻器。廢話不多說,直接進入正題。 首先我們要準備好USB轉RS-232的串口線和RS-232轉RS485的模塊,或者USB直接轉RS485也行。
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。我們舉例來說明。
  • Arduino的串口通訊函數
    這麼看來單片機似乎有很傻、很死板,單片機是死的,但人是活的,我們可以把我們的思想寫進單片機,這就是單片機的偉大之處。還有越是智能的晶片,人的參與越多,比如說現在流行的語音控制,蘋果的SIRI、小米的小艾同學,它所能聽懂的每一句話,都是軟體工程師提前想好人們要說什麼,並且寫進晶片去的,這個工程就需要龐大的人力去完成。
  • LabVIEW串口通信的一個例子-串口"示波器"
    按鈕介紹:從左至右依次,發送按鈕;清除計數按鈕;打開/關閉串口按鈕;清除接收區數據;清除波形圖表;保存波形;退出程序。 2.主程序框圖:狀態Event:程序事件響應,由一個事件結構構成,共需響應8個事件:Open/CloseCom按鈕事件;串口號或波特率改變事件;發送按鈕事件;清空計數按鈕事件;清空接收區按鈕事件;清空波形區按鈕事件;保存波形按鈕事件;菜單選擇事件;退出按鈕事件。如果在此狀態,按下退出按鈕,則進入狀態Exit,否則程序將一直運行在此狀態。狀態Exit:程序退出。
  • python教程第三課:python IDE之jupyter notebook詳細教程講解
    2、 上面這個界面裡面顯示的就是我們的一個工作路徑了,然後我們在右上角new那裡選擇python3,如下圖,3、 選擇python3以後將打開一個新的界面,這裡就是我們可以編寫代碼的地方了,那麼首先我們可以點上面標題的地方,會彈出一個修改標題的窗口然後我們在裡面寫一行python的代碼,暫且不管這個代碼有什麼作用
  • 慢步學習,python語言編程,來扯扯語言的學習理解
    那麼慢步來說說自己對程式語言的學習理解吧。關於語言的共性——累積學習程式語言,跟一個人學習一門自然語言(英語、日語)是差不多的。學習在某種情景下使用語言的詞彙/語句來表達。比如表達善意的問候:「你好」、「hello」、「こんにちは(抗你知哇)」。
  • python交互式shell-ipython
    前言在寫Python的時候,有時候需要命令行來測試一段代碼,這時候就會用到交互式的shell。直接輸入python就可以進入默認的shell,但是都沒有提示,用起來不是很爽。這時候就可以用上ipython。
  • Python の在 VSCode 中使用 IPython Kernel 的方法
    要達到的效果:只需按下 Ctrl+;,選中的幾行代碼,就會自動發送到 IPython Kernel,並運行,得到結果!當然,快捷鍵也可以另行設置!為什麼要這麼做:首先,這種配置方式,比較輕量快速;主要用於,增加寫代碼時的「互動性」,可以邊寫代碼,邊測試;例如,在寫代碼時候,快速測試下,一行或幾行代碼,看看效果; 所以,非常適合新手,邊寫邊學習,或者,需要寫個幾十行代碼,迅速解決問題,的情況; 另外,這種配置也比較方便 Debug 的過程,因為可以逐行運行,或者,不按順序的運行測試任意一行代碼;基本配置
  • 用Python 實現手機自動答題,這下百萬答題遊戲誰也玩不過我!
    但是有時候就會想,能不能實現手機自動答題呢,畢竟網絡上是充斥著很多問題的答案,自己手動搜題速度顯然來不及。答案是當然可以,今天我們就來用手機連接電腦,讓電腦自動搜索答案,省時省力省心。基於一些基礎認識,下面我們先來思考下,實現這一項目的整體思路:做這一項目首先會存在以下疑問:1、 我們要讓手機連接電腦,但是怎麼讓電腦自動控制手機呢2、 手機上是顯示文字的,但是怎麼讓電腦看懂你手機上的文字呢3、 電腦知道了問題後如何藉助網絡搜答案呢?
  • |python|電氣和電子工程師協會|編程...
    自動將生成基本走勢圖、移動平均線、RSI 和 MACD 指標,市場情況一目了然,避免因主觀預測失誤帶來的經濟損失。不過在現實中,很多人都覺得學了編程,就是要寫代碼,做碼農。事實證明,這是對編程最大的誤解了,就像學習寫作的人不一定是作家,學畫畫的人不一定是美術家,而是為了讓自己提高自己的核心競爭力,不被時代趨勢所淘汰。新技術給我們帶來驚喜和便利的同時,也讓我們產生了焦慮。
  • 如何開始寫你的第一個python腳本——簡單爬蟲入門!
    好多朋友在入門python的時候都是以爬蟲入手,而網絡爬蟲是近幾年比較流行的概念,特別是在大數據分析熱門起來以後,學習網絡爬蟲的人越來越多,哦對,現在叫數據挖掘了!其實,一般的爬蟲具有2個功能:取數據和存數據!好像說了句廢話。。。
  • Python學習第130課——蒙特卡洛模擬隨機遊走
    【每天幾分鐘,從零入門python編程的世界!】之前我們用代碼實現了醉漢隨機遊走的過程。現在我們用蒙特卡洛模擬計算一下,醉漢在不同的條件下打車回家的概率。我們先定義幾個參數。注意:我們以後寫代碼要把程序中需要的參數都變量化,就是說要先聲明需要的變量,用變量保存需要的參數。這種方式的好處是----在需要改變參數時,只改變變量值就行,這樣會避免在改變參數時出錯,也方便需要修改時找到它。不然如果代碼很多的話,在程序中去找需要改變的參數是非常麻煩的,而且容易出錯。
  • python爬蟲入門實戰!爬取博客文章標題和連結!
    最近有小夥伴和我留言想學python爬蟲,那麼就搞起來吧。準備階段爬蟲有什麼用呢?舉個最簡單的小例子,你需要《戰狼2》的所有豆瓣影評。最先想的做法可能是打開瀏覽器,進入該網站,找到評論,一個一個複製到文本中,保存,翻頁,接著複製,直到翻到最後一頁。
  • 串口通信原理和控制程序
    ,接下來可以寫串口程序了。由此可知,在發字符串時,一定要先讀一次USART->SR,而例1中發一個字符時就不必要了,因為不會有第二個字符來覆蓋第一個字符。  調試中遇到的問題  無論PC發什麼,STM32都沒有回應。調試過程:我把初始化的程序與網上眾多程式設計師寫的初始化程序做了比較,沒有發現不一樣的地方。
  • 用Python 實現手機自動答題,這下百萬答題遊戲誰也玩不過我
    但是有時候就會想,能不能實現手機自動答題呢,畢竟網絡上是充斥著很多問題的答案,自己手動搜題速度顯然來不及。答案是當然可以,今天我們就來用手機連接電腦,讓電腦自動搜索答案,省時省力省心。基於一些基礎認識,下面我們先來思考下,實現這一項目的整體思路:做這一項目首先會存在以下疑問:1、 我們要讓手機連接電腦,但是怎麼讓電腦自動控制手機呢2、 手機上是顯示文字的,但是怎麼讓電腦看懂你手機上的文字呢
  • RS-232-C串口、串口線的使用說明
    串口按接口來分類的話,有RS-232、RS-422和RS-485幾種,其中RS-232串口是最常用的一種串行通訊接口,也稱標準串口。其全名是「數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進位數據交換接口技術標準」。
  • 中標麒麟作業系統串口調試方法研究
    串口作為一種廣泛應用的計算機接口,計算機對設備進行通信控制幾乎都是通過串口進行的。在中標麒麟作業系統下進行串口調試與Windows不同,本文將介紹兩種中標麒麟作業系統下的串口調試方法。串口設備的設備文件是用「/dev/ttyS0」、「/dev/ttyS1」來命名的,Windows下的「COM1」對應於中標麒麟下的「/dev/ttyS0」。打開串口只需要調用open()函數打開設備文件即可。1.2初始化串口串口的初始化設置包括波特率、數據位、奇偶校驗位、停止位和流控制設置。對它們各自進行設置時都有多種選擇,因此編程時一般採用switch()函數實現。