Serialport unter Win2000 SP4 wirft seltsamen Fehler

Reticent

Erfahrenes Mitglied
Hallo zusammen,


Ich habe ein Programmchen geschrieben, welches die Daten an COM Port sendet und von COM Port empfängt. Senden tue ich mit SerialPort.Write(..), Empfangen bearbeite ich in DataReceived. Unter Windows XP funktioniert alles super. Nur wenn ich meine Anwendung unter Windows 2000 SP4 starte bekomme ich bei Anbindung des COM1-Ports sofort die Fehlermeldung
"PortName kann nicht bei geöffnetem Anschluss festgelegt werden"
Und obwohl danach der COM1 doch geöffent wird, wenn ich versuche etwas zu senden, bleibt mein Programm hängen.


Hat jemand eine Ahnung was der Fehler heisst?
 
hat jemand vielleicht eine Idee was es heißen könnte?

Und ich habe noch etwas gemerkt. Das aller erste Befehl wird erfolgreich versendet und es kommt auch eine Antwort. Beim zweiten dagegen, bleibt meine Anwendung hängen.
Wie gesagt unter Windows 2000 SP4.

Hat jemand Erfahrung gemacht auf diesem Gebiet?
 
Nur mal so nebenbei:
Eine Anwendung darf nicht "hängen bleiben" währen sie eine Aufgabe erledigt.
Das ist äußerst unergonomisch und gibt dem User nicht mal die Chance den Vorgang zu stoppen.
Wenn Du das ganze in einem Thread ausführst könntest ja auch einen Timer prüfen lassen,
ob die Aktion evtl schon zu lange dauert und ihn darauf hinweisen.

Hier siehst ein OOP gerechtes WorkerThread Beispiel: http://www.tutorials.de/forum/attachments/net-windows-forms/26566d1161091573-workerthreadexample.zip

Zum Thema: Wenn Du den Fehler den Fehler nur auf Windows 2000 SP4 hast bin ich überfragt. :(
 
danke für deine Antwort.

Das ist genau das was ich nicht verstehe. Ich habe schon einen Timer. Und er funkt prima, aber wie gesagt, nicht unter Win2000.... :confused:
Und genau um eine Userfreundliche Anwendung zu erstellen habe ich den Timer eingebaut. Es hilft aber nicht. Die Anwendung hängt... :confused:

oh, was mach ich denn nun ......

was könnte man noch tun, um die Fehlerursache zu finden?
 
Was für einen Timer? Es gibt 3 verschiednen Sorten Timer. ;)
Multithreading bei Windows Forms mit Timer-Klassen - ein Blick hinter die Kulissen

Und deine Anwendung hängt eben weil Du das Senden und Empfangen nicht in einem eigenen Thread ausführst.
Hast Dir mal meine Demo angeschaut?
Wenn Du es schon in einem Thread ausführst, kann es nur ein Deathlock sein.

Ich hab selber via COM noch keine Daten versendet oder empfangen.
Versuch mal andere Geräte via COM anzusprechen. Oder was von dem einen zum anderen Port zu versenden...
Wenn das problemlos geht, kann es sein das Du in deinem Prog einen Fehler drinne hast
oder irgend was die Kommunikation blockt...
Wenn Du mal eine Demo machen könntest, würd ich mir das mal anschauen wollen.
 
Zurück