28 #include <QStringList> 30 #include <QTextStream> 33 #include <xercesc/util/PlatformUtils.hpp> 34 #include <xercesc/sax2/SAX2XMLReader.hpp> 35 #include <xercesc/sax2/XMLReaderFactory.hpp> 36 #if defined(XERCES_NEW_IOSTREAMS) 41 #include <xercesc/util/OutOfMemoryException.hpp> 113 const XMLCh *
const qname,
const Attributes &attrs)
122 if (attrs.getLength()) {}
125 QString qName = QString(XMLString::transcode(qname));
128 if (qName ==
"autoRunName") {
130 }
else if (qName ==
"line") {
132 }
else if (qName ==
"cmd_str") {
134 }
else if (qName ==
"comment") {
137 }
else if (qName ==
"alias") {
140 }
else if (qName ==
"ignore_alarms") {
143 }
else if (qName ==
"ignore_clients") {
146 }
else if (qName ==
"setBPV") {
149 }
else if (qName ==
"odbTag") {
152 }
else if (qName ==
"setOdbData") {
155 }
else if (qName ==
"setOdbDataArray") {
158 }
else if (qName ==
"setTemp") {
162 }
else if (qName ==
"setTfl") {
165 }
else if (qName ==
"setSampleHV") {
168 }
else if (qName ==
"setRA_HV") {
171 }
else if (qName ==
"setTransportHV") {
174 }
else if (qName ==
"setHVOff") {
177 }
else if (qName ==
"setFieldWEWL") {
180 }
else if (qName ==
"setFieldWEWH") {
183 }
else if (qName ==
"setFieldDanfysik") {
186 }
else if (qName ==
"setField") {
189 }
else if (qName ==
"setSpinRot") {
192 }
else if (qName ==
"setFOM") {
195 }
else if (qName ==
"setTitle") {
198 }
else if (qName ==
"setTOF") {
201 }
else if (qName ==
"setModInfo") {
204 }
else if (qName ==
"setLEMSetup") {
207 }
else if (qName ==
"setWait") {
210 }
else if (qName ==
"setDump") {
213 }
else if (qName ==
"runStart") {
216 }
else if (qName ==
"runStop") {
219 }
else if (qName ==
"warmUp") {
222 }
else if (qName ==
"degaussWEW") {
225 }
else if (qName ==
"degaussDanfysik") {
228 }
else if (qName ==
"degaussMagnet") {
231 }
else if (qName ==
"degaussSpinRot") {
234 }
else if (qName ==
"comment_line") {
236 }
else if (qName ==
"alias_key") {
238 }
else if (qName ==
"alias_value") {
240 }
else if (qName ==
"loop") {
244 }
else if (qName ==
"loopList") {
246 }
else if (qName ==
"loopElement") {
248 }
else if (qName ==
"loopIterator") {
250 }
else if (qName ==
"loopStart") {
252 }
else if (qName ==
"loopStop") {
254 }
else if (qName ==
"loopStep") {
256 }
else if (qName ==
"loopSetTemp") {
260 }
else if (qName ==
"loopTempTag") {
262 }
else if (qName ==
"loopSetSampleHV") {
266 }
else if (qName ==
"loopSampleHVTag") {
268 }
else if (qName ==
"loopSetFieldWEWL") {
272 }
else if (qName ==
"loopSetFieldWEWH") {
276 }
else if (qName ==
"loopSetFieldDanfysik") {
280 }
else if (qName ==
"loopSetField") {
284 }
else if (qName ==
"loopFieldTag") {
286 }
else if (qName ==
"set_path") {
288 }
else if (qName ==
"set_index") {
290 }
else if (qName ==
"set_value") {
292 }
else if (qName ==
"read_path") {
294 }
else if (qName ==
"read_index") {
296 }
else if (qName ==
"timeout") {
298 }
else if (qName ==
"tolerance") {
300 }
else if (qName ==
"tfl_pos") {
302 }
else if (qName ==
"tfl_mode") {
304 }
else if (qName ==
"temp") {
306 }
else if (qName ==
"deltaT") {
308 }
else if (qName ==
"ramp") {
310 }
else if (qName ==
"heaterRange") {
312 }
else if (qName ==
"stabilityTimeout") {
314 }
else if (qName ==
"P_PID") {
316 }
else if (qName ==
"I_PID") {
318 }
else if (qName ==
"D_PID") {
320 }
else if (qName ==
"flow") {
322 }
else if (qName ==
"hv_value") {
324 }
else if (qName ==
"hv_left") {
326 }
else if (qName ==
"hv_right") {
328 }
else if (qName ==
"hv_top") {
330 }
else if (qName ==
"hv_bottom") {
332 }
else if (qName ==
"transportHvSettingFileName") {
334 }
else if (qName ==
"field_value") {
336 }
else if (qName ==
"field_unit") {
338 }
else if (qName ==
"title") {
340 }
else if (qName ==
"odb_sample") {
342 }
else if (qName ==
"odb_temp") {
344 }
else if (qName ==
"odb_field") {
346 }
else if (qName ==
"odb_transp") {
348 }
else if (qName ==
"odb_hv_samp") {
350 }
else if (qName ==
"odb_energy") {
352 }
else if (qName ==
"odb_ra_diff_lr") {
354 }
else if (qName ==
"odb_ra_diff_tb") {
356 }
else if (qName ==
"odb_spin_rot") {
358 }
else if (qName ==
"start") {
360 }
else if (qName ==
"stop") {
362 }
else if (qName ==
"units") {
364 }
else if (qName ==
"mod") {
366 }
else if (qName ==
"mod_date") {
368 }
else if (qName ==
"setup") {
370 }
else if (qName ==
"wait") {
372 }
else if (qName ==
"no_events") {
374 }
else if (qName ==
"no_dumps") {
376 }
else if (qName ==
"date") {
378 }
else if (qName ==
"time") {
380 }
else if (qName ==
"vent") {
382 }
else if (qName ==
"current") {
384 }
else if (qName ==
"angle") {
386 }
else if (qName ==
"no_degauss") {
388 }
else if (qName ==
"chamber") {
390 }
else if (qName ==
"label") {
392 }
else if (qName ==
"state") {
520 fOdbTag.
tag = QString(XMLString::transcode(chars));
526 fOdbTag.
idx = QString(XMLString::transcode(chars)).toInt();
779 str = QString(XMLString::transcode(chars));
780 if (!str.contains(
"mc", Qt::CaseInsensitive) && !str.contains(
"tc", Qt::CaseInsensitive) &&
781 !str.contains(
"sc", Qt::CaseInsensitive)) {
782 QString err = QString(
"PSAX2AutoRunParseHandler::characters: found chamber name '%1' which is not supported").arg(str);
1073 QString err = QString(
"PSAX2AutoRunParseHandler::characters: found units '%1' in START command. Currently only 'sec' are supported!").arg(
fAutoRunCmd.
param[1].toLower());
1098 QString err = QString(
"PSAX2AutoRunParseHandler::characters: found units '%1' in STOP command. Currently only 'sec' are supported!").arg(
fAutoRunCmd.
param[1].toLower());
1137 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1152 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1175 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1208 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1232 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1260 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1288 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1316 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1353 const XMLCh *
const qname)
1361 QString qName = QString(XMLString::transcode(qname));
1365 if (qName ==
"odbTag") {
1368 QString err(
"PSAX2AutoRunParseHandler::endElement: ODB tag not complete");
1376 if ((qName ==
"comment") || (qName ==
"alias") || (qName ==
"ignore_alarms") || (qName ==
"ignore_clients") || (qName ==
"odbTag") ||
1377 (qName ==
"setBPV") || (qName ==
"setTfl") || (qName ==
"setTemp") || (qName ==
"setSampleHV") || (qName ==
"setRA_HV") ||
1378 (qName ==
"setTransportHV") || (qName ==
"setFieldWEWL") || (qName ==
"setFieldWEWH") || (qName ==
"setFieldDanfysik") ||
1379 (qName ==
"setField") || (qName ==
"setSpinRot") || (qName ==
"setTitle") || (qName ==
"setTOF") || (qName ==
"setModInfo") ||
1380 (qName ==
"setLEMSetup") || (qName ==
"setWait") || (qName ==
"setDump") ||
1381 (qName ==
"runStart") || (qName ==
"runStop") || (qName ==
"warmUp") ||
1382 (qName ==
"degaussDanfysik") || (qName ==
"degaussWEW") || (qName ==
"degaussMagnet") || (qName ==
"degaussSpinRot") ||
1383 (qName ==
"setFOM") || (qName ==
"setOdbData") || (qName ==
"setOdbDataArray") || (qName ==
"setHVOff")) {
1385 if (qName ==
"setOdbData")
1395 if (qName ==
"loopIterator") {
1396 int no_elements = -1;
1400 QString err(
"PSAX2AutoRunParseHandler::endElement: loop step iterator == 0!");
1408 for (
int i=0; i<no_elements; i++)
1414 if (qName ==
"loop") {
1425 expandedLoopCmd.
cmd =
"setTemp";
1427 expandedLoopCmd.
cmd =
"setSampleHV";
1429 expandedLoopCmd.
cmd =
"setFieldWEWL";
1431 expandedLoopCmd.
cmd =
"setFieldWEWH";
1433 expandedLoopCmd.
cmd =
"setFieldDanfysik";
1435 expandedLoopCmd.
cmd =
"setField";
1438 QString err(
"PSAX2AutoRunParseHandler::endElement: syntactically incorrect command!");
1445 PXMLLoopListVector::Iterator listIter;
1446 PAutoRunCmdVector::Iterator cmdIter;
1451 expandedLoopCmd.
param[0] = QString(
"%1").arg(*listIter);
1465 QString err(
"PSAX2AutoRunParseHandler::endElement: negative loop fall back!");
1470 PAutoRunCmdVector::Iterator iter;
1472 QString lastLoopVal(
"");
1476 if (iter->cmd ==
"setSampleHV") {
1477 iter->cmdString = QString(
"SAMPLE_HV ");
1479 if (!iter->param[i].isEmpty())
1480 iter->cmdString += iter->param[i] +
", ";
1483 iter->cmdString.truncate(iter->cmdString.length()-2);
1485 iter->loopVal = iter->param[0];
1486 lastLoopVal = iter->param[0];
1487 }
else if (iter->cmd ==
"setTemp") {
1488 iter->cmdString = QString(
"TEMP ");
1490 if (!iter->param[i].isEmpty())
1491 iter->cmdString += iter->param[i] +
", ";
1494 iter->cmdString.truncate(iter->cmdString.length()-2);
1496 iter->loopVal = iter->param[0];
1497 lastLoopVal = iter->param[0];
1498 }
else if (iter->cmd ==
"setFieldWEWL") {
1499 iter->cmdString = QString(
"FIELD_WEWL ");
1501 if (!iter->param[i].isEmpty())
1502 iter->cmdString += iter->param[i] +
", ";
1505 iter->cmdString.truncate(iter->cmdString.length()-2);
1507 iter->loopVal = iter->param[0];
1508 lastLoopVal = iter->param[0];
1509 }
else if (iter->cmd ==
"setFieldWEWH") {
1510 iter->cmdString = QString(
"FIELD_WEWH ");
1512 if (!iter->param[i].isEmpty())
1513 iter->cmdString += iter->param[i] +
", ";
1516 iter->cmdString.truncate(iter->cmdString.length()-2);
1518 iter->loopVal = iter->param[0];
1519 lastLoopVal = iter->param[0];
1520 }
else if (iter->cmd ==
"setFieldDanfysik") {
1521 iter->cmdString = QString(
"FIELD_DANFYSIK ");
1523 if (!iter->param[i].isEmpty())
1524 iter->cmdString += iter->param[i] +
", ";
1527 iter->cmdString.truncate(iter->cmdString.length()-2);
1529 iter->loopVal = iter->param[0];
1530 lastLoopVal = iter->param[0];
1531 }
else if (iter->cmd ==
"setField") {
1532 iter->cmdString = QString(
"FIELD ");
1534 if (!iter->param[i].isEmpty())
1535 iter->cmdString += iter->param[i] +
", ";
1538 iter->cmdString.truncate(iter->cmdString.length()-2);
1540 iter->loopVal = iter->param[0];
1541 lastLoopVal = iter->param[0];
1543 iter->loopVal = lastLoopVal;
1588 err.
errorMsg = QString(XMLString::transcode(exc.getMessage()));
1611 err.
errorMsg = QString(XMLString::transcode(exc.getMessage()));
1634 err.
errorMsg = QString(XMLString::transcode(exc.getMessage()));
1690 QString err(
"PSAX2AutoRunParseHandler::CheckOdbSetDataParamsStructure: ");
1707 err += QString(
"if only 2 values are given, they have to be set_path and set_value!");
1715 err += QString(
"if only 3 values are given, they have to be set_path, set_index, and set_value!");
1722 err += QString(
"if 5 values are given, they have to be: set_path, set_value, read_path, timeout, tolerance!");
1729 err += QString(
"if 6 values are given, they have to be: set_path, set_value, read_path, timeout, tolerance, and (set_index or read_index) !");
1736 err += QString(
"ODB_SET_DATA parameter error! Please check the manual");
1762 fInputFileName(userAutoRunSeqFln),
1763 fAutoRunXMLSchemaPath(schemaPath),
1764 fXMLFileName(xmlFln),
1765 fAutoRunCmdVector(arcv),
1766 fOdbTagVector(odbtagv)
1796 QString offset =
"";
1798 QStringList runSeqXML;
1803 if (!file.exists()) {
1811 if (file.open(QIODevice::ReadOnly)) {
1812 QTextStream stream( &file );
1814 while ( !stream.atEnd() ) {
1815 line = stream.readLine();
1825 QString key(
""), value(
"");
1827 for (QStringList::Iterator it = runSeq.begin(); it != runSeq.end(); ++it) {
1830 str = str.trimmed();
1831 if (str.startsWith(
"ALIAS")) {
1832 key = str.section(
' ', 1, 1);
1833 value = str.section(
' ', 2);
1834 if ((key.length() == 0) || (value.length() == 0)) {
1835 QString err = QString(
"**ERROR** Invalid ALIAS command!");
1846 runSeqXML += QString(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
1847 runSeqXML += QString(
"<autoRun xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
1848 runSeqXML += QString(
" xsi:noNamespaceSchemaLocation=\"file:")+
fAutoRunXMLSchemaPath+QString(
"\">");
1849 runSeqXML += QString(
"<autoRunName>%1</autoRunName>").arg(
fInputFileName);
1853 for (QStringList::Iterator it = runSeq.begin(); it != runSeq.end(); ++it) {
1856 str = str.trimmed();
1857 str = str.simplified();
1862 if (str.startsWith(
"%"))
1864 else if (str.startsWith(
"ALIAS"))
1866 else if (str.startsWith(
"IGNORE_ALARMS"))
1868 else if (str.startsWith(
"IGNORE_CLIENTS"))
1870 else if (str.startsWith(
"BPV"))
1872 else if (str.startsWith(
"FIELD_WEWL"))
1874 else if (str.startsWith(
"FIELD_WEWH"))
1876 else if (str.startsWith(
"FIELD_DANFYSIK"))
1878 else if (str.startsWith(
"FIELD "))
1880 else if (str.startsWith(
"FOM"))
1882 else if (str.startsWith(
"LEM_SETUP"))
1884 else if (str.startsWith(
"MODERATOR"))
1886 else if (str.startsWith(
"SAMPLE_HV"))
1888 else if (str.startsWith(
"RA_HV"))
1890 else if (str.startsWith(
"TRANSPORT_HV"))
1892 else if (str.startsWith(
"HV_OFF"))
1894 else if (str.startsWith(
"ODB_TAG"))
1896 else if (str.startsWith(
"ODB_SET_DATA"))
1897 if (str.startsWith(
"ODB_SET_DATA_ARRAY")) {
1902 else if (str.startsWith(
"SPIN_ROT"))
1904 else if (str.startsWith(
"START"))
1906 else if (str.startsWith(
"STOP"))
1908 else if (str.startsWith(
"TFL"))
1910 else if (str.startsWith(
"TEMP"))
1912 else if (str.startsWith(
"TITLE"))
1914 else if (str.startsWith(
"TOF"))
1916 else if (str.startsWith(
"WAIT"))
1918 else if (str.startsWith(
"WARMUP"))
1920 else if (str.startsWith(
"DUMP"))
1922 else if (str.startsWith(
"DEGAUSS_WEW"))
1924 else if (str.startsWith(
"DEGAUSS_DANFYSIK"))
1926 else if (str.startsWith(
"DEGAUSS_MAGNET"))
1928 else if (str.startsWith(
"DEGAUSS_SPIN_ROT"))
1930 else if (str.startsWith(
"LOOP_START")) {
1934 for (
int i=0; i<loop_no; i++)
1937 else if (str.startsWith(
"LOOP_LIST"))
1939 else if (str.startsWith(
"LOOP_ITERATOR"))
1941 else if (str.startsWith(
"LOOP_TEMP"))
1943 else if (str.startsWith(
"LOOP_SAMPLE_HV"))
1945 else if (str.startsWith(
"LOOP_FIELD_WEWL"))
1947 else if (str.startsWith(
"LOOP_FIELD_WEWH"))
1949 else if (str.startsWith(
"LOOP_FIELD_DANFYSIK"))
1951 else if (str.startsWith(
"LOOP_FIELD "))
1953 else if (str.startsWith(
"LOOP_END")) {
1956 for (
int i=0; i<loop_no; i++)
1966 runSeqXML += QString(
"</autoRun>");
1970 if (fileOut.open( QIODevice::WriteOnly )) {
1971 QTextStream stream( &fileOut );
1972 for ( QStringList::Iterator it = runSeqXML.begin(); it != runSeqXML.end(); ++it )
1973 stream << *it <<
"\n";
1993 QString result = str;
1994 QStringList tokens = result.split(QRegExp(
"[\\s,\\[\\]]"), Qt::SkipEmptyParts);
1996 QList<QString> keys =
fAlias.keys();
1997 QList<QString>::iterator it;
1998 QString key(
""), sKey(
""), sAlias(
"");
2000 for (it = keys.begin(); it != keys.end(); ++it) {
2002 for (
int i=0; i<tokens.count(); i++) {
2003 if (key == tokens[i]) {
2005 sAlias =
" "+
fAlias[key];
2006 result.replace(sKey, sAlias);
2009 idx1 = result.indexOf(
"\"[");
2011 idx2 = result.indexOf(
"]", idx1);
2012 for (
int i=idx1; i<=idx2; i++)
2013 result[i] = result[i+1];
2037 xml += offset + QString(
"<autoRunCmd>");
2038 xml += offset + QString(
" <alias>");
2039 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2040 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2041 xml += offset + QString(
" <alias_key>%1</alias_key>").arg(str.section(
' ', 1, 1));
2042 xml += offset + QString(
" <alias_value>%1</alias_value>").arg(str.section(
' ', 2, 2));
2043 xml += offset + QString(
" </alias>");
2044 xml += offset + QString(
"</autoRunCmd>");
2060 xml += offset + QString(
"<autoRunCmd>");
2061 xml += offset + QString(
" <ignore_alarms>");
2062 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2063 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2064 xml += offset + QString(
" <state>%1</state>").arg(str.section(
' ', 1, 1).toLower());
2065 xml += offset + QString(
" </ignore_alarms>");
2066 xml += offset + QString(
"</autoRunCmd>");
2082 xml += offset + QString(
"<autoRunCmd>");
2083 xml += offset + QString(
" <ignore_clients>");
2084 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2085 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2086 xml += offset + QString(
" <state>%1</state>").arg(str.section(
' ', 1, 1).toLower());
2087 xml += offset + QString(
" </ignore_clients>");
2088 xml += offset + QString(
"</autoRunCmd>");
2104 xml += offset + QString(
"<autoRunCmd>");
2105 xml += offset + QString(
" <setBPV>");
2106 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2107 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2108 if (str.contains(
"X"))
2109 xml += offset + QString(
" <label>X</label>");
2110 else if (str.contains(
"Y"))
2111 xml += offset + QString(
" <label>Y</label>");
2113 xml += offset + QString(
" <label>?</label>");
2114 xml += offset + QString(
" <state>%1</state>").arg(str.section(
' ', 1, 1).toLower());
2115 xml += offset + QString(
" </setBPV>");
2116 xml += offset + QString(
"</autoRunCmd>");
2132 QString comment = str;
2133 comment.replace(
"<",
" less-than ");
2134 comment.replace(
">",
" greater-than ");
2136 xml += offset + QString(
"<autoRunCmd>");
2137 xml += offset + QString(
" <comment>");
2138 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2139 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(comment);
2140 xml += offset + QString(
" </comment>");
2141 xml += offset + QString(
"</autoRunCmd>");
2159 xml += offset + QString(
"<autoRunCmd>");
2160 xml += offset + QString(
" <setDump>");
2161 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2162 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2163 xml += offset + QString(
" <no_dumps>%1</no_dumps>").arg(line.section(
' ', 1, 1));
2164 xml += offset + QString(
" </setDump>");
2165 xml += offset + QString(
"</autoRunCmd>");
2183 xml += offset + QString(
"<autoRunCmd>");
2184 xml += offset + QString(
" <setFieldWEWL>");
2185 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2186 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2187 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2189 unit = line.section(
' ', 2, 2);
2190 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2191 QString err = QString(
"**ERROR** Wrong units in FIELD_WEWL cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2196 xml += offset + QString(
" <field_unit>G</field_unit>");
2198 xml += offset + QString(
" <field_unit>A</field_unit>");
2199 xml += offset + QString(
" </setFieldWEWL>");
2200 xml += offset + QString(
"</autoRunCmd>");
2218 xml += offset + QString(
"<autoRunCmd>");
2219 xml += offset + QString(
" <setFieldWEWH>");
2220 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2221 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2222 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2224 unit = line.section(
' ', 2, 2);
2225 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2226 QString err = QString(
"**ERROR** Wrong units in FIELD_WEWH cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2231 xml += offset + QString(
" <field_unit>G</field_unit>");
2233 xml += offset + QString(
" <field_unit>A</field_unit>");
2234 xml += offset + QString(
" </setFieldWEWH>");
2235 xml += offset + QString(
"</autoRunCmd>");
2253 xml += offset + QString(
"<autoRunCmd>");
2254 xml += offset + QString(
" <setFieldDanfysik>");
2255 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2256 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2257 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2259 unit = line.section(
' ', 2, 2);
2260 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2261 QString err = QString(
"**ERROR** Wrong units in FIELD_DANFYSIK cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2266 xml += offset + QString(
" <field_unit>G</field_unit>");
2268 xml += offset + QString(
" <field_unit>A</field_unit>");
2269 xml += offset + QString(
" </setFieldDanfysik>");
2270 xml += offset + QString(
"</autoRunCmd>");
2288 xml += offset + QString(
"<autoRunCmd>");
2289 xml += offset + QString(
" <setField>");
2290 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2291 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2292 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2294 unit = line.section(
' ', 2, 2);
2295 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2296 QString err = QString(
"**ERROR** Wrong units in FIELD cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2301 xml += offset + QString(
" <field_unit>G</field_unit>");
2303 xml += offset + QString(
" <field_unit>A</field_unit>");
2304 xml += offset + QString(
" </setField>");
2305 xml += offset + QString(
"</autoRunCmd>");
2323 xml += offset + QString(
"<autoRunCmd>");
2324 xml += offset + QString(
" <setFOM>");
2325 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2326 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2327 xml += offset + QString(
" <current>%1</current>").arg(line.section(
' ', 1, 1).remove(
","));
2328 xml += offset + QString(
" </setFOM>");
2329 xml += offset + QString(
"</autoRunCmd>");
2347 xml += offset + QString(
"<autoRunCmd>");
2348 xml += offset + QString(
" <setLEMSetup>");
2349 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2350 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2351 xml += offset + QString(
" <setup>%1</setup>").arg(line.section(
' ', 1));
2352 xml += offset + QString(
" </setLEMSetup>");
2353 xml += offset + QString(
"</autoRunCmd>");
2369 xml += offset + QString(
"<autoRunCmd>");
2370 xml += offset + QString(
" <loop>");
2371 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2391 xml += offset + QString(
"<loopList>");
2392 workStr = str.section(
'[', 1).trimmed();
2394 while (!value.isEmpty()) {
2395 value = workStr.section(
',',i,i);
2397 if (!value.trimmed().isEmpty()) {
2398 value = value.trimmed().remove(
"]");
2399 xml += offset + QString(
" <loopElement>%1</loopElement>").arg(value);
2403 xml += offset + QString(
"</loopList>");
2423 xml += offset + QString(
"<loopIterator>");
2424 workStr = str.section(
'[', 1).trimmed();
2426 while (!value.isEmpty()) {
2427 value = workStr.section(
',',i,i);
2429 if (!value.trimmed().isEmpty()) {
2430 value = value.trimmed().remove(
"]");
2433 xml += offset + QString(
" <loopStart>%1</loopStart>").arg(value);
2436 xml += offset + QString(
" <loopStop>%1</loopStop>").arg(value);
2439 xml += offset + QString(
" <loopStep>%1</loopStep>").arg(value);
2447 xml += offset + QString(
"</loopIterator>");
2467 xml += offset + QString(
"<loopSetTemp>");
2468 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2469 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2470 workStr = line.section(
' ', 1, 1);
2471 workStr.remove(
",");
2472 xml += offset + QString(
" <loopTempTag>%1</loopTempTag>").arg(workStr);
2473 xml += offset + QString(
" <deltaT>%1</deltaT>").arg(line.section(
',', 1, 1).trimmed());
2474 xml += offset + QString(
" <stabilityTimeout>%1</stabilityTimeout>").arg(line.section(
',', 2, 2).trimmed());
2475 workStr = line.section(
',', 3, 3);
2477 if (workStr.remove(
",").trimmed().length()>0) {
2478 xml += offset + QString(
" <ramp>%1</ramp>").arg(workStr.remove(
",").trimmed());
2480 xml += offset + QString(
"</loopSetTemp>");
2498 xml += offset + QString(
"<loopSetSampleHV>");
2499 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2500 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2501 xml += offset + QString(
" <loopSampleHVTag>%1</loopSampleHVTag>").arg(line.section(
' ', 1, 1));
2502 xml += offset + QString(
"</loopSetSampleHV>");
2520 xml += offset + QString(
"<loopSetFieldWEWL>");
2521 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2522 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2523 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2525 unit = line.section(
' ', 2, 2);
2526 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2527 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD_WEWL cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2532 xml += offset + QString(
" <field_unit>G</field_unit>");
2534 xml += offset + QString(
" <field_unit>A</field_unit>");
2535 xml += offset + QString(
"</loopSetFieldWEWL>");
2553 xml += offset + QString(
"<loopSetFieldWEWH>");
2554 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2555 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2556 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2558 unit = line.section(
' ', 2, 2);
2559 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2560 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD_WEWH cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2565 xml += offset + QString(
" <field_unit>G</field_unit>");
2567 xml += offset + QString(
" <field_unit>A</field_unit>");
2568 xml += offset + QString(
"</loopSetFieldWEWH>");
2586 xml += offset + QString(
"<loopSetFieldDanfysik>");
2587 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2588 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2589 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2591 unit = line.section(
' ', 2, 2);
2592 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2593 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD_DANFYSIK cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2598 xml += offset + QString(
" <field_unit>G</field_unit>");
2600 xml += offset + QString(
" <field_unit>A</field_unit>");
2601 xml += offset + QString(
"</loopSetFieldDanfysik>");
2619 xml += offset + QString(
"<loopSetField>");
2620 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2621 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2622 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2624 unit = line.section(
' ', 2, 2);
2625 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2626 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2631 xml += offset + QString(
" <field_unit>G</field_unit>");
2633 xml += offset + QString(
" <field_unit>A</field_unit>");
2634 xml += offset + QString(
"</loopSetField>");
2649 xml += offset + QString(
" </loop>");
2650 xml += offset + QString(
"</autoRunCmd>");
2670 xml += offset + QString(
"<autoRunCmd>");
2671 xml += offset + QString(
" <setModInfo>");
2672 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2673 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2674 workStr = line.section(
' ', 1, 1);
2675 workStr.remove(
",");
2676 xml += offset + QString(
" <mod>%1</mod>").arg(workStr);
2677 xml += offset + QString(
" <mod_date>%1</mod_date>").arg(line.section(
' ', 2));
2678 xml += offset + QString(
" </setModInfo>");
2679 xml += offset + QString(
"</autoRunCmd>");
2697 line.remove(
"ODB_SET_DATA ");
2699 QStringList tokens = line.split(QRegExp(
"[,]"));
2701 if ((tokens.count() != 2) && (tokens.count() != 5)) {
2702 QString err = QString(
"**ERROR** Invalid ODB_SET_DATA command! Given number of parameters have to be 2 or 5 found %1").arg(tokens.count());
2707 xml += offset + QString(
"<autoRunCmd>");
2708 xml += offset + QString(
" <setOdbData>");
2709 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2710 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2713 if (tokens.count() == 2) {
2714 int idx1 = tokens[0].indexOf(
"["), idx2;
2717 xml += offset + QString(
" <set_path>%1</set_path>").arg(tokens[0].
remove(
'"').trimmed());
2722 xml += offset + QString(
" <set_path>%1</set_path>").arg(sec.remove(
'"').trimmed());
2724 idx2 = tokens[0].indexOf(
"]", idx1);
2725 xml += offset + QString(
" <set_index>%1</set_index>").arg(tokens[0].mid(idx1+1,idx2-idx1-1));
2728 xml += offset + QString(
" <set_value>%1</set_value>").arg(tokens[1].
remove(
'"').trimmed());
2729 }
else if (tokens.count() == 5) {
2730 int idx1 = tokens[0].indexOf(
"["), idx2;
2733 xml += offset + QString(
" <set_path>%1</set_path>").arg(tokens[0].
remove(
'"').trimmed());
2738 xml += offset + QString(
" <set_path>%1</set_path>").arg(sec.remove(
'"').trimmed());
2740 idx2 = tokens[0].indexOf(
"]", idx1);
2741 xml += offset + QString(
" <set_index>%1</set_index>").arg(tokens[0].mid(idx1+1,idx2-idx1-1));
2744 xml += offset + QString(
" <set_value>%1</set_value>").arg(tokens[1].
remove(
'"').trimmed());
2747 idx1 = tokens[2].indexOf(
"[");
2750 xml += offset + QString(
" <read_path>%1</read_path>").arg(tokens[2].
remove(
'"').trimmed());
2755 xml += offset + QString(
" <read_path>%1</read_path>").arg(sec.remove(
'"').trimmed());
2757 idx2 = tokens[2].indexOf(
"]", idx1);
2758 xml += offset + QString(
" <read_index>%1</read_index>").arg(tokens[2].mid(idx1+1,idx2-idx1-1));
2762 xml += offset + QString(
" <timeout>%1</timeout>").arg(tokens[3].trimmed());
2765 xml += offset + QString(
" <tolerance>%1</tolerance>").arg(tokens[4].trimmed());
2767 QString err = QString(
"**ERROR** Invalid ODB_SET_DATA command! Given number of parameters have to be 2 or 5 found %1").arg(tokens.count());
2772 xml += offset + QString(
" </setOdbData>");
2773 xml += offset + QString(
"</autoRunCmd>");
2792 xml += offset + QString(
"<autoRunCmd>");
2793 xml += offset + QString(
" <setOdbDataArray>");
2794 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2795 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2797 sec = line.section(
",", 0, 0);
2798 sec.remove(
"ODB_SET_DATA_ARRAY ");
2799 xml += offset + QString(
" <set_path>%1</set_path>").arg(sec.remove(
'"').trimmed());
2803 bool done =
false, ok;
2805 sec = str.section(
",", i, i);
2806 sec = sec.trimmed();
2807 if (sec.length() == 0) {
2812 xml += offset + QString(
" <set_value>%1</set_value>").arg(sec);
2815 QString err = QString(
"**ERROR** Invalid ODB_SET_DATA_ARRAY command! Currently only float arrays are supported.");
2822 xml += offset + QString(
" </setOdbDataArray>");
2823 xml += offset + QString(
"</autoRunCmd>");
2843 QString path = line.section(
' ', 2);
2844 int pos = path.indexOf(
"[");
2849 QString idxStr(
"-1");
2851 QString sstr = line.section(
' ', 2);
2852 int pos2 = sstr.indexOf(
"]");
2853 sstr.truncate(pos2);
2854 idxStr = sstr.right(pos2-pos-1);
2857 xml += offset + QString(
"<autoRunCmd>");
2858 xml += offset + QString(
" <odbTag>");
2859 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2860 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2861 xml += offset + QString(
" <label>%1</label>").arg(line.section(
' ', 1, 1));
2862 xml += offset + QString(
" <read_path>%1</read_path>").arg(path);
2863 xml += offset + QString(
" <read_index>%1</read_index>").arg(idxStr);
2864 xml += offset + QString(
" </odbTag>");
2865 xml += offset + QString(
"</autoRunCmd>");
2883 xml += offset + QString(
"<autoRunCmd>");
2884 xml += offset + QString(
" <setSampleHV>");
2885 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2886 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2887 xml += offset + QString(
" <hv_value>%1</hv_value>").arg(line.section(
' ', 1, 1));
2888 xml += offset + QString(
" </setSampleHV>");
2889 xml += offset + QString(
"</autoRunCmd>");
2914 tokens = str.split(
",", Qt::SkipEmptyParts);
2915 if ((tokens.count() != 2) && (tokens.count() != 4)) {
2916 QString err = QString(
"**ERROR** Invalid HV_RA command! Found %1 HV values: '%2' (2 or 4 required).").arg(tokens.count()).arg(str);
2921 xml += offset + QString(
"<autoRunCmd>");
2922 xml += offset + QString(
" <setRA_HV>");
2923 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2924 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2925 workStr = line.section(
' ', 1, 1);
2926 workStr = workStr.section(
',', 0, 0);
2927 workStr.remove(
",");
2928 xml += offset + QString(
" <hv_left>%1</hv_left>").arg(workStr.trimmed());
2929 workStr = str.section(
',', 1, 1);
2930 xml += offset + QString(
" <hv_right>%1</hv_right>").arg(workStr.trimmed());
2931 workStr = str.section(
',', 2, 2);
2932 if (!workStr.isNull()) {
2933 xml += offset + QString(
" <hv_top>%1</hv_top>").arg(workStr.trimmed());
2934 workStr = str.section(
',', 3, 3);
2935 xml += offset + QString(
" <hv_bottom>%1</hv_bottom>").arg(workStr.trimmed());
2937 xml += offset + QString(
" </setRA_HV>");
2938 xml += offset + QString(
"</autoRunCmd>");
2956 xml += offset + QString(
"<autoRunCmd>");
2957 xml += offset + QString(
" <setTransportHV>");
2958 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2959 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2960 xml += offset + QString(
" <transportHvSettingFileName>%1</transportHvSettingFileName>").arg(line.remove(
"TRANSPORT_HV "));
2961 xml += offset + QString(
" </setTransportHV>");
2962 xml += offset + QString(
"</autoRunCmd>");
2980 xml += offset + QString(
"<autoRunCmd>");
2981 xml += offset + QString(
" <setHVOff>");
2982 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2983 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2984 xml += offset + QString(
" <chamber>%1</chamber>").arg(line.remove(
"HV_OFF "));
2985 xml += offset + QString(
" </setHVOff>");
2986 xml += offset + QString(
"</autoRunCmd>");
3007 arg = line.section(
' ', 1, 1);
3008 if (!arg.contains(
"off")) {
3010 float fval = arg.toFloat(&ok);
3012 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! Argument is neither \"off\", nor a number between -90.0..+90.0.");
3016 if ((fval < -90.0) || (fval > 90.0)) {
3017 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! Argument is out of range (-90.0..+90.0), found %1.").arg(fval);
3023 xml += offset + QString(
"<autoRunCmd>");
3024 xml += offset + QString(
" <setSpinRot>");
3025 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3026 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3027 xml += offset + QString(
" <angle>%1</angle>").arg(line.section(
' ', 1, 1));
3028 QString noDegauss = line.section(
' ', 2, 2);
3029 if (arg.contains(
"off") && (noDegauss.indexOf(
"ndg", 0, Qt::CaseInsensitive) == 0)) {
3030 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! You cannot combine 'off' with 'ndg'").arg(noDegauss);
3034 if (!noDegauss.isEmpty()) {
3035 if (noDegauss.indexOf(
"ndg", 0, Qt::CaseInsensitive) == 0) {
3036 xml += offset + QString(
" <no_degauss>%1</no_degauss>").arg(noDegauss);
3038 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! Unkown 2nd argument '%1'. Allowed would be 'ndg'").arg(noDegauss);
3043 xml += offset + QString(
" </setSpinRot>");
3044 xml += offset + QString(
"</autoRunCmd>");
3064 xml += offset + QString(
"<autoRunCmd>");
3065 xml += offset + QString(
" <runStart>");
3066 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3067 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3068 xml += offset + QString(
" <no_events>%1</no_events>").arg((
int)line.section(
' ', 1, 1).toDouble());
3069 units = line.section(
' ', 2, 2);
3070 if (!units.isEmpty()) {
3071 xml += offset + QString(
" <units>%1</units>").arg(units);
3073 xml += offset + QString(
" </runStart>");
3074 xml += offset + QString(
"</autoRunCmd>");
3093 xml += offset + QString(
"<autoRunCmd>");
3094 xml += offset + QString(
" <runStop>");
3095 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3096 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3097 xml += offset + QString(
" <no_events>%1</no_events>").arg((
int)line.section(
' ', 1, 1).toDouble());
3098 units = line.section(
' ', 2, 2);
3099 if (!units.isEmpty()) {
3100 xml += offset + QString(
" <units>%1</units>").arg(units);
3102 xml += offset + QString(
" </runStop>");
3103 xml += offset + QString(
"</autoRunCmd>");
3122 xml += offset + QString(
"<autoRunCmd>");
3123 xml += offset + QString(
" <setTfl>");
3124 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3125 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3126 workStr = line.section(
' ', 1, 1);
3127 workStr = workStr.section(
',', 0, 0);
3128 workStr.remove(
",");
3129 xml += offset + QString(
" <tfl_pos>%1</tfl_pos>").arg(workStr);
3130 workStr = line.section(
',', 1, 1);
3131 workStr.remove(
",");
3132 xml += offset + QString(
" <tfl_mode>%1</tfl_mode>").arg(workStr.trimmed());
3133 xml += offset + QString(
" </setTfl>");
3134 xml += offset + QString(
"</autoRunCmd>");
3154 xml += offset + QString(
"<autoRunCmd>");
3155 xml += offset + QString(
" <setTemp>");
3156 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3157 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3158 workStr = line.section(
' ', 1, 1);
3159 workStr = workStr.section(
',', 0, 0);
3160 workStr.remove(
",");
3161 xml += offset + QString(
" <temp>%1</temp>").arg(workStr);
3162 workStr = line.section(
',', 1);
3163 if (workStr.contains(
",")>0) {
3164 workStr = line.section(
',', 1, 1);
3165 workStr.remove(
",");
3166 xml += offset + QString(
" <deltaT>%1</deltaT>").arg(workStr.trimmed());
3167 workStr = line.section(
',', 2, 2);
3168 workStr.remove(
",");
3169 xml += offset + QString(
" <stabilityTimeout>%1</stabilityTimeout>").arg(workStr.trimmed());
3170 workStr = line.section(
',', 3, 3);
3172 if (workStr.remove(
",").trimmed().length()>0) {
3173 xml += offset + QString(
" <ramp>%1</ramp>").arg(workStr.remove(
",").trimmed());
3175 workStr = line.section(
',', 4, 4);
3177 if (workStr.remove(
",").trimmed().length()>0) {
3178 xml += offset + QString(
" <heaterRange>%1</heaterRange>").arg(workStr.remove(
",").trimmed());
3180 workStr = line.section(
',', 5, 5);
3182 if (workStr.remove(
",").trimmed().length()>0) {
3183 xml += offset + QString(
" <P_PID>%1</P_PID>").arg(workStr.remove(
",").trimmed());
3185 workStr = line.section(
',', 6, 6);
3187 if (workStr.remove(
",").trimmed().length()>0) {
3188 xml += offset + QString(
" <I_PID>%1</I_PID>").arg(workStr.remove(
",").trimmed());
3190 workStr = line.section(
',', 7, 7);
3192 if (workStr.remove(
",").trimmed().length()>0) {
3193 xml += offset + QString(
" <D_PID>%1</D_PID>").arg(workStr.remove(
",").trimmed());
3195 workStr = line.section(
',', 8, 8);
3197 if (workStr.remove(
",").trimmed().length()>0) {
3198 xml += offset + QString(
" <flow>%1</flow>").arg(workStr.remove(
",").trimmed());
3201 xml += offset + QString(
" <deltaT>%1</deltaT>").arg(workStr.trimmed());
3203 xml += offset + QString(
" </setTemp>");
3204 xml += offset + QString(
"</autoRunCmd>");
3224 xml += offset + QString(
"<autoRunCmd>");
3225 xml += offset + QString(
" <setTitle>");
3226 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3227 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3228 xml += offset + QString(
" <title>%1</title>").arg(line.section(
' ', 1));
3230 if (line.contains(
"ODB_SAMPLE")>0)
3231 xml += offset + QString(
" <odb_sample>true</odb_sample>");
3233 xml += offset + QString(
" <odb_sample>false</odb_sample>");
3234 if (line.contains(
"ODB_TEMP")>0)
3235 xml += offset + QString(
" <odb_temp>true</odb_temp>");
3237 xml += offset + QString(
" <odb_temp>false</odb_temp>");
3238 if (line.contains(
"ODB_FIELD")>0)
3239 xml += offset + QString(
" <odb_field>true</odb_field>");
3241 xml += offset + QString(
" <odb_field>false</odb_field>");
3242 if (line.contains(
"ODB_TRANSP")>0)
3243 xml += offset + QString(
" <odb_transp>true</odb_transp>");
3245 xml += offset + QString(
" <odb_transp>false</odb_transp>");
3246 if (line.contains(
"ODB_HV_SAMP")>0)
3247 xml += offset + QString(
" <odb_hv_samp>true</odb_hv_samp>");
3249 xml += offset + QString(
" <odb_hv_samp>false</odb_hv_samp>");
3250 if (line.contains(
"ODB_ENERGY")>0)
3251 xml += offset + QString(
" <odb_energy>true</odb_energy>");
3253 xml += offset + QString(
" <odb_energy>false</odb_energy>");
3254 if (line.contains(
"ODB_RA_DIFF_LR")>0)
3255 xml += offset + QString(
" <odb_ra_diff_lr>true</odb_ra_diff_lr>");
3257 xml += offset + QString(
" <odb_ra_diff_lr>false</odb_ra_diff_lr>");
3258 if (line.contains(
"ODB_RA_DIFF_TB")>0)
3259 xml += offset + QString(
" <odb_ra_diff_tb>true</odb_ra_diff_tb>");
3261 xml += offset + QString(
" <odb_ra_diff_tb>false</odb_ra_diff_tb>");
3262 if (line.contains(
"ODB_SPIN_ROT")>0)
3263 xml += offset + QString(
" <odb_spin_rot>true</odb_spin_rot>");
3265 xml += offset + QString(
" <odb_spin_rot>false</odb_spin_rot>");
3266 xml += offset + QString(
" </setTitle>");
3267 xml += offset + QString(
"</autoRunCmd>");
3287 xml += offset + QString(
"<autoRunCmd>");
3288 xml += offset + QString(
" <setTOF>");
3289 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3290 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3291 workStr = line.section(
' ', 1, 1);
3292 workStr = workStr.section(
',', 0, 0);
3293 workStr.remove(
",");
3294 xml += offset + QString(
" <start>%1</start>").arg(workStr);
3295 xml += offset + QString(
" <stop>%1</stop>").arg(line.section(
',', 1, 1).trimmed());
3296 xml += offset + QString(
" </setTOF>");
3297 xml += offset + QString(
"</autoRunCmd>");
3315 xml += offset + QString(
"<autoRunCmd>");
3316 xml += offset + QString(
" <setWait>");
3317 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3318 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3319 xml += offset + QString(
" <wait>%1</wait>").arg(line.section(
' ', 1, 1, QString::SectionSkipEmpty));
3320 xml += offset + QString(
" </setWait>");
3321 xml += offset + QString(
"</autoRunCmd>");
3339 xml += offset + QString(
"<autoRunCmd>");
3340 xml += offset + QString(
" <warmUp>");
3341 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3342 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3343 xml += offset + QString(
" <date>%1</date>").arg(line.section(
' ', 1, 1).remove(
",").trimmed());
3344 xml += offset + QString(
" <time>%1</time>").arg(line.section(
',', 1, 1).trimmed());
3345 if (line.indexOf(
"vent") == -1) {
3346 xml += offset + QString(
" <vent>0</vent>");
3348 xml += offset + QString(
" <vent>1</vent>");
3350 xml += offset + QString(
" </warmUp>");
3351 xml += offset + QString(
"</autoRunCmd>");
3367 xml += offset + QString(
"<autoRunCmd>");
3368 xml += offset + QString(
" <degaussWEW>");
3369 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3370 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3371 xml += offset + QString(
" </degaussWEW>");
3372 xml += offset + QString(
"</autoRunCmd>");
3388 xml += offset + QString(
"<autoRunCmd>");
3389 xml += offset + QString(
" <degaussDanfysik>");
3390 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3391 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3392 xml += offset + QString(
" </degaussDanfysik>");
3393 xml += offset + QString(
"</autoRunCmd>");
3409 xml += offset + QString(
"<autoRunCmd>");
3410 xml += offset + QString(
" <degaussMagnet>");
3411 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3412 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3413 xml += offset + QString(
" </degaussMagnet>");
3414 xml += offset + QString(
"</autoRunCmd>");
3430 xml += offset + QString(
"<autoRunCmd>");
3431 xml += offset + QString(
" <degaussSpinRot>");
3432 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3433 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3434 xml += offset + QString(
" </degaussSpinRot>");
3435 xml += offset + QString(
"</autoRunCmd>");
3450 XMLPlatformUtils::Initialize();
3451 }
catch (
const XMLException &toCatch) {
3452 errorMsg = QString(
"XML xerces Error during initialization! Message:\n") +
3453 QString(XMLString::transcode(toCatch.getMessage()));
3458 SAX2XMLReader *parser = XMLReaderFactory::createXMLReader();
3460 parser->setFeature(XMLUni::fgSAX2CoreNameSpaces,
true);
3461 parser->setFeature(XMLUni::fgXercesSchema,
true);
3462 parser->setFeature(XMLUni::fgXercesSchemaFullChecking,
true);
3464 parser->setFeature(XMLUni::fgSAX2CoreValidation,
true);
3465 parser->setFeature(XMLUni::fgXercesDynamic,
true);
3469 parser->setContentHandler(&handler);
3470 parser->setErrorHandler(&handler);
3475 }
catch(
const OutOfMemoryException&) {
3476 errorMsg = QString(
"XML xerces: Out of Memory Exception!");
3478 }
catch(
const XMLException &e) {
3479 errorMsg = QString(
"Error during parsing in '") +
fXMLFileName +
3480 QString(
"', Exception message:\n") +
3481 QString(XMLString::transcode(e.getMessage()));
3484 errorMsg = QString(
"");
3495 XMLPlatformUtils::Terminate();
3498 PXMLParseErrorVector::iterator it;
void ConvertLoopTemp(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertField(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopFieldDanfysik(QString &str, int lineNo, QString &offset, QStringList &xml)
bool fFatalError
indicates an internal fatal error while parsing
int fCurrentUserLineNo
current line number of the user auto run sequence. Needed for error msg
void ConvertComment(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertDump(QString &str, int lineNo, QString &offset, QStringList &xml)
int lineNo
line number in the user auto run seqence where the error occured
QMap< QString, QString > fAlias
keep all alias
#define LAR_XML_INIT_ERROR
XML init error tag.
#define LAR_XML_ERROR
XML error tag (parsing)
void ConvertWait(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopField(QString &str, int lineNo, QString &offset, QStringList &xml)
QString fFlnAutoRunSeq
file name of the user auto run sequence
void ConvertSpinRot(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertTemp(QString &str, int lineNo, QString &offset, QStringList &xml)
void internalFatalError(QString &msg)
~PSAX2AutoRunParseHandler()
void ConvertTitle(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertFieldDanfysik(QString &str, int lineNo, QString &offset, QStringList &xml)
QVector< XMLParseError > PXMLParseErrorVector
void error(const SAXParseException &exc)
int noElements
number of parameters used for this command
int idx
ODB variable index. -1 means variable is not an array.
void ConvertWarmUp(QString &str, int lineNo, QString &offset, QStringList &xml)
QString param[LAR_MAX_PARAM]
parameter list of the command
void ParseError(int noOfErrors, int idx, int errorNo, int line, QString errorMsg)
void ConvertBPV(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertFieldWEWL(QString &str, int lineNo, QString &offset, QStringList &xml)
QString loopVal
value of a loop command. For non-loop commands it will be an empty string
EAutoRunKeyWords fKey
parse key selector for command parameters
#define LAR_INPUT_FILE_READ_ERROR
file read error tag
QString fXMLFileName
file name of the XML auto run sequence
void ConvertFOM(QString &str, int lineNo, QString &offset, QStringList &xml)
QString CheckForAlias(QString &str)
#define LAR_XML_EXCEPTION
XML exception error tag.
PAutoRunParser * fArp
pointer to the calling auto run parser
void ConvertDegaussDanfysik(QString &str, int lineNo, QString &offset, QStringList &xml)
QVector< AutoRunCmd > PAutoRunCmdVector
int errorCode
error code number defined in lemAutoRun.h
void ConvertSampleHV(QString &str, int lineNo, QString &offset, QStringList &xml)
void warning(const SAXParseException &exc)
void ConvertHVOff(QString &str, int lineNo, QString &offset, QStringList &xml)
void characters(const XMLCh *const chars, const XMLSize_t length)
int lineNo
line number from where in the user auto run sequence the command originates
#define LAR_INVALID_CMD
invalid cmd error tag
PAutoRunCmdVector * GetAutoRunCmdVector()
QString fInputFileName
file name of the user auto run sequence
void startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)
void ConvertIgnoreAlarms(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertTfl(QString &str, int lineNo, QString &offset, QStringList &xml)
PAutoRunParser::ConvertTfl.
void ConvertLoopFieldWEWL(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertFieldWEWH(QString &str, int lineNo, QString &offset, QStringList &xml)
int fParseErrorCounter
the number parse errors encountered before giving up
PAutoRunCmdVector * fAutoRunCmdVector
pointer to the expanded auto run command vector
PXMLLoopInfoVector fLoopInfoVector
vector needed to handling loop expansion
#define LAR_XML_OUT_OF_MEMORY
XML out of memory error tag.
#define LAR_XML_FATAL
XML fatal error tag (parsing)
QString odb_path
ODB path.
PSAX2AutoRunParseHandler(PAutoRunParser *arp)
void ConvertModerator(QString &str, int lineNo, QString &offset, QStringList &xml)
void fatalError(const SAXParseException &exc)
#define LAR_INPUT_FILE_NOT_EXISTING
file does not exist error tag
void ConvertOdbTag(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopFieldWEWH(QString &str, int lineNo, QString &offset, QStringList &xml)
POdbTagVector * fOdbTagVector
pointer to the vector of ODB tags
void ConvertDegaussSpinRot(QString &str, int lineNo, QString &offset, QStringList &xml)
PXMLParseErrorVector * fXMLParseErrorVector
vector holding all the parse error information
QString fAutoRunXMLSchemaPath
file name of the XML-schema
void ConvertDegaussWEW(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertOdbSetData(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_XML_WARNING
XML warning tag (parsing)
void ConvertTransportHV(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopList(QString &str, QString &offset, QStringList &xml)
void CheckOdbSetDataParamsStructure()
QVector< OdbTag > POdbTagVector
QString cmd
command name string
void ConvertRA_HV(QString &str, int lineNo, QString &offset, QStringList &xml)
PAutoRunParser(QString userAutoRunSeqFln, QString &schemaPath, QString &xmlFln, PAutoRunCmdVector *arcv, POdbTagVector *odbtagv)
void ConvertLoopEnd(QString &offset, QStringList &xml)
#define LAR_XML_UNEXPECTED_EXCEPTION
XML unexpected exception error tag.
AutoRunCmd fAutoRunCmd
single auto run command. Used as parsing variable before pushed into the fAutoRunCmdVector ...
void ConvertLoopIterator(QString &str, QString &offset, QStringList &xml)
void ConvertIgnoreClients(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertAlias(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_OUTPUT_FILE_WRITE_ERROR
output file write error tag
QString errorMsg
'clear text' error message. At the moment mostly comming from xerces
void ConvertStop(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLEMSetup(QString &str, int lineNo, QString &offset, QStringList &xml)
int fLoopNo
loop counter, needed for loops in loops ...
EAutoRunKeyWords fCmdKey
parse key selector for commands
void ConvertStart(QString &str, int lineNo, QString &offset, QStringList &xml)
PXMLParseErrorVector * GetXMLParseErrorVector()
void ConvertDegauss(QString &str, int lineNo, QString &offset, QStringList &xml)
void endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)
void ConvertLoopStart(int lineNo, QString &offset, QStringList &xml)
void ConvertTOF(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopSampleHV(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_MAX_PARAM
maximum number of parameters for an auto run cmd
QString cmdString
untouched original lar-cmd string
void ConvertOdbSetDataArray(QString &str, int lineNo, QString &offset, QStringList &xml)
OdbTag fOdbTag
single ODB tag element.