/************************************************************************/ /* Function : print_metsys */ /* Purpose : Print data stream as ascii stream */ /* Inputs : Sensor, Length, Boolean to strip CR & LF */ /* Outputs : None */ /************************************************************************/ Void print_metsys( char *buffer, Int len) { char *p; int index, n; double value; double variation = 15.1; Metsys metsys; double fields[MAX_MET_FIELDS]; buffer[len] = '\0'; for( index = 0; index < MAX_MET_FIELDS; index++ ) fields[index] = 0.0; n = 0; while( sscanf(&buffer[n], " %d%f&n", &index, &value, &n) >= 2 ) fields[index] = value; metsys.arr_type = (int)(fields[1]); metsys.day = (int)(fields[2]); metsys.hr = (int)(fields[3]) / 100; metsys.min = (int)(fields[3]) % 100; metsys.batt_volt = fields[4]; metsys.air = fields[5]; metsys.rh = fields[6]; metsys.baro_press = fields[7]; metsys.windspd = fields[8]; metsys.winddir = fields[9]; if ( metsys.arr_type < 402 ) { metsys.buoy_heading = fields[10]; metsys.rel_winddir = fields[11]; metsys.sound_velocity = fields[12]; } else { metsys.altwindspd = fields[10]; metsys.altwinddir = fields[11]; metsys.buoy_heading = fields[13]; metsys.rel_winddir = fields[14]; metsys.sound_velocity = fields[15]; } switch (metsys.arr_type) { case 402: metsys.altwinddir = metsys.altwinddir + variation; while ( metsys.altwinddir >= 360.0 ) metsys.altwinddir -= 360.0; /* Note fall-through */ case 303: case 304: case 400: case 401: metsys.winddir = metsys.winddir + variation; while ( metsys.winddir >= 360.0 ) metsys.winddir -= 360.0; metsys.baro_press += 800; break; } metsys.windu = -metsys.windspd*sin(metsys.winddir*PI/180.0); metsys.windv = -metsys.windspd*cos(metsys.winddir*PI/180.0); if ( metsys.arr_type != 402 ) { print_sensor(sensor, "%9.5f %d %d %d %d %6.2f %6.2f %5.1f %6.1f %7.3f %6.2f %6.2f %6.2f %6.2f %6.2f", dtime, metsys.arr_type, metsys.day, metsys.hr, metsys.min, metsys.batt_volt, metsys.air, metsys.rh, metsys.baro_press, metsys.windspd, metsys.winddir, metsys.windu, metsys.windv, metsys.buoy_heading, metsys.rel_winddir); if ( (metsys.arr_type == 400) || (metsys.arr_type == 401) ) print_sensor(sensor, " %6.2f\n", metsys.sound_velocity ); else print_sensor(sensor, "\n"); } else print_sensor(sensor, "%9.5f %d %d %d %d %6.2f %6.2f %5.1f %6.1f %7.3f %6.2f %6.2f %6.2f %6.2f %6.2f", dtime, metsys.arr_type, metsys.day, metsys.hr, metsys.min, metsys.batt_volt, metsys.air, metsys.rh, metsys.baro_press, metsys.windspd, metsys.winddir, metsys.altwindspd, metsys.altwinddir, metsys.buoy_heading, metsys.rel_winddir, metsys.sound_velocity); } /* print_metsys() */