Fluke 189 protocol undocumented commands. See also here for the document part and for the notes on the names of the other commands, which got me started: http://www.cfa.harvard.edu/~thunter/manufacturers.html More information, maybe, at http://www.consistent.org/fluke-189/ QD 0 response: Fixed string of "0\rQD,", five bytes. All locations will be taken AFTER this. Location Bytes Meaning 0 4 Time stamp in units of 0.1s 4 4 Primary display value. 8 1 # places to shift decimal point in primary value 9 1 Units. -1 for milli, 1 for kilo, etc. 10 4 Secondary reading. 14 1 # places to shift decimal point in secondary value 15 1 Units as above. 16 4 Tertiary reading. 20 4 Repeat of timestamp 24 4 Repeat of primary reading 28 1 Repeat of primary scale 29 1 Repeat of primary unknown 30 12 Function unknown. Presumably knob setting, etc. All numerical values are little-endian. Values with 0x70 in the high byte indicate that the value is not in use or that there is some kind of error. The low byte indicates what kind. 0x01 is for unused; other values indicate overflow, missing leads, etc. Otherwise they are 2s complement numbers. Units indicate the prefix. -3 is nano, -2 is micro, -1 is milli, 1 is kilo, 2 is mega, etc. The only use I have ever seen for the tertiary reading is the log # when in logging mode. QD 2 response: If there ARE NO logs, response of "5\r". Otherwise, fixed string of "0\rQD,", five bytes. All locations will be taken AFTER this. There is then an 18-byte header, which appears only once at the beginning. I know little about it, but presumably it includes information about the knob setting, etc. Location Bytes Meaning 0 2 ? 2 4 Initial value 6 1 Decimal point location for initial value 7 1 Units, as in other places 8 10 Setting information, as in QD0 starting at byte 30 The information about the setting is only partially understood. Then there are 32 bytes of repeating information: Location Bytes Meaning 0 4 Beginning timestamp for entry in units of 0.1s 4 1 Decimal point location 5 1 Units. -1 for milli, 1 for kilo, etc. 6 4 Lowest value for this time period 10 4 Maximum value for this time period 14 4 Actual value, sum of N 18 4 ?, always all 0 in my tests 22 4 Number of values which were summed 26 1 Status - 0x05 for normal, 0x85 for last entry, other values for range changes or other oddities 27 1 ? - always 0x01 in my tests 28 4 Ending timestamp for this entry Generally, the readings are taken equally distributed over the time period, so the value will be an average. However, in cases of significant changes part way through, I have seen the meter use some heuristic to split it into separate entries sooner than the specified time period to capture this. In the case of a sharp voltage increase, I saw the first part (low value) have status 0x04, the short middle one with the fast increase had 0x08, and the final one had 0x05. The value displayed on the meter matched what I got by summing the actual values from the three and then dividing that by the sum of the number of readings from the three. QS response: This work thanks to Mr. Christian Holl. As above, all locations taken *after* the standard response, at the beginning of the binary data. Location Bytes Meaning 0 2 Logging interval 2 1 DB Ref type (1=V, 0=mV) 3 1 Unknown 4 2 DB Reference setting (default 600, 0x5802) 6 2 Temperature offset 8 1 Scale (0=Fahrenheit, 1=Celcius) 9 1 Unknown (always 00) 10 2 Backlight off time, deciseconds 12 4 Time of day 16 2 Power off time, minutes 18 1 Frequency setting, 0=50hz 1=60hz 19 1 Unknown (always 0) 20 1 Digits setting (0=5 digits, 1=4 digits) 21 1 Unknown (always 0) 22 1 Beep setting (0=off, 1=on) 23 6 Unknown (always 0x00 90 01 c0 00 00)