You should check the comm event, something like the following: mscomm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive ' Received RThreshold # of chars. g_rcvd = g_rcvd & MSComm1.Input End Select end sub Depending on what your scale is doing you may need to add some code to check for pauses in the code (like check to see how long it has been since g_rcvd has changed) Regarding the "junk data" I am suspecting is is returning ASCII, of HEX binary data and you will need to translate it (Bin 2 hex, use Chr$ function or something like that), not all hex values have good ASCII charactors to represent them, so it looks like junk.... good luck... A signature is only a signature if it is signed, signed