Campbell Scientific IRGASON IRGASON Integrated CO2/H2O Open-Path Gas Analyzer - Page 34
Analog Outputs
View all Campbell Scientific IRGASON manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 34 highlights
IRGASON® Integrated CO2/H2O Open-Path Gas Analyzer and 3D Sonic Anemometer The final data element in each row or output array is the signature. The signature is a four character hexadecimal value that is a function of the sequence and number of bytes in the output array. The recording device (i.e., PC or datalogger) calculates its own signature using each transmitted byte until encountering the transmitted signature. The computed signature and the transmitted signature are compared. If they match, the data were received correctly. This is very similar to a cyclic redundancy check (CRC). In most situations, a PC begins by reading the ASCII data and extracting the last four ASCII characters and casting them as Long data type. The signature is then calculated on the science data sent from the IRGASON, starting with CO2 and ending on the counter. All the characters after the counter are not part of the signature. Once the signature is computed using the following algorithm, it is compared to the transmitted signature. If signatures do not match, the data should be disregarded. Following is an example implementation of Campbell Scientific's signature algorithm in the programming language C. To generate the signature of an output array of bytes, the "seed" needs to be initialized to 0xaaaa and a pointer passed to the first byte of the output array. The number of bytes in the output array should be entered in as the "swath". The returned value is the computed signature. //signature(), signature algorithm. // Standard signature is initialized with a seed of 0xaaaa. // Returns signature. unsigned short signature( unsigned char* buf, int swath, unsigned short seed ) { unsigned char msb, lsb; unsigned char b; int i; msb = seed >> 8; lsb = seed; for( i = 0; i < swath; i++ ) { b = (lsb