c - Flush kommunikation håndtag modtage buffer?

Indlæg af Hanne Mølgaard Plasc

Problem



I Win32 C er der et API-opkald til flush (dump) indholdet af en COM-port-modtagelsesbuffer? Jeg kunne kun finde funktioner til at spyle transmit buffere.

Bedste reference


`PurgeComm () 'kan tabe alle tegn i enten eller begge Tx og Rx buffere og afbryde alle ventende læsnings- og/eller skriveoperationer på porten. Hvis du vil gøre alt for en port, skal du sige noget som: [5]


PurgeComm(hPort, PURGE\_RXABORT|PURGE\_TXABORT|PURGE\_RXCLEAR|PURGE\_TXCLEAR) 


Du kan også være sikker på at du har håndteret eller eksplicit ignoreret eventuelle ventende fejl i porten, sandsynligvis med ClearCommError(). [6]


ReadFile() kan bruges til at tømme bare Rx buffer og FIFO ved at læse alle tilgængelige byte i en affaldsbuffer. Bemærk, at du måske skal have 'unaturlig' viden for at kunne dimensionere den pågældende buffer korrekt eller gentage ReadFile() opkaldet, indtil det ikke længere kan siges. [7]


Hvis du læser bufferen for at skylle det, er det dog kun fornuftigt, hvis du har COMMITIMEOUTS'et 'rationelt' først, eller læseprocessen blokerer, indtil bufferen er fyldt. [8]

Andre referencer 1


spyling af en modtagebuffer gør det ikke fornuftigt at få data ud af en com port, modtage buffer, bare ring ReadFile på håndtaget til com porten


FlushFileBuffers tvinger synkront transmissionen af ​​data i transmitbufferne


PurgeComm tømmer bufferen uden transmission eller modtagelse (det er en sletning i det væsentlige)