LOGR53 Record Format - Firmware Version 2.50 or later - 06 Apr 2006
The current record format provides for storage of data at each 1 minute sample interval. 64 bytes binary are currently stored per record in fixed format. (Note that this will likely change in the future). Storage is based upon a 'C' language structure shown here:
/* LOGR 64 byte packed data record structure for storage in FLASH */
struct LOGR_record
{
unsigned char hour; /* time is not packed for ease of verifying */
unsigned char min;
unsigned char day;
unsigned char mon;
unsigned char year; /* year is offset from 2000 (no good after year 2255 :-) */
unsigned short record; /* sequential record number from startup */
unsigned char mux_parm; /* which option parameter in this record */
short we,wn; /* wind speed m/sec */
/* (short)(we * 100) ==> +/- 327.67 m/s */
/* (short)(wn * 100) ==> +/- 327.67 m/s */
unsigned short wsavg,wmax,wmin; /* (ushort)(wsavg * 100) ==> 0 - 655.35 m/s */
/* (ushort)(wmax * 100) ==> 0 - 655.35 m/s */
/* (ushort)(wmin * 100) ==> 0 - 655.35 m/s */
short vdavg,compass; /* last vane degrees, last compass degrees */
/* (short)(vdavg * 10) ==> +/- 3276.7 degrees */
/* (short)(compass * 10) ==> +/- 3276.7 degrees */
unsigned short bp; /* barometer millibars */
/* (ushort)((bp - 900.0) * 100) ==> 900.00 - 1555.35 mbar */
short rh; /* humidity %, deg C */
/* (short)(rh * 100) ==> +/- 327.67 %RH */
unsigned short th; /* (ushort)((th + 20.0) * 1000) ==> -20.000 to +45.535 degC */
short sr; /* short wave w/m^2 */
/* (ushort)(sr * 10) ==> +/- 3276.7 w/m^2 */
unsigned short dome,body; /* long wave dome and body thermistors
deg Kelvin, thermopile microvolts */
/* (ushort)(dome * 100) ==> 0 - 655.35 degK */
/* (ushort)(body * 100) ==> 0 - 655.35 degK */
short tpile; /* (short)(tpile * 10) ==> +/- 3276.7 microvolts */
short lwflux; /* lwr flux */
/* (short)(lwflux * 10) ==> +/-3276.7 w/m^2 */
short prlev; /* precipitation values */
/* (short)(prlev * 100) ==> +/-327.67 mm */
unsigned short sct; /* SeaCat sea temp deg C */
/* (ushort)((sct + 5.0) * 1000) ==> -5.000 to +60.535 degC */
unsigned short scc; /* SeaCat conductivity Siemens */
/* (ushort)(scc * 10000) ==> 0.000 to +6.5535 Siemens/meter */
short bat1,bat2,bat3,bat4; /* misc. battery */
/* (short)(bat1 * 1000) ==> +/- 32.767 VDC */
unsigned long opt_parm; /* optional value indicated in mux_parm */
unsigned short spare1,spare2,spare3; /* optional spare value */
unsigned short used; /* set to 0xA5A5 upon record write */
};
Records may be dumped via XMODE command (very slow!) or by directly reading
the removable FLASH storage card in a Linux-based PC.
A typical 64 byte binary record looks something like this (in HEX-ASCII):
0A222D150707CE01........841A0604FE0C3E247F4500F07F45A5A5
Wow! So now what!
First, note the following:
All integers are 2 bytes, stored MS byte first.
From the structures above, note that time is stored first, so:
0A22150700 is time as follows:
A sequential record number is kept from power up - possibly useful for untangling problem data records with bad time ?? (may be eliminated in future software versions)
Refer to the 'C' structure above for position and packing of each 2-byte integer data value (remember, MS byte first)
These bytes are used to indicate that a record in FLASH storage has been written by the LOGR53. It is used internally by the instrument firmware to, for example, determine the next available record location upon power-up. These bytes should always be A5A5h in a used record, and FFFFh in an unused portion of the FLASH card.