Fehler beim Öffnen des COM-Ports

Hallo,

ich möchte eine Zeichenkette an COM1 senden, um eine Kassenschublade zu öffnen. Dazu benutze ich unten stehenden Code. Manchmal funktioniert es auch. Häufig kommt aber diese Fehlermeldung: „Der angegebene Anschlussname beginnt nicht mit COM/com oder wird nicht in einen gültigen seriellen Anschluss aufgelöst.“

Wenn ich im Gerätemanager den COM1 deaktiviere und wieder aktiviere, funktioniert es wieder eine Zeit lang.

Weiß jemand woran das liegen kann???

Mein Code:

Try

Dim port As System.IO.Ports.SerialPort
port = New System.IO.Ports.SerialPort(„Com1“)

port.PortName = „COM1“
port.BaudRate = 9600
port.Parity = IO.Ports.Parity.None
port.DataBits = 8
port.StopBits = IO.Ports.StopBits.One
port.RtsEnable = True
port.Open()
If port.IsOpen Then
’ Zeichenkette an COM1 senden, um die Kassenschublade zu oeffnen
port.Write(Chr(27) & Chr(112) & Chr(0) & Chr(25) & Chr(250))
Else
MsgBox(„Port is not open“)
End If

port.Close()
Me.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try

Danke im Voraus für eure Hilfe!

Tipps & Links
Hallo David,

http://www.mycsharp.de/wbb2/thread.php?threadid=6612…

Ich hab’ alle Modems aus dem Geräte-Manager entfernt, neugestartet, :das Nokia 6680 angeschlossen und die Zuordnung zum COM-Port hat :funktioniert.

Vielleicht ist einfach die Hardwareeinbindung nicht sauber gewesen, wird nicht sauber gewartet im System. Falls der Hinweis hilft, dann versuche beim Programmende den Port zu deinstallieren, beim Starten zu installieren, weil vielleicht nicht erkannte Zuordnungen hängen bleiben irgendwo…

http://social.msdn.microsoft.com/Forums/en-US/csharp…

I had exactly the same problem. I found that I had a windows :stuck_out_tongue:rinter setup to use the same port. As soon as I changed the port :in the printers settings, the SerialPort.Open() worked.

Wurde, wird dein COM-Port anderweitig genutzt?

Vielleicht findest du noch mehr auf Englisch:

„The given port name does not start with COM/com or does not resolve to a valid serial port“

Grüße Roman

Wurde, wird dein COM-Port anderweitig genutzt?

Hallo Roman,
danke erstmal für die Links. Auf dem COM1 ist noch ein Druckertreiber installiert, weil dort ein Bondrucker dranhängt. Die Kassenschublade ist am Bondrucker dran. Die Sequenz muss an den Drucker geschickt werden, dieser gibt das Signal weiter an die Lade.

So wie es scheint ist also der COM1-Port durch den Druckertreiber manchmal belegt. Ich habe aber darauf geachtet, dass mein Programm nur mit COM1 kommuniziert, wenn gerade nicht gedruckt wird. Scheinbar wird der Port trotzdem vom Drucktreiber blockiert, obwohl nicht gedruckt wird.

Was kann man denn dagegen machen?

Konnte das Problem lösen.

Die englische Übersetzung der Fehlermeldung war mir beim googlen sehr hilfreich.

Hier der Code, ist zwar nicht die eleganteste Lösung aber es funktioniert:

Private Function Open_Cashdrawer()
FileOpen(1, AppDomain.CurrentDomain.BaseDirectory & „open.txt“, OpenMode.Output)
PrintLine(1, Chr(27) & Chr(112) & Chr(0) & Chr(25) & Chr(250))
FileClose(1)

Shell(„print /d:com1 open.txt“, AppWinStyle.Hide)

Return True
End Function