Brauche Hilfe bei der COM-Schnittstelle !!!
-
Also ich verwende die Klasse von mynona & AJ aus der FAQ!!
ich will einfach nur ein paar Zeichen von einer COM-Schnittstelle zu anderen senden (zum üben
).
dazu habe ich zwei kleine Programme geschrieben
Senden.exe int main (void) { ComPort COM1; int result; char* Zeichen; result = COM1.OpenCom(2); if (result == 0) COM1.SetUART(19200,8,0,1); else return -1; Zeichen = new char; do { COM1.Send("SAM"); // COM1.Receive(Zeichen,1); // if (*Zeichen >= 0 && *Zeichen <= 255) // printf("%c", Zeichen); } while (kbhit() == NULL); COM1.CloseCom(); return 0; }
Empfangen.exe int main (void) { ComPort COM2; int result; char* Zeichen; result = COM2.OpenCom(2); if (result == 0) COM2.SetUART(19200,8,0,1); else return -1; Zeichen = new char; do { // COM2.Send("SAM"); COM2.Receive(Zeichen,1); if (*Zeichen >= 0 && *Zeichen <= 255) printf("%c", Zeichen); } while (kbhit() == NULL); COM2.CloseCom(); return 0; }
Die beiden COM-Ports an meinem Rechner sind mit einem Nullmodem-Kabel verbunden.
Mein Problem ist nun das mir Empfangen.exe folgende Zeichenkette rausschmeist: '@@@'
Starte ich die beiden Programme im Kompatibiltätsmodus (Windows 98/ ME) gibt Empfangen.exe folgende Zeichen aus: '---'Starte ich die beiden Programme unter Windows 98 SE, passiert gar nichts !!!!
Als Compiler verwende ich VC++ 6.0
Währe nett wenn mir jemand helfen könnte.
-
Warum sagt mir den keiner das ich ein '*' im Programm empfangen.exe vergessen habe ?!?
Mit Windows XP funktionieren nun die beiden Programme so wie sie sollen, nur Windows 98 SE passiert immer noch nichts, hat da jemand eine Erklärung oder vielleicht auch die Lösung ???
-
Ich kenn mich mit dieser Art der Programmierung immer noch nicht richtig aus, und die beiden Programmierer dieser Klasse sind nur noch ganz selten hier im Forum.
MfG SideWinder
-
Hmmm möglicherweise fehlt Windows98 ein API, dass in der Klasse benutzt wird. Du solltest vielleicht auch mal in den Systemsteuerungen Win98 anschauen, vielleicht ist da was verstellt. Mehr fällt mir jetzt aber auch nicht ein.
-
Ich habe den 'Fehler' gefunden, nachdem ich einfach mal das Ergebniss von SetUART überprft habe, da habe ich festgestellt das der Modus gar nicht gesetzt wurde, Win XP ist das wohl egal nur Win98 reagiert da etwas allergisch drauf.
Ein Blick in die MSDN offenbarte folgendes: in der DCB-Struktur muss das Feld StopBits auf 0 gesetzt werden, wenn ich mit 1 Stopbit arbeiten möchte, 1 steht nämlich für 1.5 Stopbits und 2 für 2 Stopbits.
So dann will ich doch mal schauen was ich mit dem neuen Wissen so alles anfangen kann!