Witam

Piszę aplikację do odczytu danych po RS232 (z własnorecznie wykonanego czytnika RFID) ale mam problem. Czytnik wysyła ciągle IDkarty i znak nowej linii, w sumie 11bajtów danych. Chcę je wyświetlić ale w buforze siedzą wszystkie dane jakie czytnik wysłał (jak trzymam karte w polu, jej numer wysyłany jest co 0.5s).

Moje funkcję:

odczyt jednego bajtu:

char odczyt(HANDLE *hCom)
{
char rx;
BOOL bOdczytRC;
//static DWORD iBityOdczytane;

bOdczytRC = ReadFile(*hCom, &rx, 1, &iBityOdczytane, NULL);

return rx;
}

odczyt danych karty

string czytajKarte(HANDLE *hCom)
{
    char k[15], temp;
    string str;

    for(int i=0; i<=10; i++) k[i]=odczyt(hCom);  //ODCZYT 11bajtow kodu karty i bitu przejscia do nowej linii ;-)
    str=k;

    return str;
}

wyswietlenie danych:

while(1)
{
cout<<" ID karty:  ";

dane=czytajKarte(ptr);
cout<<dane + "\n";

Sleep(100);

if(dane.length()!=0) system("pause");
}

i mam taki efekt ze po włączenie program, czeka na dane, po przyłożeniu karty, wyskakuje odczytany numer, lecz po wciśnięciu dowolnego przycisku znowu (mimo braku karty w polu, tj odbierania danych, tylko dane zgromadzone w buforze przy ostatnim odczycie) wyświetla mi sie numer tej samej karty, i tak powiedzmy z 5 razy (zależy ile danych się zgromadziło w buforze). Moje pytanie: jak ten bufor opróżnić po każdym odczycie ?

Próbowałem FlushFileBuffers(*HANDLER) ale nic to nie daje :(