>I can type the following in the command window and get the correct data back from the device.
>
>ot = CREATEOBJECT('mscommlib.mscomm')
>ot.CommPort = 4
>ot.Settings='115200,n,8,1'
>ot.PortOpen = .T.
>lqout = 0hA0A20001B700B7B0B3
>ot.Output = lqout
>lqin = ot.Input
>ot.PortOpen = .F.
>CREATE CURSOR test (testrec Q(100))
>INSERT INTO test VALUES(lqin)
>
You do execute that line by line? Not Select it, right click and then Execute Selection, do you?
It's surely the other way around as you think, Input is not cleared before you take it into lqin, it just did not yet arrive. 115200 baud is still rather slow...
Checking with COVERAGE a line like lqin = ot.Input takes 0.000205 seconds to execute. ot.Output = lqout took 0.002050 secs. With a baud rate of 14400 Bytes per second you gave the comport the chance to transfer about 32 Bytes forth and back, not taking into account some latency times and the time VFP needs to execute.
If waiting for receive comm event seems over the top for you in this case, then simply give some time between output and input.
ot.Output = lqout
wait window '' timeout .1
lqin = ot.Input
Bye, Olaf.