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 :(