PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : über Com Port mit c++ Transponder ansteuern



mukumuku
27.12.2005, 14:37
Hallo,

ich hab einen TransponderReader von Tectus über die Seirelle Schnittstelle angeschlossen.
Ich will ihn nu vom ihm die Daten ablesen die Daten will ich dan in c++ verarbeiten jetzt mach das ganze über das MSCOMM Modul von Mircosoft.
Das initialisieren des Ports funktioniert. Jetzt hab ich aber das Problem, das das lesen nicht so richtig will ich will den dauerhaft lesen also immer die ID des Transponders in einem Array speicher, doch hängt sich das Programm immer auf wenn ich lese

if (INVALID_HANDLE_VALUE == hCom)
{
Memo1->Lines->Add("Fehler - ");
}

char InString[COM_BUFFER_SIZE + 1];
DWORD dwRead = 0;
ReadFile (hCom, &InString, sizeof (InString), &dwRead, NULL);
if (dwRead != 0){

InString[dwRead] = '0';
Memo1->Lines->Add(InString);

}

bei



ReadFile (hCom, &InString, sizeof (InString), &dwRead, NULL);

also jetzt weiß ich nciht ist das ein Hardware Problem oder ein Softwar Problem?
Kann das sein das ich irgendwie mit den Falschen werten initialisiere oder so ?

Werte:



dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;

Viellecht kann mir auch jemand sagen was überhapt die Stopbits sind der rest müsste stimmen ...

Die Obrige Funktion zum lesen wird bei mir in einer whileschleife wiederholt bis sie durhc ein buttonclick geschlossen wird.

Danke schon mal im vorraus

MUKUMUKU

PasstScho
27.12.2005, 14:47
Hi,
Ich denke das muss ReadFile (hCom, InString, sizeof (InString), &dwRead, NULL); sein.
Den Rest hab ich mir jetzt nich durchgelesen....
MfG Alex

PasstScho
27.12.2005, 14:48
ach und nochwas:
sizeof(InString) gibt nicht das zurück was du willst.
Da sollte COM_BUFFER_SIZE + 1 hin.
...

mukumuku
27.12.2005, 14:56
leider hängt mein Programm immern noch
aber was auch sehr komisch ist das es nur manchmal hängt wenn es die zeile passiert wird manchmal funktioniert es

PasstScho
27.12.2005, 18:55
Also so sollte es gehen:

if (INVALID_HANDLE_VALUE == hCom)
{
Memo1->Lines->Add("Fehler - ");
}
char InString[COM_BUFFER_SIZE + 1];
DWORD dwRead = 0;
ReadFile (hCom, InString, COM_BUFFER_SIZE, &dwRead, NULL);
if (dwRead != 0){
InString[dwRead] = '\0';
Memo1->Lines->Add(InString);
}

mukumuku
28.12.2005, 12:56
ok danke ich versuchs mal

mukumuku
28.12.2005, 13:26
Mein Programm schmiert immer noch ab wenn ich das Lesen in eine Schleife laufen lass dann ghet der rest de programms nicht mehr ich hab auch mal die Timeouts gesetzt das bringt weiter nichts

mukumuku
28.12.2005, 13:41
danke hat sich erledigt das daurhafte abhören an dem Comport hat 100% pc auslastung gebrauicht hab die priorität herruntergesetzt. Dann hat meine GUI auchw ieder funktioniert .