Laden...

ComPort öffnen schlägt fehl

Erstellt von Hummakavula vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.881 Views
H
Hummakavula Themenstarter:in
7 Beiträge seit 2016
vor 6 Jahren
ComPort öffnen schlägt fehl

Hallöchen,

ich habe ein Problem, bei dem ich nicht weiter komme:

Ich möchte Daten von einem Handscanner an einer seriellen Schnittstelle auslesen. Der Scanner funktionert auch und wird im Gerätemanager an COM4 angezeigt.


System.IO.Ports.SerialPort.GetPortNames();

gibt mir auch COM4 aus.


SerialPort _serialPort = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
try
{
      _serialPort.Open();
}
catch (Exception ex)
{
      MessageBox.Show(ex.ToString());
}

endet aber mit einer IOException: > Fehlermeldung:

COM4 ist nicht vorhanden!

Hat irgendjemand vielleicht eine Idee?

Danke

S
248 Beiträge seit 2008
vor 6 Jahren

Hallo Hummakavula,

SerialPort.GetPortNames aufrufen und schauen, ob der Port gelistet wird.

grüße
spooky

H
Hummakavula Themenstarter:in
7 Beiträge seit 2016
vor 6 Jahren

steht in meinem Eröffnungspost - das mache ich bereits!

H
Hummakavula Themenstarter:in
7 Beiträge seit 2016
vor 6 Jahren

hmm, habs gefunden.

Ist eine Windows-Rechte-Problem.

Die Frage nur warum "System.IO.Ports.SerialPort.GetPortNames();" funktioniert, aber


SerialPort _serialPort = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
_serialPort.Open();

nur mit Adminrechten?

1.040 Beiträge seit 2007
vor 6 Jahren

Aus rein logischer Sicht:
Einmal wird nur etwas abgefragt - aber einen Port zu Öffnen ist schon eine andere Hausnummer.

D
985 Beiträge seit 2014
vor 6 Jahren

~~Versuche es doch mal nur mit


SerialPort _serialPort = new SerialPort("COM4");

Das Verwenden ist für alle Benutzer erlaubt, das Ändern der Einstellungen aber nicht.~~
Ist soweit Quark, denn intern wird der gleiche Konstruktor aufgerufen, nur mit den fest hinterlegten Default-Werten. Sollte also rein garnichts bringen.

Ein Blick in ReferenceSource erzählt mir was über SerialPort.Open - SecurityPermissionFlag.UnmanagedCode was hier der Auslöser sein könnte.

Alternativ mal GitHub - SerialPortStream anschauen.