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文件,这样做的好处在数据交互快速,有大量待写入操作能节省时间,不需要一直重复写入。
1、我们将代码加入之前的代码中:
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数据并解析。