qt中将数据存入文档再读出------------ writeRawData 与readRawData成对使用

先参考一段代码:
来自 https://blog.csdn.net/amnes1a/article/details/64125120

#include "mainwindow.h"
#include “QApplication”
#include ”QDebug“
#include ”QDataStream“
#include ”QFile“
#include ”QVector“
#include ”QMap“
int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);

	//write
	QFile file("test.dat");
 if (!file.open(QIODevice::ReadWrite))
 {
   	 qDebug() << "open file failed";
     return 0;
  }
 QDataStream ds(&file);
const char *wstr = "hello-world";
quint32 wi = 1234;
double wd = 1.1;
float wf = 2.2f;
QVector<int> wvector;
wvector.push_back(1);
wvector.push_back(2);
wvector.push_back(3);
QMap<int,int> wmap;
wmap.insert(4, 4);
wmap.insert(5, 5);
wmap.insert(6, 6);
ds << wstr;
ds << wi;
ds << wd;
ds << wf;
ds << wvector;
ds << wmap;
ds.writeBytes("file end ", qstrlen("file end "));
ds.writeRawData("really end", qstrlen("really end"));

//read
file.seek(0);
char *rstr;
quint32 ri;
double rd;
float rf;
QVector<int> rvector;
QMap<int, int> rmap;
char *rbytes;
uint len;
char *rraw = new char[100]{0};
int rlen;
ds >> rstr;
ds >> ri;
ds >> rd;
ds >> rf;
ds >> rvector;
ds >> rmap;
ds.readBytes(rbytes, len);
ds.readRawData(rraw, rlen);
qDebug() << rstr;
qDebug() << ri;
qDebug() << rd;
qDebug() << rf;
qDebug() << rvector;
qDebug() << rmap;
qDebug() << rbytes;
qDebug() << rraw;

return a.exec();

}

输出:
hello-world
1234
1.1
2.2
QVector(1, 2, 3)
QMap((4, 4)(5, 5)(6, 6))
file end


上面的例子很清晰,我自己的函数是把设备上的数据通过485读取,存在文件中,然后历史数据可以调取,例如,波形数据可以再现波形等。
485数据上来后存在一个QByteArray 数组中,然后本地打开文件,后缀自己设置,
读出的部分是把数据存到一个结构体中

具体可以根据自己的需要设置 写数据的来源和读出的数据放哪里

1、写入部分:

QFile file(FileName);
省略文件打开等
QDataStream ds(&file);
ds.writeRawData(Read_tem.data(), sizeof(struct RRD));
省略文件关闭等

2、读出部分:

省略文件打开等
QDataStream readDataStream(&file_name);
readDataStream.readRawData(pointor, sizeof(struct RRD)); //pointor是一个指向结构体的指针

省略文件关闭等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值