/
ScanInfo.cpp
163 lines (146 loc) · 4.21 KB
/
ScanInfo.cpp
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <math.h>
#include "ScanInfo.h"
ScanInfo::ScanInfo( void )
{
valid = false;
am = NULL;
sx0 = "-100";
ex0 = "100";
dx0 = "10";
dt0 = "1.0";
sx = sx0.toDouble();
ex = ex0.toDouble();
dx = dx0.toDouble();
dt = dt0.toDouble();
relabs = REL;
speed = MIDDLE;
showUnit = 0;
unitName = "Pulse";
upp = 1;
as = as0 = NULL;
normalize = false;
origin = 0;
offset = 0;
UseMonitors = false;
}
ScanInfo::~ScanInfo( void )
{
}
void ScanInfo::save( QTextStream &out )
{
out << "# " << UNITNAMES << "\t"
<< am->name() << "\t" << as->name() << "\t" << as0->name() << "\n";
out << "# " << UNITIDS << "\t"
<< am->uid() << "\t" << as->uid() << "\t" << as0->uid() << "\n";
out << "# " << NORMALIZE << "\t" << ( ( normalize ) ? 1 : 0 ) << "\n";
out << "# " << METRICUNIT << "\t" << unitName << "\n";
out << "# " << UNIT_PULSE << "\t" << upp << "\n";
out << "# " << ORIG_POINT << "\t" << origin << "\n";
out << "# " << OFFSET << "\t" << offset << "\n";
out << "# " << START_END_STEP << "\t" << sx0 << "\t" << ex0 << "\t" << dx0 << "\n";
out << "# " << RELABSSEL << "\t" << relabs << "\n";
out << "# " << SPEED << "\t" << speed << "\n";
out << "# " << SCANDWELLTIME << "\t" << dt0 << "\n";
out << "# " << USEMONITORS << "\t" << ( UseMonitors ? 1 : 0 ) << "\n";
mi.save( out );
// out << "\n"; // mi.save ¤ÎÃæ¤Ç½ÐÎϤµ¤ì¤ë
}
bool ScanInfo::load( QTextStream &in,
QVector<AMotor*> &AMotors, QVector<ASensor*> &ASensors )
{
bool f = false;
am = NULL;
as = as0 = NULL;
while( !in.atEnd() ) {
QString line = in.readLine();
if ( line.count() < 2 ) break;
if ( line.left( 1 ) != "#" ) break;
if ( line.left( 2 ) != "# " ) continue;
QStringList vals = line.mid( 2 ).split( "\t" );
if ( vals.count() < 2 ) continue;
if ( vals[0] == UNITNAMES ) {
f = true;
if ( vals.count() > 1 ) amName = vals[1];
if ( vals.count() > 2 ) asName = vals[2];
if ( vals.count() > 3 ) as0Name = vals[3];
}
if ( vals[0] == UNITIDS ) {
if ( vals.count() >= 4 ) {
for ( int j = 0; j < AMotors.count(); j++ ) {
if ( AMotors[j]->uid() == vals[1] ) {
am = AMotors[j];
break;
}
}
for ( int j = 0; j < ASensors.count(); j++ ) {
if ( ASensors[j]->uid() == vals[2] ) {
as = ASensors[j];
break;
}
}
for ( int j = 0; j < ASensors.count(); j++ ) {
if ( ASensors[j]->uid() == vals[3] ) {
as0 = ASensors[j];
break;
}
}
}
}
if ( vals[0] == NORMALIZE )
normalize = ( vals[1].toInt() == 1 );
if ( vals[0] == METRICUNIT )
unitName = vals[1];
if ( vals[0] == UNIT_PULSE )
upp = vals[1].toDouble();
if ( vals[0] == ORIG_POINT )
origin = vals[1].toDouble();
if ( vals[0] == OFFSET )
offset = vals[1].toDouble();
if ( vals[0] == START_END_STEP ) {
if ( vals.count() >= 4 ) {
sx0 = vals[1];
ex0 = vals[2];
dx0 = vals[3];
}
}
if ( vals[0] == RELABSSEL )
relabs = (RELABS)(vals[1].toInt());
if ( vals[0] == SPEED )
speed = (MSPEED)(vals[1].toInt());
if ( vals[0] == SCANDWELLTIME )
dt0 = vals[1];
if ( vals[0] == USEMONITORS )
UseMonitors = ( vals[1].toInt() == 1 );
bool dummyF;
mi.load0( line, ASensors, dummyF );
}
if ( am != NULL ) {
sx = am->any2p( sx0.toDouble(), showUnit, relabs );
ex = am->any2p( ex0.toDouble(), showUnit, relabs );
}
if ( upp != 0 )
dx = fabs( dx0.toDouble() / upp );
if ( sx > ex )
dx = -dx;
dt = dt0.toDouble();
return f;
}
void ScanInfo::show( void )
{
qDebug() << "---- Stat of Scan Info ----";
qDebug() << "valid" << valid;
qDebug() << "motor" << am->uid() << amName;
qDebug() << "speed" << speed;
qDebug() << "showUnit" << showUnit;
qDebug() << "upp" << upp;
qDebug() << "unit name" << unitName;
qDebug() << "rel/abs" << relabs;
qDebug() << "sx ex dx dt" << sx0 << ex0 << dx0 << dt0;
qDebug() << "sx ex dx dt" << sx << ex << dx << dt;
if ( as != NULL ) qDebug() << "sensor" << as->uid() << asName;
if ( as0 != NULL ) qDebug() << "sensor0" << as0->uid() << as0Name;
qDebug() << "normalize" << normalize;
qDebug() << "origin offset" << origin << offset;
qDebug() << "use monitors" << UseMonitors;
mi.show();
}