先参考一段代码:
来自 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是一个指向结构体的指针
省略文件关闭等