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數據並解析。