Hello Lazarus-List, Wednesday, February 16, 2011, 1:26:38 PM, you wrote:
MS> On 02/16/2011 12:07 PM, José Mejuto wrote: >> AFAIK the FIFO is in the receive, in sent the FIFOs are filled but >> function does not return until the hardware sends the last byte. MS> If this is true somewhere, it is not portable. Glups! What ? MSDN about RS232: Nonoverlapped I/O is familiar to most developers because this is the traditional form of I/O, where an operation is requested and is assumed to be complete when the function returns. In non-overlapped mode, block mode, or whichever you like to call it, the program sends, in example, 100 bytes to rs-232, the operative system sends 16 of them to the UART, when FIFO bytes has been sent the UART generates an interrupt to tell to the OS to refill the FIFO buffer. This procedure is repeated several times, when no more data is pending in the OS buffers to be sent, the OS waits for the interrupt or timeout interrupt, and when the transmission buffer is empty (interrupt received) the OS exits the send function. FIFO in transmission alleviate the overhead in interrupts 16:1. The problem is in the timeout case as you will not know at which byte the transmission timedout as the FIFO can only be asked about empty or not. Non blocking is pretty the same at the OS level, except that the send function returns inmediatly and you have some helper functions to inquiry the current transmission status/state/progress. -- Best regards, José -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
