Here's a picture of a graph that I generated with GUIPlot, a Windows program I wrote 25 years ago to parse ASCII files and plot the data. (note the domain of this web page.) Each point is the result of a channel being monitored for 10 seconds and the Y axis is the minimum SNR value in those 10 seconds. The dark line on the graph at 180 is a somwhat arbitrary minimum where no pixelation occurs (Dvico keeps a lock at lower SNR levels than Hauppauge but Hauppauge is less likely to drop that low). Blue is Hauppauge, Orange is Dvico and there are two plots for each, one for lines and one for points (represented with the character "5" for channel "5"). Not all of the points connected with lines have the "5" plotted because the "5" is only plotted where there was a lock on 100% of the readings taken during the 10-second monitoring. The lines disappear off the bottom of the graph when the minimum SNR is really low. The blue lines only do that once because the Hauppauge doesn't try when the signal is that low, but it has more points under the Qty column, meaning it doesn't fail to get a signal as often as the Dvico.

GUIPlot uses plot setup files and what I call "objects", which are setup files combined with a data file name and other project-specific attributes to render a graph. HERE is the object (simple text file) used to generate the above graph. wine somehow assigned "R:" to the directory where my data files reside so the referenced data file is R:\local_channels.dat. I included a sample of that file in the utilities directory in the strength tar file.

If you want to dowload GUIPlot and install it using wine (or, heaven forbid, Windoze), you can use the following license ID:
Registered Name: mythtv
Registration Number: 25742

strength logs in simple text files that can be parsed by GUIPlot or any analysis tool that can parse a CSV text file. Here's a sample from local_channels.dat

1, 30.3, 569, 60.0, 60.0, 60.0, 210, 210, 210, 100.0, 85, 13, 4, KOMO, cx23885_Samsung, 1.25, 1610907795, Sun Jan 17 10:23:15 2021
2, 25.3, 539, 72.9, 70.0, 71.4, 250, 245, 249, 100.0, 86, 13, 4, KING-HD, cx23885_Samsung, 1.25, 1610907809, Sun Jan 17 10:23:29 2021
1, 30.3, 569, 89.0, 87.0, 87.2, 217, 207, 207, 100.0, 47, 14, 0, KOMO, cx23885_LG, 1.25, 1610911156, Sun Jan 17 11:19:16 2021
2, 25.3, 539, 95.0, 94.0, 94.2, 245, 241, 243, 100.0, 42, 13, 0, KING-HD, cx23885_LG, 1.25, 1610911170, Sun Jan 17 11:19:30 2021

One of the values logged is the number of samples taken during the 10 seconds, which is the 11th field on these lines. The 10th field (all 100.0 in this sample) is the percent of those readings that have a lock. That and the minimum SNR (8th field) is the best way I have found of telling if the signal is watchable or not. Sat, Jan 9th, looks like I would have good recordings, while Mon, Jan 4th would be unwatchable.

I just noticed while writing this, that the Dvico (cx23885_Samsung) is logging twice as many readings in the same time (13-14 seconds) as the Hauppauge. I'll have to figure out why that is (a bug in strength or a slower response to a signal query?) and if it's significant.

The GUIPlot object for the graph, above, only plots points for lines that contain the strings "Sam" or "_LG" (X axis formula condition of ?("Sam" | "_LG")). The four Y axis formulas pick the lines they plot in a similar manner with lines having conditions ? "KING" & "Sams" for the Dvico and ? "KING" & "_LG" for the Hauppauge. Further conditions are applied to their respective 100% lock formulas, which plot only points where every sample taken during the 10 second monitoring had a lock: ? "KING" & C10=100 & "Sams". "C10" refers to "column 10", which is the percent of readings with a lock.

GUIPlot comes with an extensive Help file that uses the old Windows help system from the 90's that is no longer supported under Windows, but wine handles it just fine. Whatever tool you use, I hope these tools help you achieve the most reliable recordings possible.