While Schleife

Viper2009

Erfahrenes Mitglied
Hallo Leute wunderschöner Tag heute, abgesehen vom Wetter und von meinem Programm :(.

Ich melde mich weil ich eins nicht verstehe, entweder habe ich irgendwo einen Fehler oder ich bin zu dumm :D.

Es geht um eine Software für PDA´s die über eine Serielle Schnittstelle ein RFID Tag lesen soll, soweit alles gut.
Problem bei der Sache ist nur das in der WinMain die schleife irgend wie Probleme hat.
Sie läuft nur ca 5 mal durch und bleibt dann stehen. Oder ich klicke erneut auf dem Button.
Code:
while (Running)
{
	ToLog(MAIN, "%i ",Start);
	if (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	if(Start)
	{
		ComRead();
	}
	Sleep(1);
}

In der .Txt die ich erstelle, über ToLog sehe ich das Start nur 5 mal rein geschrieben wurde.
Der Code allgemein funktioniert. Nur er macht keine endlos schleife?
Nun meine frage woran könnte es liegen.
Wenn ich in der ComRead eine Massagebox einbaue und schnell genug klicke bekomme ich denn vollständigen Tag.

MFG Viper
 
GetMessage blockiert die Schleife solange bis die nächste Message kommt.

Was Du eher brauchst ist PeekMesage um zu testen ob eine Message da ist, dann erst GetMessage um die abzuholen.

So ca:
Code:
if (PeekMessage(...))
	{
                                GetMessage(&msg, NULL, 0, 0)
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
 
Vorsicht: Das kommt auf das Flag in PeekMessage an. Wenn du PM_REMOVE nimmst, ist PeekMessage quasi dasselbe wie GetMessage. Wenn nicht, dann musst du die Nachricht auch wirklich noch mit GetMessage rausholen.
 
Rfid Tag

Hallo, ich habe nun mal wieder ein denk Problem und hoffe das ihr mir vielleicht ein paar Tipps dazu geben könnt. Wie ich es richtig machen könnte :D

Ich Lese ein RFID TAG über eine Serielle Schnittstelle Byte für Byte.

Code:
void ComRead (void)
{
	char Buffer[128];
	DWORD BytesRead;

	ReadFile(m_hComm,&Buffer,1,&BytesRead,0);
	{
	if(BytesRead > 0)
		ToLog(TAG, "%c",Buffer[0]); // Speichert den TAG in eine Text Datei

		TAGProcess (Buffer); // <- = Verarbeiten des TAG´s
	}
}

Die Buffer-Size habe ich auch schon geändert, leider ohne erfolg.

In der Text Datei steht dann dieser TAG: Z94C8100000000200.
Da mein Buffer ein Array ist dache ich mir das ich jetzt einzeln die Bytes raus picken kann.
Leider kann ich nur Buffer[0] benutzten da die anderen Arrays keine Daten enthalten.
Er liest die Bytes nur einzeln. :(

Mit freundlichen Grüßen Viper
 
Ups, mhh vorher hatte ich immer ein Error mit dem Debuger? Aber danke musste die Log ebend bischen ändern aber jetzt gehts. :D
 

Neue Beiträge

Zurück