Hilfe beim kommunikation mit COM Port
-
Sorry für doppelpost:
Probier mal FormatMessage ohne |FORMAT_MESSAGE_FROM_HMODULE
-
Er gibt aus:
Fehler falscher Parameter!

Das hat ich doch schonmal...
-
Kalle77 schrieb:
Das hat ich doch schonmal...
Wann? Bisher wußten wir nur wo der Fehler auftrat, jetzt wissen wir was es für ein Fehler ist.
Also ich mache bei mir folgende Einstellungen:ZeroMemory (&dcb, sizeof(dcb)); dcb.DCBlength=sizeof(sDcb); dcb.BaudRate = 9600; dcb.fParity = FALSE; dcb.fBinary = TRUE; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; dcb.fDtrControl = DTR_CONTROL_ENABLE; dcb.fRtsControl = RTS_CONTROL_ENABLE; dcb.fDsrSensitivity = FALSE; dcb.fAbortOnError = FALSE; dcb.ByteSize = 8;Den Rest lasse ich unverändert(auch kein GetCommState).
Damit klappts.MfG, North.
-
Die Fehlermeldung hatte ich heut gegen 11:00 schon mal irgendwie!
Also nach der Änderung bringt er jetzt 3 Fehlermeldungen
1. Fehler beim schließen des COM Ports SetCommState()
2. Fehler beim ändern des COM Ports SetCommState()
3. Fehler beim schließen des COM Ports SetCommState()
-
Wenn ich das richtig sehe, gibt's jetz kein Prblem mehr beim Öffnen des Ports.
Hast du immernoch ModeSet in deiner main? Wenn ja, schmeiß raus.
-
Sorry habe das Problem immer noch! ModeSet hab ich rausgehauen und jetzt kommt der Fehler beim schließen. Nur warum ist die Frage? irgendwelche Anregungen. Ich find der Code scheint ganz okay zu sein!
-
Das Problem beim Öffnen waren falsche Settings in der DCB Struktur. Ich schätze mal das ist beim Schließen dann auch das Problem. Da soll ja anscheinend der Ausgangszustand wieder hergestellt werden(was ich persönlich unnötig finde). Speicherst du denn überhaupt noch die alten Settings mit GetCommState in dcb_alt? Wenn nicht schmeiß entweder das SetCommState aus der Close Methode raus oder hol dir beim Öffnen doch wieder die alten Settings.
MfG, North.
-
Also die Fehlermeldungen sind auf jedenfall schon mal weg. Habe die Setcommstate aus Close rausgeschmissen1 Aber er bringt trotzdem nur wirre Werte. Scheinbar kann er keine Verbindung zum Schieber aufnehmen oder er empfängt nichts bzw was falsches! Oder was meinst du?
-
Die Frage ist, welche Baudrate usw. der Schieber hat. Da bräuchte man das Datenblatt. Alternativ mal mit Hyperterminal o.ä. durchprobieren.
-
Alles schon gemacht aber HyperTerminal bringt nix. Baudrate und co sind aber richtig...
-
Ich gebe zu, mir gehen die Ideen aus. Sendet der Schieber permanent Werte, also auch wenn ihn nicht bewegt? Falls ja, kommt da immer das Selbe an? Und sind das tatsächlich immer 4 Byte?
-
Hallo!
Habe noch eine Frage zu einem Pogrammteil!
zahl = (c[0]<<24)|(c[1]<<16)|(c[2]<<8)|c[3];
Was bedeutet diese Zeile? Ist das die Byteverschebung?
-
Ja, desshalb ist es wichtig zu wissen, wie die Daten vom Schieber übermittelt werden. Sonst kommt dabei nur Müll raus.