Campbell Scientific CSAT3B CSAT3B Three-Dimensional Sonic Anemometer - Page 59
unsigned short signature unsigned char* buf, int swath, unsigned short seed
![]() |
View all Campbell Scientific CSAT3B manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 59 highlights
CSAT3B Three-Dimensional Sonic Anemometer NOTE The final data field in each record is the signature, a four character hexadecimal value that is a function of the specific sequence and number of bytes in the output array. The PC may calculate its own signature using each transmitted byte until reaching the signature data field. 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). Signature checking is done automatically by a datalogger when using SMD or CPI communications and does not require extra programming by the user. In most situations, a PC computes the signature by reading in the ASCII data and extracting the last four ASCII characters, casting them as Long data type. The signature is then calculated on the data sent from the CSAT3B, starting with ux and ending with the counter. All the characters after the counter are not part of the signature. Once the signature is computed using the algorithm below, it is compared to the transmitted signature. If signatures do not match, the data should be disregarded. The following block of code 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
![](/manual_guide/products/campbell-scientific-csat3b-csat3b-threedimensional-sonic-anemometer-61e7b42/59.png)