2

I'm trying to decode .PLW data acquired by a temperature logger (PicoLog PT-104).

If you convert the .PLW file to a .txt file through the official software you get something like this:

enter image description here

where each row has single temperature measurements across the 20 channels available to the device. I would like to extract the data directly from the .PLW, file without having to convert it to .txt first.

By opening the .PLW file in a hex editor, I have managed to isolate with a bit of tweaking the section which seems to contain the raw data measurements:

hex_dump

The first 4 hexes contain the row index. And should be read in the reversed column order 03 02 01 00.

There are then the 20 groups of 4 columns, one for each channel. Assuming all groups should be read right to left (given that was the case for the index columns), they all seem to begin with 0x41 which might maybe be some kind of encoding for the tab character (or similar).

The next hex in each chunk (so the one just before the 0x41) seems to be mapping at least to some approximate way the temperature read in that channel:

  • Hex -> TEMP
  • 0x50 -> 13
  • 0xa0, 0xa1, 0xa2, 0xa3 -> 20
  • 0xa4, 0xa5, 0xaa, 0xab -> 21
  • 0xac, 0xae, 0xb0 -> 22

And the order of the channels also seems to match the order of the columns in the .txt file: for example channel 8 in the .txt file has an outlier temperature at 13 --> which is also present in the 8th data column in the .PLW file, where the temperature hex is set to 0x50

Would anyone be able to crack the mapping between the hex values in each chunk to the final temperature measurement displayed in the .txt file?

Or does anyone know of an encoding where 0x41 would correspond to a tab-like character? Thanks!

4

The data are floating point encoded on 32 bits Little_endian
byte 0 to 3: 00 00 00 00 = 0 channel number
byte 4 to 7: 1f 85 a3 41 = 0x41a3851f = 20.4400005341
etc ..
https://www.h-schmidt.net/FloatConverter/IEEE754.html

2
  • Thank you very much! Just for the record, bytes 0 to 3 are the measurement index number. The following 20 * 4-byte encoded values are the temperature values from each channel. Thanks again Gordon! – Alvise Dec 1 '20 at 14:43
  • I would be very interested to get my hands on a couple of these .PLW files. Could you post a couple or point to a good resource? – pythonpython Dec 2 '20 at 6:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.