Com-Port öffnen wenn bereits Daten empfangen werden
-
Hi
Ich habe eine eigene Klasse geschrieben, für den ComPort. (Ist ein Testlauf für eine Prüfung).
Ich habe nun folgendes Problem:
Am Com-Port ist eine GPS angeschlossen welches ständig Daten sendet (im Sekunden Tackt). Ich kann so den Port nicht öffnen. (Im Hyperterminal funktioniert es jedoch ohne Probleme)
Wie muss ich den Port öffnen, damit es funktioniert auch wenn bereits Daten darauf gesendet wurden?Ich habe ein Argument gefunden Overlapped oder so...
Kann mir jemand sagen für was genau dies ist?
-
normalerweise kann man den com-port nur öffnen, wenn keine andere anwendung ihn offen hat. das ist unabhängig davon, ob an ihn daten gesendet werden oder nicht.
-
Er wird jedoch von keiner anderen Anwendung gebraucht...
Sobald ich das GPS vom Port trenne kann ich ihn öffnen...
Nur wenn es angeschlossen ist funktioniert es nicht...
-
addict schrieb:
Er wird jedoch von keiner anderen Anwendung gebraucht...
Sobald ich das GPS vom Port trenne kann ich ihn öffnen...
Nur wenn es angeschlossen ist funktioniert es nicht...sehr merkwürdig. vielleicht ein bug in windows? fummel mal damit rum: http://www.sysinternals.com/Utilities/Portmon.html
-
Redest Du hier won Windows oder Windows-Mobile (CE) ?
Ein COM-Port lässt sich immer öffnen, wenn er vorhanden ist und kein anderes Programm ihn verwendet.
Was kommt denn für ein Fehlercode?
-
Ich benutze WindowsXP prof.
Bis jetzt gibt es nur ein false zurück.
Wie bekomme ich die genaue Fehlermeldung zurück?
-
Ein "false" gibt die WinAPI mit sicherheit nicht zurück... wie sieht denn Dein Code aus, um die Schnittstelle zu öffnen?
Ich empfehle Dir mal dringend einen Blick auf eine (gute) Fertige Klasse zu wenden:
http://www.codeproject.com/system/serial.asp
-
@Jochen: Vielleicht solltest du den Link für die Serial - Klasse in deiner Signatur unterbringen. So häufig wie du das hier schreiben musst.
-
OT: @Paul_C: Ich bin halt der Meinung, das die sowas simples wie die serielle Kommunikation von vielen fatal unterschätzt wird...
-
OT: Ja, ich musste mich auch schon damit herumschlagen. Ich habe es dann so gemacht, dass ich mir einige Klassen herangezogen habe und bin diese dann Zeile für Zeile durchgegangen. So dass ich alles verstanden habe. Danach habe ich mir dann meine eigene Klasse geschrieben, die meinen Anforderungen gewachsen war.
Also machbar ist es auch. So eine vorgefertigte Klasse ist dafür aber schon sehr hilfreich.
-
Jochen Kalmbach schrieb:
OT: @Paul_C: Ich bin halt der Meinung, das die sowas simples wie die serielle Kommunikation von vielen fatal unterschätzt wird...
normalerweise ist es auch simpel. es wird nur durch sowas wie winapi erst kompliziert gemacht.
-
OOOOT: Du hast keine Ahnung...
-
Ich kann Jochen nur zustimmen.
V24 ist kompliziert. Geht für den einfachen User schon damit los, ein richtiges Kabel zu finden. Und wer sich noch an die 25 poligen Stecker und die programmierung unter DOS erinnert, weiß das noch nie simpel war.
-
Als ich noch ein einfacher User war, da hatte ich auch erst versucht, mit einem falschen Kabel Daten zu verschicken.
-
Verwegener schrieb:
V24 ist kompliziert. Geht für den einfachen User schon damit los, ein richtiges Kabel zu finden. Und wer sich noch an die 25 poligen Stecker und die programmierung unter DOS erinnert, weiß das noch nie simpel war.
25 polige stecker sind ja wohl 'etwas' übertrieben für rs232. man braucht bloss 3 leitungen (oder 4 wenn man hardware flow control benutzt). aber solange man keinen uart selber in software nachbilden muss (selbst das ist nicht so schwer) ist rs232 kommunikation recht simpel. aber wenn solche hacker wie die microsofties bei windows noch 'ne schicht draufsetzten (was ja bestimmt gut gemeint war) und dabei voll in die tonne greifen, dann hat man mal eben 20...30 api-funktionen für rs232, mit denen man sich auseinandersetzen muss.
-
net schrieb:
25 polige stecker sind ja wohl 'etwas' übertrieben für rs232. man braucht bloss 3 leitungen (oder 4 wenn man hardware flow control benutzt).
Man sieht wirklich: Du hast keine Ahnung... welche 4 sollen dass den bitte sein wenn man Hardware-Flow-Control haben will?
-
Jochen Kalmbach schrieb:
net schrieb:
25 polige stecker sind ja wohl 'etwas' übertrieben für rs232. man braucht bloss 3 leitungen (oder 4 wenn man hardware flow control benutzt).
Man sieht wirklich: Du hast keine Ahnung... welche 4 sollen dass den bitte sein wenn man Hardware-Flow-Control haben will?
eine zum senden, eine zum empfangen, ein ausgang um den anderen zu stoppen und ein eingang um selber gestoppt zu werden. macht 4. achso, und natürlich ground. ok macht 5. trotzdem noch weit entfernt von 25, du nullmodem!
btw: ahnung brauch ich nicht. ich weiss das auch so
-
Dann zählt doch einfach mal auf was an der Kommunikation mit der seriellen Schnittstelle so schwer sein soll.
-
netz schrieb:
Dann zählt doch einfach mal auf was an der Kommunikation mit der seriellen Schnittstelle so schwer sein soll.
schrieb ich bereits. durch die winapi wird zusätzliche komplexität hinzugefügt.