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
Hallo Hummakavula,
SerialPort.GetPortNames aufrufen und schauen, ob der Port gelistet wird.
grüße
spooky
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?
Aus rein logischer Sicht:
Einmal wird nur etwas abgefragt - aber einen Port zu Öffnen ist schon eine andere Hausnummer.
~~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.