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