mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-06 10:00:40 +02:00
changed detector header version to detector specific field names and incremented version number, also for zmq (#574)
This commit is contained in:
parent
f108ec82ea
commit
4bb1a612f1
@ -125,6 +125,8 @@ This document describes the differences between v7.0.0 and v6.x.x
|
||||
- fixed error messages of readregister inconsistent values
|
||||
- setmodule and read frame was returning fail without setting error messages (leading to broken tcp connection due to no error message) )
|
||||
- gui nios temperature added
|
||||
- detector header change (bunchid, reserved, debug, roundRnumber) ->detSpec1 - 4
|
||||
|
||||
|
||||
2. Resolved Issues
|
||||
==================
|
||||
|
@ -55,6 +55,9 @@ set(SPHINX_SOURCE_FILES
|
||||
src/troubleshooting.rst
|
||||
src/receivers.rst
|
||||
src/slsreceiver.rst
|
||||
src/udpheader.rst
|
||||
src/udpconfig.rst
|
||||
src/udpdetspec.rst
|
||||
)
|
||||
|
||||
foreach(filename ${SPHINX_SOURCE_FILES})
|
||||
|
@ -66,6 +66,15 @@ Welcome to slsDetectorPackage's documentation!
|
||||
virtualserver
|
||||
serverdefaults
|
||||
|
||||
|
||||
.. toctree::
|
||||
:caption: Detector UDP Header
|
||||
:maxdepth: 2
|
||||
|
||||
udpheader
|
||||
udpconfig
|
||||
udpdetspec
|
||||
|
||||
.. toctree::
|
||||
:caption: Receiver
|
||||
:maxdepth: 2
|
||||
|
@ -4,41 +4,8 @@ Receivers
|
||||
Receiver processes can be run on same or different machines as the client, receives the data from the detector (via UDP packets).
|
||||
When using the slsReceiver/ slsMultiReceiver, they can be further configured by the client control software (via TCP/IP) to set file name, file path, progress of acquisition etc.
|
||||
|
||||
Detector UDP Header
|
||||
---------------------
|
||||
|
||||
| The UDP data format for the packets consist of a common header for all detectors, followed by the data for that one packet.
|
||||
|
||||
**The SLS Detector Header**
|
||||
|
||||
.. table:: <-------------------------------- 8 bytes -------------------------------->
|
||||
:align: center
|
||||
:widths: 30,30,30,30
|
||||
|
||||
+--------------------------------------------------------------------+
|
||||
|frameNumber |
|
||||
+---------------------------------+----------------------------------+
|
||||
|expLength |packetNumber |
|
||||
+---------------------------------+----------------------------------+
|
||||
|bunchId |
|
||||
+--------------------------------------------------------------------+
|
||||
|timestamp |
|
||||
+----------------+----------------+----------------+-----------------+
|
||||
|modId |row |column |reserved |
|
||||
+----------------+----------------+----------------+--------+--------+
|
||||
|debug |roundRNumber |detType |version |
|
||||
+---------------------------------+----------------+--------+--------+
|
||||
|
||||
UDP configuration in Config file
|
||||
----------------------------------
|
||||
|
||||
#. UDP source port is hardcoded in detector server, starting at 32410.
|
||||
#. **udp_dstport** : UDP destination port number. Port in receiver pc to listen to packets from the detector.
|
||||
#. **udp_dstip** : IP address of UDP destination interface. IP address of interface in receiver pc to listen to packets from detector. If **auto** is used (only when using slsReceiver/ slsMultiReceiver), the IP of **rx_hostname** is picked up.
|
||||
#. **udp_dstmac** : Mac address of UDP destination interface. MAC address of interface in receiver pc to list to packets from detector. Only required when using custom receiver, else slsReceiver/slsMultiReceiver picks it up from **udp_dstip**.
|
||||
#. **udp_srcip** : IP address of UDP source interface. IP address of detector UDP interface to send packets from. Do not use for Eiger 1Gb interface (uses its hardware IP). For others, must be in the same subnet as **udp_dstip**.
|
||||
#. **udp_srcmac** : MAC address of UDP source interface. MAC address of detector UDP interface to send packets from. Do not use for Eiger (uses hardware mac). For others, it is not necessary, but can help for switch and debugging to put unique values for each module.
|
||||
|
||||
To know more about detector receiver configuration, please check out :ref:`detector udp header and udp commands in the config file <detector udp header>`
|
||||
|
||||
Custom Receiver
|
||||
----------------
|
||||
|
@ -1,5 +1,14 @@
|
||||
Detector Servers
|
||||
=================
|
||||
Getting Started
|
||||
===============
|
||||
|
||||
Detector Servers include:
|
||||
* Control server [default port: 1952]
|
||||
* Almost all client communication.
|
||||
* Stop server [default port: 1953]
|
||||
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
|
||||
|
||||
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
|
||||
|
||||
|
||||
Location
|
||||
---------
|
||||
@ -24,17 +33,6 @@ Arguments
|
||||
-s, --stopserver : Stop server. Do not use as it is created by control server
|
||||
|
||||
|
||||
Basics
|
||||
------------
|
||||
|
||||
Detector Servers include:
|
||||
* Control server [default port: 1952]
|
||||
* Almost all client communication.
|
||||
* Stop server [default port: 1953]
|
||||
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
|
||||
|
||||
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
|
||||
|
||||
|
||||
.. _Automatic start servers:
|
||||
Automatic start
|
||||
|
@ -1,6 +1,6 @@
|
||||
.. _Detector Server Upgrade:
|
||||
Detector Server Upgrade
|
||||
=======================
|
||||
Upgrade
|
||||
========
|
||||
|
||||
|
||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
||||
@ -14,7 +14,7 @@ Detector Server Upgrade
|
||||
Eiger requires a manual reboot. Or killall the servers and restart the new linked one. If you are in the process of updating firmware, then don't reboot yet.
|
||||
|
||||
|
||||
From 6.1.1 and above (no tftp required)
|
||||
6.1.1+ (no tftp required)
|
||||
---------------------------------------
|
||||
|
||||
#. Program from console
|
||||
@ -60,7 +60,7 @@ Troubleshooting with tftp
|
||||
#. text file busy: You are trying to copy the same server.
|
||||
|
||||
|
||||
Older than 5.0.0
|
||||
-----------------
|
||||
< 5.0.0
|
||||
--------
|
||||
|
||||
Please contact us.
|
33
docs/src/udpconfig.rst
Normal file
33
docs/src/udpconfig.rst
Normal file
@ -0,0 +1,33 @@
|
||||
.. _detector udp header:
|
||||
|
||||
|
||||
Config file
|
||||
============
|
||||
|
||||
Commands to configure the UDP in the config file:
|
||||
|
||||
Source Port
|
||||
-----------
|
||||
Hardcoded in detector server, starting at 32410.
|
||||
|
||||
udp_srcip - Source IP
|
||||
---------------------
|
||||
IP address of detector UDP interface to send packets from. Do not use for Eiger 1Gb interface (uses its hardware IP). For others, must be in the same subnet as **udp_dstip**.
|
||||
|
||||
udp_srcmac - Source MAC
|
||||
-----------------------
|
||||
MAC address of detector UDP interface to send packets from. Do not use for Eiger (uses hardware mac). For others, it is not necessary, but can help for switch and debugging to put unique values for each module.
|
||||
|
||||
|
||||
udp_dstport - Desintation Port
|
||||
-------------------------------
|
||||
Port in receiver pc to listen to packets from the detector.
|
||||
|
||||
udp_dstip - Destination IP
|
||||
--------------------------
|
||||
IP address of interface in receiver pc to listen to packets from detector. If **auto** is used (only when using slsReceiver/ slsMultiReceiver), the IP of **rx_hostname** is picked up.
|
||||
|
||||
udp_dstmac - Destination MAC
|
||||
----------------------------
|
||||
MAC address of interface in receiver pc to list to packets from detector. Only required when using custom receiver, else slsReceiver/slsMultiReceiver picks it up from **udp_dstip**.
|
||||
|
19
docs/src/udpdetspec.rst
Normal file
19
docs/src/udpdetspec.rst
Normal file
@ -0,0 +1,19 @@
|
||||
Detector Specific Fields
|
||||
========================
|
||||
|
||||
Eiger
|
||||
-----
|
||||
|
||||
.. table::
|
||||
|
||||
+----------+------------------------------+
|
||||
| detSpec1 | 0x0 |
|
||||
+----------+------------------------------+
|
||||
| detSpec2 | 0x0 |
|
||||
+----------+------------------------------+
|
||||
| detSpec3 | e14a |
|
||||
+----------+------------------------------+
|
||||
| detSpec4 | Round Robin Interface Number |
|
||||
+----------+------------------------------+
|
||||
|
||||
|
75
docs/src/udpheader.rst
Normal file
75
docs/src/udpheader.rst
Normal file
@ -0,0 +1,75 @@
|
||||
.. _detector udp header:
|
||||
|
||||
Format
|
||||
=======
|
||||
|
||||
The UDP data format for the packets consist of a common header for all detectors, followed by the data for that one packet.
|
||||
|
||||
|
||||
Current Version
|
||||
---------------------------
|
||||
|
||||
**v3.0 (slsDetectorPackage v7.0.0+)**
|
||||
|
||||
.. table:: <---------------------------------------------------- 8 bytes ---------------------------------------------------->
|
||||
:align: center
|
||||
:widths: 30,30,30,15,15
|
||||
|
||||
+---------------------------------------------------------------+
|
||||
| frameNumber |
|
||||
+-------------------------------+-------------------------------+
|
||||
| expLength | packetNumber |
|
||||
+-------------------------------+-------------------------------+
|
||||
| **detSpec1** |
|
||||
+---------------------------------------------------------------+
|
||||
| timestamp |
|
||||
+---------------+---------------+---------------+---------------+
|
||||
| modId | row | column | **detSpec2** |
|
||||
+---------------+---------------+---------------+-------+-------+
|
||||
| **detSpec3** | **detSpec4** |detType|version|
|
||||
+-------------------------------+---------------+-------+-------+
|
||||
|
||||
|
||||
Previous Versions
|
||||
-----------------
|
||||
**v2.0 (Package v4.0.0 - 6.x.x)**
|
||||
|
||||
.. table:: <---------------------------------------------------- 8 bytes ---------------------------------------------------->
|
||||
:align: center
|
||||
:widths: 30,30,30,15,15
|
||||
|
||||
+---------------------------------------------------------------+
|
||||
| frameNumber |
|
||||
+-------------------------------+-------------------------------+
|
||||
| expLength | packetNumber |
|
||||
+-------------------------------+-------------------------------+
|
||||
| bunchid |
|
||||
+---------------------------------------------------------------+
|
||||
| timestamp |
|
||||
+---------------+---------------+---------------+---------------+
|
||||
| modId | **row** | **column** | **reserved** |
|
||||
+---------------+---------------+---------------+-------+-------+
|
||||
| debug | roundRNumber |detType|version|
|
||||
+-------------------------------+---------------+-------+-------+
|
||||
|
||||
|
||||
**v1.0 (Package v3.0.0 - 3.1.5)**
|
||||
|
||||
.. table:: <---------------------------------------------------- 8 bytes ---------------------------------------------------->
|
||||
:align: center
|
||||
:widths: 30,30,30,15,15
|
||||
|
||||
+---------------------------------------------------------------+
|
||||
| frameNumber |
|
||||
+-------------------------------+-------------------------------+
|
||||
| expLength | packetNumber |
|
||||
+-------------------------------+-------------------------------+
|
||||
| bunchid |
|
||||
+---------------------------------------------------------------+
|
||||
| timestamp |
|
||||
+---------------+---------------+---------------+---------------+
|
||||
| modId | xCoord | yCoord | zCoord |
|
||||
+---------------+---------------+---------------+-------+-------+
|
||||
| debug | roundRNumber |detType|version|
|
||||
+-------------------------------+---------------+-------+-------+
|
||||
|
@ -1,6 +1,6 @@
|
||||
.. _Virtual Detector Servers:
|
||||
Detector Simulators
|
||||
===================
|
||||
Simulators
|
||||
===========
|
||||
|
||||
Compilation
|
||||
-----------
|
||||
|
2
docs/static/extra.css
vendored
2
docs/static/extra.css
vendored
@ -1,4 +1,4 @@
|
||||
/* override table no-wrap */
|
||||
.wy-table-responsive table td, .wy-table-responsive table th {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
|
@ -228,14 +228,14 @@ int DataStreamer::SendDataHeader(sls_detector_header header, uint32_t size,
|
||||
zHeader.frameNumber = header.frameNumber;
|
||||
zHeader.expLength = header.expLength;
|
||||
zHeader.packetNumber = header.packetNumber;
|
||||
zHeader.bunchId = header.bunchId;
|
||||
zHeader.detSpec1 = header.detSpec1;
|
||||
zHeader.timestamp = header.timestamp;
|
||||
zHeader.modId = header.modId;
|
||||
zHeader.row = header.row;
|
||||
zHeader.column = header.column;
|
||||
zHeader.reserved = header.reserved;
|
||||
zHeader.debug = header.debug;
|
||||
zHeader.roundRNumber = header.roundRNumber;
|
||||
zHeader.detSpec2 = header.detSpec2;
|
||||
zHeader.detSpec3 = header.detSpec3;
|
||||
zHeader.detSpec4 = header.detSpec4;
|
||||
zHeader.detType = header.detType;
|
||||
zHeader.version = header.version;
|
||||
zHeader.flipRows = static_cast<int>(flipRows);
|
||||
|
@ -482,7 +482,7 @@ void Listener::CopyPacket(char *dst, char *src, uint32_t dataSize,
|
||||
sizeof(sls_detector_header));
|
||||
} else {
|
||||
dstHeader.detHeader.frameNumber = currentFrameIndex;
|
||||
dstHeader.detHeader.bunchId = bnum;
|
||||
dstHeader.detHeader.detSpec1 = bnum;
|
||||
dstHeader.detHeader.row = row;
|
||||
dstHeader.detHeader.column = column;
|
||||
dstHeader.detHeader.detType =
|
||||
|
@ -78,18 +78,18 @@ void GetData(slsDetectorDefs::sls_receiver_header &header, char *dataPointer,
|
||||
PRINT_IN_COLOR(
|
||||
detectorHeader.modId ? detectorHeader.modId : detectorHeader.row,
|
||||
"#### %d %d GetData: ####\n"
|
||||
"frameNumber: %lu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %lu"
|
||||
"frameNumber: %lu\t\texpLength: %u\t\tpacketNumber: %u\t\tdetSpec1: %lu"
|
||||
"\t\ttimestamp: %lu\t\tmodId: %u\t\t"
|
||||
"row: %u\t\tcolumn: %u\t\treserved: %u\t\tdebug: %u"
|
||||
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
|
||||
"row: %u\t\tcolumn: %u\t\tdetSpec2: %u\t\tdetSpec3: %u"
|
||||
"\t\tdetSpec4: %u\t\tdetType: %u\t\tversion: %u"
|
||||
//"\t\tpacketsMask:%s"
|
||||
"\t\tfirstbytedata: 0x%x\t\tdatsize: %zu\n\n",
|
||||
detectorHeader.column, detectorHeader.row,
|
||||
(long unsigned int)detectorHeader.frameNumber, detectorHeader.expLength,
|
||||
detectorHeader.packetNumber, (long unsigned int)detectorHeader.bunchId,
|
||||
detectorHeader.packetNumber, (long unsigned int)detectorHeader.detSpec1,
|
||||
(long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
|
||||
detectorHeader.row, detectorHeader.column, detectorHeader.reserved,
|
||||
detectorHeader.debug, detectorHeader.roundRNumber,
|
||||
detectorHeader.row, detectorHeader.column, detectorHeader.detSpec2,
|
||||
detectorHeader.detSpec3, detectorHeader.detSpec4,
|
||||
detectorHeader.detType, detectorHeader.version,
|
||||
// header->packetsMask.to_string().c_str(),
|
||||
((uint8_t)(*((uint8_t *)(dataPointer)))), imageSize);
|
||||
@ -108,20 +108,19 @@ void GetData(slsDetectorDefs::sls_receiver_header &header, char *dataPointer,
|
||||
|
||||
PRINT_IN_COLOR(
|
||||
detectorHeader.modId ? detectorHeader.modId : detectorHeader.row,
|
||||
"#### %d GetData: ####\n"
|
||||
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: "
|
||||
"%llu"
|
||||
"\t\ttimestamp: %llu\t\tmodId: %u\t\t"
|
||||
"row: %u\t\tcolumn: %u\t\treserved: %u\t\tdebug: %u"
|
||||
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
|
||||
"#### %d %d GetData: ####\n"
|
||||
"frameNumber: %lu\t\texpLength: %u\t\tpacketNumber: %u\t\tdetSpec1: %lu"
|
||||
"\t\ttimestamp: %lu\t\tmodId: %u\t\t"
|
||||
"row: %u\t\tcolumn: %u\t\tdetSpec2: %u\t\tdetSpec3: %u"
|
||||
"\t\tdetSpec4: %u\t\tdetType: %u\t\tversion: %u"
|
||||
//"\t\tpacketsMask:%s"
|
||||
"\t\tfirstbytedata: 0x%x\t\tdatsize: %zu\n\n",
|
||||
detectorHeader.row, (long long unsigned int)detectorHeader.frameNumber,
|
||||
detectorHeader.expLength, detectorHeader.packetNumber,
|
||||
(long long unsigned int)detectorHeader.bunchId,
|
||||
(long long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
|
||||
detectorHeader.row, detectorHeader.column, detectorHeader.reserved,
|
||||
detectorHeader.debug, detectorHeader.roundRNumber,
|
||||
detectorHeader.column, detectorHeader.row,
|
||||
(long unsigned int)detectorHeader.frameNumber, detectorHeader.expLength,
|
||||
detectorHeader.packetNumber, (long unsigned int)detectorHeader.detSpec1,
|
||||
(long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
|
||||
detectorHeader.row, detectorHeader.column, detectorHeader.detSpec2,
|
||||
detectorHeader.detSpec3, detectorHeader.detSpec4,
|
||||
detectorHeader.detType, detectorHeader.version,
|
||||
// header->packetsMask.to_string().c_str(),
|
||||
*reinterpret_cast<uint8_t *>(dataPointer), modifiedImageSize);
|
||||
|
@ -60,14 +60,14 @@ struct zmqHeader {
|
||||
uint64_t frameNumber{0};
|
||||
uint32_t expLength{0};
|
||||
uint32_t packetNumber{0};
|
||||
uint64_t bunchId{0};
|
||||
uint64_t detSpec1{0};
|
||||
uint64_t timestamp{0};
|
||||
uint16_t modId{0};
|
||||
uint16_t row{0};
|
||||
uint16_t column{0};
|
||||
uint16_t reserved{0};
|
||||
uint32_t debug{0};
|
||||
uint16_t roundRNumber{0};
|
||||
uint16_t detSpec2{0};
|
||||
uint32_t detSpec3{0};
|
||||
uint16_t detSpec4{0};
|
||||
uint8_t detType{0};
|
||||
uint8_t version{0};
|
||||
/** if rows of image should be flipped */
|
||||
|
@ -45,8 +45,8 @@
|
||||
|
||||
#define MAX_UDP_DESTINATION 32
|
||||
|
||||
#define SLS_DETECTOR_HEADER_VERSION 0x2
|
||||
#define SLS_DETECTOR_JSON_HEADER_VERSION 0x4
|
||||
#define SLS_DETECTOR_HEADER_VERSION 0x3
|
||||
#define SLS_DETECTOR_JSON_HEADER_VERSION 0x5
|
||||
|
||||
// ctb/ moench 1g udp (read from fifo)
|
||||
#define UDP_PACKET_DATA_BYTES (1344)
|
||||
@ -113,19 +113,20 @@ class slsDetectorDefs {
|
||||
|
||||
/**
|
||||
@short structure for a Detector Packet or Image Header
|
||||
Details at https://slsdetectorgroup.github.io/devdoc/udpheader.html
|
||||
@li frameNumber is the frame number
|
||||
@li expLength is the subframe number (32 bit eiger) or real time
|
||||
exposure time in 100ns (others)
|
||||
@li packetNumber is the packet number
|
||||
@li bunchId is the bunch id from beamline
|
||||
@li detSpec1 is detector specific field 1
|
||||
@li timestamp is the time stamp with 10 MHz clock
|
||||
@li modId is the unique module id (unique even for left, right, top,
|
||||
bottom)
|
||||
@li row is the row index in the complete detector system
|
||||
@li column is the column index in the complete detector system
|
||||
@li reserved is reserved
|
||||
@li debug is for debugging purposes
|
||||
@li roundRNumber is the round robin set number
|
||||
@li detSpec2 is detector specific field 2
|
||||
@li detSpec3 is detector specific field 3
|
||||
@li detSpec4 is detector specific field 4
|
||||
@li detType is the detector type see :: detectorType
|
||||
@li version is the version number of this structure format
|
||||
*/
|
||||
@ -134,14 +135,14 @@ class slsDetectorDefs {
|
||||
uint64_t frameNumber;
|
||||
uint32_t expLength;
|
||||
uint32_t packetNumber;
|
||||
uint64_t bunchId;
|
||||
uint64_t detSpec1;
|
||||
uint64_t timestamp;
|
||||
uint16_t modId;
|
||||
uint16_t row;
|
||||
uint16_t column;
|
||||
uint16_t reserved;
|
||||
uint32_t debug;
|
||||
uint16_t roundRNumber;
|
||||
uint16_t detSpec2;
|
||||
uint32_t detSpec3;
|
||||
uint16_t detSpec4;
|
||||
uint8_t detType;
|
||||
uint8_t version;
|
||||
} sls_detector_header;
|
||||
|
@ -148,13 +148,13 @@ int ZmqSocket::SendHeader(int index, zmqHeader header) {
|
||||
<< ", \"frameNumber\":" << header.frameNumber
|
||||
<< ", \"expLength\":" << header.expLength
|
||||
<< ", \"packetNumber\":" << header.packetNumber
|
||||
<< ", \"bunchId\":" << header.bunchId
|
||||
<< ", \"detSpec1\":" << header.detSpec1
|
||||
<< ", \"timestamp\":" << header.timestamp
|
||||
<< ", \"modId\":" << header.modId << ", \"row\":" << header.row
|
||||
<< ", \"column\":" << header.column
|
||||
<< ", \"reserved\":" << header.reserved
|
||||
<< ", \"debug\":" << header.debug
|
||||
<< ", \"roundRNumber\":" << header.roundRNumber
|
||||
<< ", \"detSpec2\":" << header.detSpec2
|
||||
<< ", \"detSpec3\":" << header.detSpec3
|
||||
<< ", \"detSpec4\":" << header.detSpec4
|
||||
<< ", \"detType\":" << static_cast<int>(header.detType)
|
||||
<< ", \"version\":"
|
||||
<< static_cast<int>(header.version)
|
||||
@ -270,14 +270,14 @@ int ZmqSocket::ParseHeader(const int index, int length, char *buff,
|
||||
zHeader.frameNumber = document["frameNumber"].GetUint64();
|
||||
zHeader.expLength = document["expLength"].GetUint();
|
||||
zHeader.packetNumber = document["packetNumber"].GetUint();
|
||||
zHeader.bunchId = document["bunchId"].GetUint64();
|
||||
zHeader.detSpec1 = document["detSpec1"].GetUint64();
|
||||
zHeader.timestamp = document["timestamp"].GetUint64();
|
||||
zHeader.modId = document["modId"].GetUint();
|
||||
zHeader.row = document["row"].GetUint();
|
||||
zHeader.column = document["column"].GetUint();
|
||||
zHeader.reserved = document["reserved"].GetUint();
|
||||
zHeader.debug = document["debug"].GetUint();
|
||||
zHeader.roundRNumber = document["roundRNumber"].GetUint();
|
||||
zHeader.detSpec2 = document["detSpec2"].GetUint();
|
||||
zHeader.detSpec3 = document["detSpec3"].GetUint();
|
||||
zHeader.detSpec4 = document["detSpec4"].GetUint();
|
||||
zHeader.detType = document["detType"].GetUint();
|
||||
zHeader.version = document["version"].GetUint();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user