-
Notifications
You must be signed in to change notification settings - Fork 31
YSIBinaryFormat
YSI do not provide details on the format of the binary files retrieved from their 6-series instruments. This page details my attempts to reverse engineer the file format. This information is based on a file retrieved from a 6600 V2.4 instrument.
Available Sensors for this instrument : -Temperature, -Conductivity, -Dissolved Oxygen (ROX Optical), -pH, -ORP, -Depth (shallow, medium, deep, shallow vented). -Four total optical sensors (ROX Optical DO, Turbidity, Chlorophyll, Rhodamine WT, BGA-PC, or BGA-PE).
The file consists of a header, followed by a variable number of records.
NOTE: The following description is an assumption which is based on a single sample data file; this description may be rendered obsolete when I receive more data files to play with.
The header begins with 111 bytes; I am not sure what these bytes contain - there doesn't seem to be anything useful.
This section is followed by a list of the elements contained in the records which follow the header. Time is always the first element in each record, and is always present. Each entry in the list is 15 bytes, and begins with 0x42
. The fourth byte indicates the element type, as listed below. All other bytes in these 15 byte fields are 0.
ID | Field |
---|---|
N/A | Time (Seconds since 1 March 1984 00:00:00) |
0x01 |
Temperature (Degrees Celsius) |
0x04 |
Cond (mS/cm) |
0x06 |
SpCond (mS/cm) |
0x0A |
Total Dissolved Solids (g/L) |
0x0C |
Salinity (ppt) |
0x12 |
pH |
0x13 |
Oxidation Reduction Potential (mV) |
0x16 |
Depth (m) |
0x18 |
BP (psi) |
0x1C |
Battery (V) |
0xC1 |
Chlorophyll (ug/L) |
0xC2 |
Chlorophyll RFU |
0xC4 |
Latitude |
0xC5 |
Longitude |
0xCB |
Turbidity (NTU) |
0xD3 |
Dissolved Oxygen (% saturation) |
0xD4 |
Dissolved Oxygen (mg/L) from previous value |
NOTE This description is specific to the single data file I have at my disposal; this description will likely change when I acquire more files.
Each record is (N+1)*4 + 1
bytes in length, where N
is the number of elements in each record (as defined in the header). The contents of each record is identical. Each element is a floating point value, except for time, which is a 32 bit unsigned integer. Each record starts with a synchronisation byte of 0x44
. Time is always the first element in each record. All multi-byte fields are stored least significant byte first.
Offset | Length | Description | Type | Note |
---|---|---|---|---|
0 | 1 | Sync byte | uint8 | 0x44 |
1 | 4 | Time | uint32 | Seconds since 1 March 1984 00:00:00 |
5 | 2 | Temperature | float | Degrees Celsius |
8 | 2 | Cond | float | mS/cm |
10 | 2 | SpCond | float | mS/cm |
14 | 2 | TDS | float | g/L |
16 | 2 | Salinity | float | ppt |
22 | 2 | pH | float | |
23 | 2 | ORP | float | mV |
26 | 2 | Depth | float | m |
28 | 2 | BP | float | psi |
32 | 2 | Battery | float | V |
197 | 2 | Chlorophyll | float | ug/L |
198 | 2 | Chlorophyll | float | RFU |
200 | 2 | Latitude | float | |
201 | 2 | Longitude | float | |
207 | 2 | Turbidity | float | NTU+ |
215 | 2 | ODO | float | % |
216 | 2 | ODO Conc | float | mg/L |