I need to pick a programming tool to plot some measurement data in real time. The data is transmitted from an instrument to a PC via Ethernet. Every second a new file is created on the PC HDD to store 1 second of data. The files are labeled data0, data1, etc..
Here's an example of some data:
and here's a quick look at a few bytes of data in hex:
00 AA AA AA AA AA AA 00 00 1F 1C 00 1F D4 00 1F 78 00 1F 7C 00 1F D2 00 1F 24 00 1F A0 00 20 12 00 20 34 00 20 2E 00 1F C6 00 20 7C 00 1F CA 00 1F F4 00 1F BE 00 20 74 00 9B B4 00 52 78 00 62 64 00 42 68 00 A3 CC 00 F3 CC 00 42 6E 00 90 98 01 10 72 00 5E 8E 00 83 A8 00 4F 7C 00 6A 90 00 51 48 00 7A F4 08 AD 68 00 FF FF FF FF FF FF 00 00 1E CC 00 1E AC 00 1F 60 00 1F 2A 00 1E FA 00 1F 12 00 1F 72 00 1F 54 00 1F 58 00 1F 3C 00 1E C6 00 1E CC 00 1E F6 00 1F 0C 00 1F 0E 00 1E F6 00 74 00 00 2D D4 00 19 88 00 73 68 00 93 86 01 1A 66 00 49 5E 00 3E B0 01 97 60 00 53 30 00 9D D2 00 20 78 00 2B 54 00 3F 0E 00 BD DA 0E 05 5A 00 FF FF FF FF FF FF 00 00 1D B8 00 1E 3E 00 1E 38 00 1E 62 00 1D E2 00 1D EE 00 1E 86 00 1E A4 00 1E D8 00 1E DA 00 1E 78 00 1E 56 00 1E 9E 00 1E AE 00 1E 72 00 1F 58 00 61 90 00 15 38 00 00 00 00 66 7C 00 7F CC 00 C8 74 00 74 9E 00 29 F8 01 9C D6 00 4F 86 00 9F 9C 00 00 00 00 1E 70 00 3D B2 01 2A AC 0E 09 64 00 FF FF FF FF FF FF 00The data is organized in blocks. Each block contains 32 measurements of
20 bits each, with each 20 bit value allocated 3 bytes. The start of each block is delimited by hex 00 FF FF FF FF FF FF 00. 64 such blocks make up a complete data set. The beginning of a complete data set is delimited by hex 00 AA AA AA AA AA AA 00. Each second of data (i.e. each file) contains 5 complete data sets.A single plotted data point consists of a linear combination (additions and subtractions only) of a subset of the 20 bit values in a complete data set. Each of these subsets contains 128 20 bit values, and there are 32 possible data points, i.e. there can be up to 32 traces to plot, so that is up to 4096 additions/subtractions per complete data set. Since there are 5 of these per second, that's about 20.5k adds/subtracts per second to produce the 160 plotted data points per second.
Ideally, I would like to plot up to 32 traces on a scrolling chart(s) in real time (i.e. at 5 points per second per trace).
The states of the program might look something like this:
- configure which traces to plot and length of time axis
- wait until data0 file is available
- calculate linear combinations and extend plot traces
- autoscale y axis
- wait until next data file is available and loop to step 1.
I'll probably want to add a simple digital filter later.
So, does anyone have a suggestion about what would be a good tool to use to make the plots program? I'm not an experienced PC programmer, but would be willing to invest some time learning tools if I thought they would be useful in the future. I'll need to distribute the program to off-site users, so making a .exe is preferred, but not an absolute requirement.