查看完整版本: [-- 请教,如何把串口接收的数据定时保存在txt文件中? --]

QTCN开发网 -> Qt嵌入式开发 -> 请教,如何把串口接收的数据定时保存在txt文件中? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jia_xuan 2017-02-27 18:53

请教,如何把串口接收的数据定时保存在txt文件中?

做了一个串口接收小软件,接收电压和温度,通讯和显示都正常,现在要增加一个定时保存的功能,每秒存一次接收的数据,写到txt文件中,我知道要用到QTimer,QFile,QTextStream这些,我在网上查到的都是手动存储一次的方法,比如:
QString tempData=ui->txtDataHex->toPlainText();    
if (tempData==""){return;}//如果没有内容则不保存
QDateTime now=QDateTime::currentDateTime();  
QString name=now.toString("yyyyMMddHHmmss");  
QString fileName=name+".txt";
QFile file(fileName);    
file.open(QFile::WriteOnly | QIODevice::Text | QIODevice::Append);  
QTextStream out(&file);   
out << tempData << "\r\n";
file.close();而我的是要不停循环存储,不知道怎么写代码了。总不能每秒创建一个文件吧,请大神指点。

洗洗睡咯 2017-02-27 22:06
主函数里做
QString tempData=ui->txtDataHex->toPlainText();    
if (tempData==""){return;}//如果没有内容则不保存
QDateTime now=QDateTime::currentDateTime();  
QString name=now.toString("yyyyMMddHHmmss");  
QString fileName=name+".txt";
QFile file(fileName);    
file.open(QFile::WriteOnly | QIODevice::Text | QIODevice::Append);  
QTextStream out(&file);


定时器函数里写

核心科技 2017-02-27 22:08
我做过这个解决方法如下:假设你10ms保存一组数据,那么你保存到txt文件中数据的时间过长,则文件过大,则会有时间误差。你从开始创建一个文件然后开始计数,每保存一组计数值+1,假设一个文件你保存1000组,则当计数值到了999的时候,当前文件关闭,重新创建一个文件。
我的问题就是这样解决的。

流落地球 2020-10-10 10:03
    


查看完整版本: [-- 请教,如何把串口接收的数据定时保存在txt文件中? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled