Post by msteffes on Apr 19, 2018 15:49:24 GMT -5
Hello All,
Total transparency, I am a programming tinkerer and my periodic adventures in code are likely quite clunky to the code gurus out there. I feel better already.
I am looking for input on a project I have inflicted upon myself. As a field Tech I am hoping to have a diagnostic tool for analyzing RS485 traffic capture files but I am not overly confident about how to tackle this effort.
The traffic is simple poll and response. The capture files are csv and can be huge. A recent capture I collected was a 350Meg file holding about 4 million records. Initially I am starting with a more modest file size of about 100k records.
My plan was to load this into an array which after a bit of fumbling I have working. It is rather slow about 9 seconds after parsing. I would like this to be faster but I have bigger binary fish to fry.
I would like the first version of this project to show a window on the left side of the screen displaying a section of records from the array, say 20-30 line. The data could scroll up or down to reveal fresh data into the screen. Also a highlighted line would serve to represent one record that would have detail data on the right side broken down into several Hex byte fields. This would show changing bit status.
I would like two modes
1) The highlight can be walked up and down through the records by the arrow keys or mouse wheel to slowly update the detail on the right side.
2) An animated mode where a modest speed range can be adjusted to advance through the records while the right side continues to show the bit changes.
I was considering using radio buttons for my bit indicators but do not want get to far ahead and box myself into a slow interface. But I will to defer to the experience out there to steer me in the right direction on the following.
I assume huge files are best chunked to make it more appetizing to Liberty basic?
How to load the data more quickly to the array or some other approach.
How best to accomplish the scrolling data window.
And how do efficiently convert and display the bit data.
I would also like a Golden chicken that lays talking eggs.
Here is an example of some data. .
="18:04:25.455",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.487",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.503",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.535",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.550",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.582",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.598",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.630",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.662",PIM status carddata response from WAPM 7 to PIM command,="0A",="FF",="31",="0A",="07",="00",="00",="14",="00",="1A",="D0",="CD",="44",="40",="70"
="18:04:25.726",WAPM 7 timed unlock command,="0A",="07",="56",="02",="03",="00",="9E"
="18:04:25.742",WAPM response to WAPM command,="0A",="FF",="30",="03",="00",="00",="14",="BA"
="18:04:25.823",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.823",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.902",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.919",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.999",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:26.031",PIM status change response from WAPM 7 to PIM command,="0A",="FF",="31",="05",="07",="00",="00",="94",="00",="30"
="18:04:26.111",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:26.111",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:26.175",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
Total transparency, I am a programming tinkerer and my periodic adventures in code are likely quite clunky to the code gurus out there. I feel better already.
I am looking for input on a project I have inflicted upon myself. As a field Tech I am hoping to have a diagnostic tool for analyzing RS485 traffic capture files but I am not overly confident about how to tackle this effort.
The traffic is simple poll and response. The capture files are csv and can be huge. A recent capture I collected was a 350Meg file holding about 4 million records. Initially I am starting with a more modest file size of about 100k records.
My plan was to load this into an array which after a bit of fumbling I have working. It is rather slow about 9 seconds after parsing. I would like this to be faster but I have bigger binary fish to fry.
I would like the first version of this project to show a window on the left side of the screen displaying a section of records from the array, say 20-30 line. The data could scroll up or down to reveal fresh data into the screen. Also a highlighted line would serve to represent one record that would have detail data on the right side broken down into several Hex byte fields. This would show changing bit status.
I would like two modes
1) The highlight can be walked up and down through the records by the arrow keys or mouse wheel to slowly update the detail on the right side.
2) An animated mode where a modest speed range can be adjusted to advance through the records while the right side continues to show the bit changes.
I was considering using radio buttons for my bit indicators but do not want get to far ahead and box myself into a slow interface. But I will to defer to the experience out there to steer me in the right direction on the following.
I assume huge files are best chunked to make it more appetizing to Liberty basic?
How to load the data more quickly to the array or some other approach.
How best to accomplish the scrolling data window.
And how do efficiently convert and display the bit data.
I would also like a Golden chicken that lays talking eggs.
Here is an example of some data. .
="18:04:25.455",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.487",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.503",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.535",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.550",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.582",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.598",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.630",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.662",PIM status carddata response from WAPM 7 to PIM command,="0A",="FF",="31",="0A",="07",="00",="00",="14",="00",="1A",="D0",="CD",="44",="40",="70"
="18:04:25.726",WAPM 7 timed unlock command,="0A",="07",="56",="02",="03",="00",="9E"
="18:04:25.742",WAPM response to WAPM command,="0A",="FF",="30",="03",="00",="00",="14",="BA"
="18:04:25.823",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.823",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.902",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:25.919",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:25.999",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:26.031",PIM status change response from WAPM 7 to PIM command,="0A",="FF",="31",="05",="07",="00",="00",="94",="00",="30"
="18:04:26.111",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"
="18:04:26.111",PIM status idle response to PIM command,="0A",="FF",="31",="00",="D0"
="18:04:26.175",PIM 0 poll (checksum) command,="0A",="00",="74",="00",="8C"