You are correct that you don't get voltage values and that the unit sends screen positions to the PC/tablet as a viewer.
The software works on having 10 vertical divisions so for a setting of 500mV/div you get from -2.5V to +2.5V.
There's no offset so you are stuck with 0V being the midpoint.
The unit sends where the voltage reading will be within those bounds based on 3=Top of screen .. 128=Centre .. 252=Bottom of screen .. 250 different values or 25 per division.
So for 500mV/div a value of 3 = 2.5V .. 128 = 0V .. 252 = -2.5V .. and simple maths for the rest.
If you send the ChxY Position in a Settings message the unit will offset the values by this much.
This you could do yourself but by having the unit do it for you you can simply dump the byte stream into a viewer with no further processing.
So the datastream that comes back is the form:
byte 1: CH1_Sample1 (value between 3 and 252) .. if you view the stream with nothing attached you'll see a lot of 0x80 = 128 = 0V
byte 2: CH2_Sample1
byte 3: CH1_Sample2
byte 4: CH2_Sample2
byte 5: CH1_Sample3
byte 6: CH2_Sample3
....
byte 8192: CH2_Sample4096
Amen on it needing a new firmware
Baudrate:
I've tried 460800 and it didn't throw an exception and returned data.
I haven't tried any throughput tests though to see what it actually connected at .. job for tomorrow!
I initially used 19200 as I found that as a default in the firmware code in usb_function_cdc.c -> CDCInitEP(void)