[Mono-bugs] [Bug 675109] New: Reading from SerialPort misses first byte of a series

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Feb 25 11:35:32 EST 2011



           Summary: Reading from SerialPort misses first byte of a series
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.10.x
          Platform: i386
        OS/Version: Windows XP
            Status: NEW
          Severity: Critical
          Priority: P5 - None
         Component: System
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: wdehoog at exalondelft.nl
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

My application has a thread that reads data from a serial port in an endless
loop waiting for bytes. The bytes will come in chunks.

When a chunck arrives the first byte of a chunk is not reported. I think this
is caused by the way the overlapped reading is implemented in

A read is done using ReadFile with an overlapped structure. When ReadFile fails
GetOverlappedResult is used to check if the operation is done.

After some internet searching I modified the code by adding a
WaitForSingleObject (on the read_overlapped event) before the call to
GetOverlappedResult and the problem was gone. Read gives me all the bytes. 

Unfortunately I do not understand why this works better. Maybe
GetOverlappedResult does end too soon and the next time Read is called a new
ReadFile is started so a previous overlapped result is ignored resulting in the
first byte being discarded.

This all happens when using a USB serial port (FTDI chip). I cannot try it with
another type of serial port.

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list