James Brooks, 5/20/2010, Revision 0 This file is a COM port sniffer session record during Vaisala MI70 Link (SW) communication with Vaisala HM70 instrument/HMP70 probe. Key: Yellow = Send Green = Receive Blue = Notes Serial Port Settings: Termination: \n, (LF, &H0A, ASC(10)) Timeout: 100 ms Baud: 19200 (default is 9600) Data bits: 8 Parity: none Stop bits: 1 Flow control: Xon/Xoff Communication: 1.) Loop send [SUB][CR] up to 200 times. Monitor receive register. Received data always ends with [SUB]. ÿ<CR> ...loop <=200 times &H255+&H13 to get HM70 attention... ÿ<CR> <CR><LF> line opened for operator commands<BEL><CR><LF> 0><SUB> 2.) Send “echo off” command to disable copy of sent data to receive buffer. ECHO OFF<CR> ...disable COM port echo <CR> ECHO OFF<CR><LF> Echo is:<HT>OFF<CR><LF> <SUB> 3.) Get instrument and sensor model numbers. VERS<CR> ...get instrument & sensor model numbers MI70 2.05<CR><LF> HMP70<STX>Bc<SOH> 3.09<CR><LF> <SUB> 4.) Get instrument and sensor serial numbers. SNUM<CR> ...get instrument & sensor serial numbers Serial nr:<HT>C3610021<CR><LF> Probe snr:<HT>C3140010<CR><LF> <SUB> 5.) Get sensor last calibration date & by who. CAL<CR> ...query calibration data Probe cal:<HT>8/17/2007 (Vaisala/HEL)<CR><LF> <SUB> 6.) Close communications with instrument. EXIT<CR> ...close communications line closed<CR><LF> James Brooks, 5/20/2010, Revision 0 7.) Get or Set instrument measurement configuration. Commands: UNIT[CR] (reads current measurement status) UNIT X X X X X X X X X X X X [CR] (sets measurement status, see table below) Response: place:/option: (Option 0 means measurement is disabled, value after 2nd tab is current setting, only three (3) can be active at a time.) place 1 option 1 place 2 option 2 place 3 option 3 place 4 option 4 place 5 option 5 place 6 option 6 place 7 option 7 place 8 option 8 place 9 option 9 place 10 option 10 place 11 option 11 place 12 option 12 RH[TAB]RH[TAB]1[TAB]%[CR][LF] 1 T[TAB]T[TAB]1[TAB]°C[TAB]°F[CR][LF] 1 2 T[02]d/f[01][TAB]T[02]d/f[01][TAB]0[TAB]°C[TAB]°F[CR][LF] 1 2 T[02]d[01][TAB]T[02]d[01][TAB]0[TAB]°C[TAB]°F[CR][LF] 1 2 a[TAB]a[TAB]0[TAB]g/m³[TAB]gr/ft³[CR][LF] 1 2 x[TAB]x[TAB]0[TAB]g/kg[TAB]gr/lb[CR][LF] 1 2 Tw[TAB]Tw[TAB]0[TAB]°C[TAB]°F[CR][LF] 1 2 H[02]2[01]O[TAB]H[02]2[01]O[TAB]0[TAB]ppm[CR][LF] 1 pw[TAB]pw[TAB]0[TAB]hPa[TAB]psi[CR][LF] 1 2 pws[TAB]pws[TAB]0[TAB]hPa[TAB]psi[CR][LF] 1 2 h[TAB]h[TAB]0[TAB]kJ/kg[TAB]Btu/lb[CR][LF] 1 2 a[02]w[01][TAB]a[02]w[01][TAB]0[TAB][A0][CR][LF] 1 Position 1 2 3 4 5 6 7 8 9 10 11 12 UNIT Command Table: Command Option 0 RH (Relative Humidity) Off T (Temperature) Off Td/f (Frostpoint Temperature) Off Td (Dewpoint Temperature) Off a (absolute humidity) Off x (mixing ratio) Off Tw (wet-bulb temperature) Off H (humid air volume/dry air volume) Off pw (vapor pressure) Off pws (saturated vapor pressure) Off h (enthalpy [heat content]) Off aw (water activity) Off Option 1 % Celsius Celsius Celsius g/m³ g/kg Celsius ppm hPa hPa kJ/kg unitless Option 2 N/A Fahrenheit Fahrenheit Fahrenheit gr/ft³ gr/lb Fahrenheit N/A psi psi Btu/lb N/A James Brooks, 5/20/2010, Revision 0 UNIT Command Examples: UNIT<CR> ...get configuration settings (in this case: RH %, T °F, x gr/lb) RH<HT>RH<HT>1<HT>%<CR><LF> T<HT>T<HT>2<HT>°C<HT>°F<CR><LF> T<STX>d/f<SOH><HT>T<STX>d/f<SOH><HT>0<HT>°C<HT>°F<CR><LF> T<STX>d<SOH><HT>T<STX>d<SOH><HT>0<HT>°C<HT>°F<CR><LF> a<HT>a<HT>0<HT>g/m³<HT>gr/ft³<CR><LF> x<HT>x<HT>2<HT>g/kg<HT>gr/lb<CR><LF> Tw<HT>Tw<HT>0<HT>°C<HT>°F<CR><LF> H<STX>2<SOH>O<HT>H<STX>2<SOH>O<HT>0<HT>ppm<CR><LF> pw<HT>pw<HT>0<HT>hPa<HT>psi<CR><LF> pws<HT>pws<HT>0<HT>hPa<HT>psi<CR><LF> h<HT>h<HT>0<HT>kJ/kg<HT>Btu/lb<CR><LF> a<STX>w<SOH><HT>a<STX>w<SOH><HT>0<HT> <CR><LF> <SUB> UNIT 1 1 0 0 0 1 0 0 0 0 0 0 <CR> ...set configuration settings (in this case: RH %, T °C, x g/kg) RH<HT>RH<HT>1<HT>%<CR><LF> T<HT>T<HT>1<HT>°C<HT>°F<CR><LF> T<STX>d/f<SOH><HT>T<STX>d/f<SOH><HT>0<HT>°C<HT>°F<CR><LF> T<STX>d<SOH><HT>T<STX>d<SOH><HT>0<HT>°C<HT>°F<CR><LF> a<HT>a<HT>0<HT>g/m³<HT>gr/ft³<CR><LF> x<HT>x<HT>1<HT>g/kg<HT>gr/lb<CR><LF> Tw<HT>Tw<HT>0<HT>°C<HT>°F<CR><LF> H<STX>2<SOH>O<HT>H<STX>2<SOH>O<HT>0<HT>ppm<CR><LF> pw<HT>pw<HT>0<HT>hPa<HT>psi<CR><LF> pws<HT>pws<HT>0<HT>hPa<HT>psi<CR><LF> h<HT>h<HT>0<HT>kJ/kg<HT>Btu/lb<CR><LF> a<STX>w<SOH><HT>a<STX>w<SOH><HT>0<HT> <CR><LF> <SUB> 9.) Set MI70 date/time. This command is used to synchronize MI70 date/time with PC date/time. TIME 10 5 10 14 46 0<CR> ...set MI70 date/time, yy mm dd HH mm ss <SUB> 10.) Set measurement interval. SEND 60<CR> ...set for 60 second measurement interval, starts & returns first data 1<HT>RH<HT>T<HT>x<CR><LF> <HT>%<HT>°C<HT>g/kg<CR><LF> 10-05-10 13:50:24<HT>18.60<HT>23.44<HT>3.33<HT><CR><LF> <SUB> SEND 5<CR> ...set for 5 second measurement interval, returns first data 2<HT>RH<HT>T<HT>x<CR><LF> <HT>%<HT>°F<HT>gr/lb<CR><LF> 10-05-10 13:52:50<HT>18.60<HT>74.15<HT>23.29<HT><CR><LF> 10-05-10 13:52:55<HT>18.59<HT>74.13<HT>23.26<HT><CR><LF> <SUB> 11.) Get measurement results. Send every measurement period. SEND<CR> ...get periodic reading 10-05-10 13:51:24<HT>18.59<HT>23.41<HT>3.32<HT><CR><LF> <SUB> James Brooks, 5/20/2010, Revision 0 12.) Full Example. 12.1.) Initialize & get model/serial number & sensor calibration data. ÿ<CR> ...loop <=200 times &H255+&H13 to get HM70 attention... ÿ<CR> <CR><LF> line opened for operator commands<BEL><CR><LF> 0><SUB> ECHO OFF<CR> ...disable COM port echo <CR> ECHO OFF<CR><LF> Echo is:<HT>OFF<CR><LF> <SUB> VERS<CR> ...get instrument & sensor model numbers MI70 2.05<CR><LF> HMP70<STX>Bc<SOH> 3.09<CR><LF> <SUB> SNUM<CR> ...get instrument & sensor serial numbers Serial nr:<HT>C3610021<CR><LF> Probe snr:<HT>C3140010<CR><LF> <SUB> CAL<CR>...query calibration data Probe cal:<HT>8/17/2007 (Vaisala/HEL)<CR><LF> <SUB> EXIT<CR> ...close communications line closed<CR><LF> 12.2.) Initialize & set instrument measurement settings. ÿ<CR> ...loop <=200 times &H255+&H13 to get HM70 attention... ÿ<CR> <CR><LF> line opened for operator commands<BEL><CR><LF> 0><SUB> ECHO OFF<CR> ...disable COM port echo <CR> ECHO OFF<CR><LF> Echo is:<HT>OFF<CR><LF> <SUB> UNIT 1 2 0 0 0 2 0 0 0 0 0 0 <CR> ...set configuration settings RH<HT>RH<HT>1<HT>%<CR><LF> T<HT>T<HT>2<HT>°C<HT>°F<CR><LF> T<STX>d/f<SOH><HT>T<STX>d/f<SOH><HT>0<HT>°C<HT>°F<CR><LF> T<STX>d<SOH><HT>T<STX>d<SOH><HT>0<HT>°C<HT>°F<CR><LF> a<HT>a<HT>0<HT>g/m³<HT>gr/ft³<CR><LF> x<HT>x<HT>2<HT>g/kg<HT>gr/lb<CR><LF> Tw<HT>Tw<HT>0<HT>°C<HT>°F<CR><LF> H<STX>2<SOH>O<HT>H<STX>2<SOH>O<HT>0<HT>ppm<CR><LF> pw<HT>pw<HT>0<HT>hPa<HT>psi<CR><LF> pws<HT>pws<HT>0<HT>hPa<HT>psi<CR><LF> h<HT>h<HT>0<HT>kJ/kg<HT>Btu/lb<CR><LF> a<STX>w<SOH><HT>a<STX>w<SOH><HT>0<HT> <CR><LF> <SUB> EXIT<CR> ...close communications line closed<CR><LF> James Brooks, 5/20/2010, Revision 0 12.3.) Initialize & start measurement, get periodic measurement data, stop measurement. ÿ<CR> ...loop <=200 times &H255+&H13 to get HM70 attention... ÿ<CR> <CR><LF> line opened for operator commands<BEL><CR><LF> 0><SUB> ECHO OFF<CR> ...disable COM port echo <CR> ECHO OFF<CR><LF> Echo is:<HT>OFF<CR><LF> <SUB> TIME 10 5 10 14 47 57<CR> ...measurement start date/time, yy mm dd HH mm ss <SUB> SEND 5<CR> ...set for 5 second measurement interval 2<HT>RH<HT>T<HT>x<CR><LF> <HT>%<HT>°F<HT>gr/lb<CR><LF> 10-05-10 13:52:50<HT>18.60<HT>74.15<HT>23.29<HT><CR><LF> 10-05-10 13:52:55<HT>18.59<HT>74.13<HT>23.26<HT><CR><LF> <SUB> SEND<CR> ...get periodic reading 10-05-10 13:53:00<HT>18.59<HT>74.13<HT>23.27<HT><CR><LF> <SUB> SEND<CR> ...get periodic reading 10-05-10 13:53:05<HT>18.59<HT>74.13<HT>23.27<HT><CR><LF> <SUB> SEND<CR> ...get periodic reading 10-05-10 13:53:10<HT>18.60<HT>74.14<HT>23.29<HT><CR><LF> <SUB> SEND<CR> ...get periodic reading 10-05-10 13:53:15<HT>18.58<HT>74.15<HT>23.27<HT><CR><LF> <SUB> EXIT<CR> ...close communications line closed<CR><LF> 13.) List of saved files in MI70 memory. List of files is zero-based, listed in order of newest first. Below represents file #0, #1 and #2. If a new recording is initiated, then it will replace file #0 and the existing file numbers will increment by +1. DIR<CR> ...get list of files in MI70 memory 5/20/2010 1:31<ETX>PM<SOH><HT>10-05-20 13:31:09<HT>1<HT>0801<CR><LF> 5/20/2010 1:25<ETX>PM<SOH><HT>10-05-20 13:25:42<HT>80<HT>040F<CR><LF> 5/20/2010 1:18<ETX>PM<SOH><HT>10-05-20 13:18:51<HT>19<HT>0205<CR><LF> <SUB> James Brooks, 5/20/2010, Revision 0 14.) Download file from MI70 memory. Below downloads data from file #0. 14.1.) First line is date/time [TAB] date/time [TAB] # of data points [TAB] 2-byte hex, first 2 digits represent interval unit of measure (02=seconds, 04=minutes, 08=hours), second 2 digits represent interval timing (&H05=DEC5, &H0F=DEC15, &H01=DEC1). Example: “040F”=15 minute measurement increment. 14.2.) Second and third lines show what is being measured, and the unit of measure. RH in % and Temperature in °C in this case. 14.3.) Remainder is the measured data points for the indicated file. PLAY 0<CR> ...download data from file #0 in MI70 memory 5/19/2010 12:45<ETX>PM<SOH><HT>10-05-19 12:45:29<HT>40<HT>040F<CR><LF> <HT>RH<HT>T<CR><LF> <HT>%<HT>°C<CR><LF> 10-05-19 12:45:29<HT>89.31<HT>84.26<HT><CR><LF> 10-05-19 13:00:29<HT>79.93<HT>87.14<HT><CR><LF> 10-05-19 13:15:29<HT>79.70<HT>87.20<HT><CR><LF> 10-05-19 13:30:29<HT>79.58<HT>87.23<HT><CR><LF> 10-05-19 13:45:29<HT>79.56<HT>87.20<HT><CR><LF> 10-05-19 14:00:29<HT>79.54<HT>87.21<HT><CR><LF> 10-05-19 14:15:29<HT>79.61<HT>87.21<HT><CR><LF> 10-05-19 14:30:29<HT>79.64<HT>87.17<HT><CR><LF> 10-05-19 14:45:29<HT>79.58<HT>87.16<HT><CR><LF> 10-05-19 15:00:29<HT>79.60<HT>87.17<HT><CR><LF> 10-05-19 15:15:29<HT>79.61<HT>87.17<HT><CR><LF> 10-05-19 15:30:29<HT>79.47<HT>87.17<HT><CR><LF> 10-05-19 15:45:29<HT>79.43<HT>87.19<HT><CR><LF> 10-05-19 16:00:29<HT>84.33<HT>85.20<HT><CR><LF> 10-05-19 16:15:29<HT>84.50<HT>85.16<HT><CR><LF> 10-05-19 16:30:29<HT>84.60<HT>85.21<HT><CR><LF> 10-05-19 16:45:29<HT>84.53<HT>85.22<HT><CR><LF> 10-05-19 17:00:29<HT>84.55<HT>85.23<HT><CR><LF> 10-05-19 17:15:29<HT>84.74<HT>85.23<HT><CR><LF> 10-05-19 17:30:29<HT>84.76<HT>85.23<HT><CR><LF> 10-05-19 17:45:29<HT>84.77<HT>85.24<HT><CR><LF> 10-05-19 18:00:29<HT>85.02<HT>85.23<HT><CR><LF> 10-05-19 18:15:29<HT>84.97<HT>85.24<HT><CR><LF> 10-05-19 18:30:29<HT>85.02<HT>85.24<HT><CR><LF> 10-05-19 18:45:29<HT>85.13<HT>85.23<HT><CR><LF> 10-05-19 19:00:29<HT>85.07<HT>85.25<HT><CR><LF> 10-05-19 19:15:29<HT>85.10<HT>85.23<HT><CR><LF> 10-05-19 19:30:29<HT>85.09<HT>85.24<HT><CR><LF> 10-05-19 19:45:29<HT>85.17<HT>85.24<HT><CR><LF> 10-05-19 20:00:29<HT>85.07<HT>85.25<HT><CR><LF> 10-05-19 20:15:29<HT>85.17<HT>85.26<HT><CR><LF> 10-05-19 20:30:29<HT>85.16<HT>85.25<HT><CR><LF> 10-05-19 20:45:29<HT>85.21<HT>85.26<HT><CR><LF> 10-05-19 21:00:29<HT>85.15<HT>85.25<HT><CR><LF> 10-05-19 21:15:29<HT>85.25<HT>85.25<HT><CR><LF> 10-05-19 21:30:29<HT>85.35<HT>85.22<HT><CR><LF> 10-05-19 21:45:29<HT>85.33<HT>85.24<HT><CR><LF> 10-05-19 22:00:29<HT>85.39<HT>85.21<HT><CR><LF> 10-05-19 22:15:29<HT>85.30<HT>85.24<HT><CR><LF> 10-05-19 22:30:29<HT>85.40<HT>85.24<HT><CR><LF> <SUB> James Brooks, 5/20/2010, Revision 0 15.) Delete file from MI70 memory. Below deletes file #0. DEL 0<CR> ...delete file #0 from MI70 memory OK<CR><LF> <SUB>