-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
89 lines (81 loc) · 2.64 KB
/
mainwindow.cpp
File metadata and controls
89 lines (81 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "mainwindow.h"
#include <QBuffer>
#include <QDataStream>
#include <cstring>
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent),
tabWidget(new QTabWidget(this)),
systemOption(new SystemOption(tabWidget)),
dataDisplay(new DataDisplay(tabWidget)),
dataWave(new DataWave(tabWidget)),
statusAnalysis(new StatusAnalysis(tabWidget)),
layout(new QGridLayout(this)),
timer(new QTimer(this))
{
QSharedMemory sharedMemory("shared");
tabWidget->setTabPosition(QTabWidget::West);
layout->addWidget(tabWidget, 0, 0, 1, 1);
tabWidget->addTab(systemOption, "Option");
tabWidget->addTab(dataDisplay, "Display");
tabWidget->addTab(dataWave, "Wave");
tabWidget->addTab(statusAnalysis, "Status");
QObject::connect(timer, &QTimer::timeout, this, &MainWindow::dataGet);
timer->start(3000);
QObject::connect(dataDisplay, &DataDisplay::nodeChanged, dataWave, &DataWave::nodeChanged);
sharedMemory.create(1000);
}
void MainWindow::dataGet()
{
if(!sharedMemory.attach())
return;
QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
QDataStream in(&buffer);
QString data;
sharedMemory.lock();
buffer.setData(static_cast<char *>(const_cast<void *>(sharedMemory.constData())), sharedMemory.size());
in >> data;
in << "";
char *to = static_cast<char*>(sharedMemory.data());
const char *from = buffer.data().data();
std::memcpy(to, from, static_cast<size_t>(buffer.size()));
sharedMemory.unlock();
sharedMemory.detach();
if(data != QString(""))
{
dataWave->getData(12345, data);
dataDisplay->getData(12345, data);
}
}
MainWindow::~MainWindow()
{
}
/*
if (sharedMemory.isAttached())
detach();
ui.label->setText(tr("Select an image file"));
QString fileName = QFileDialog::getOpenFileName(0, QString(), QString(),
tr("Images (*.png *.xpm *.jpg)"));
QImage image;
if (!image.load(fileName)) {
ui.label->setText(tr("Selected file is not an image, please select another."));
return;
}
ui.label->setPixmap(QPixmap::fromImage(image));
//! [1] //! [2]
// load into shared memory
QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
QDataStream out(&buffer);
out << image;
int size = buffer.size();
if (!sharedMemory.create(size)) {
ui.label->setText(tr("Unable to create shared memory segment."));
return;
}
sharedMemory.lock();
char *to = (char*)sharedMemory.data();
const char *from = buffer.data().data();
memcpy(to, from, qMin(sharedMemory.size(), size));
sharedMemory.unlock();
*/