• 3581阅读
  • 3回复

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

上一主题 下一主题
离线jia_xuan
 

只看楼主 倒序阅读 楼主  发表于: 2017-02-27
做了一个串口接收小软件,接收电压和温度,通讯和显示都正常,现在要增加一个定时保存的功能,每秒存一次接收的数据,写到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();而我的是要不停循环存储,不知道怎么写代码了。总不能每秒创建一个文件吧,请大神指点。
离线洗洗睡咯

只看该作者 1楼 发表于: 2017-02-27
主函数里做
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);


定时器函数里写
离线核心科技

只看该作者 2楼 发表于: 2017-02-27
我做过这个解决方法如下:假设你10ms保存一组数据,那么你保存到txt文件中数据的时间过长,则文件过大,则会有时间误差。你从开始创建一个文件然后开始计数,每保存一组计数值+1,假设一个文件你保存1000组,则当计数值到了999的时候,当前文件关闭,重新创建一个文件。
我的问题就是这样解决的。
1条评分金钱+3
liangdebo 金钱 +3 - 2017-05-03
离线流落地球

只看该作者 3楼 发表于: 2020-10-10
    
快速回复
限100 字节
 
上一个 下一个