Serieller Port lässt sich nicht öffnen



  • Hallo,

    ich habe das Problem, dass sich ein serieller Port (USB/RS232 Konverter) aus dieser Windows Forms Anwendung heraus nicht öffnen lässt. Die Hardware ist in Ordnung. Ich kann den gleichen Port mit einem Terminal-Programm (PuTTY) öffnen und verwenden.

    In der Zeile
    serialPort1.Open();
    kommt die Fehlermeldung
    System.IO.IOException: "A device attached to the system is not functioning."

    Woran könnte das liegen?

    using System;
    using System.Windows.Forms;
    
    namespace SIM900_SIM921
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                double celsius;
                double r;
    
                InitializeComponent();
                
                serialPort1.BaudRate = 9600;
                serialPort1.DataBits = 8;
                serialPort1.Parity = System.IO.Ports.Parity.None;
                serialPort1.StopBits = System.IO.Ports.StopBits.One;
                serialPort1.Handshake = System.IO.Ports.Handshake.None;
                serialPort1.PortName = "COM1";
               
                serialPort1.Open();
                serialPort1.WriteLine("conn 1,\"xxx\"");     // SIM921 in Slot 1
                serialPort1.WriteLine("cini 1,0,PT100");     // Curve 1 is for PT100           
            }
        }
    }
    

  • Administrator

    Stimmen die Informationen bezüglich BaudRate, DataBits, Parity, StopBits und Handshake? Und niemand sonst hat den Port aktuell offen?



  • @Dravere
    ja, in PuTTY stelle ich genau die gleichen Daten ein und da geht es. Natürlich verwende ich den Port nicht gleichzeitig von zwei Anwendungen aus.





  • @Quiche-Lorraine
    Timeouts, Baudrate, Handshake, Datenbits... Das sind doch alles Einstellungen die erst später relevant werden. Selbst mit falschen Einstellungen sollte man den Port zunächst einmal öffnen können.

    Das scheint alles ein Treiber-Problem zu sein. Ich habe jetzt auf zwei Computern mit zwei verschiedenen USB/RS232 Adaptern getestet:

    1. Windows 11, Visual Studio 2019, No-name USB/RS232 Adapter von Reichelt: Problem wie oben beschrieben, aber geht mit PuTTY.

    2. Windows 11, Visual Studio 2019, alter USB/RS232 Adapter von Vivanco: Windows verweigert die Erkennung des Adapters, Treiber-Suche scheitert.

    3. Windows 7, Visual Studio 2013, No-name USB/RS232 Adapter von Reichelt: Windows findet keinen Treiber für den Adapter. Mitgelieferter Treiber auf Mini-CD-ROM lässt sich zwar installieren, wird beim Reinstecken des Adapters aber nicht gefunden.

    4. Windows 7, Visual Studio 2013, alter USB/RS232 Adapter von Vivanco: funktioniert !

    Also Problem erstmal gelöst, ich denke mich da jetzt nicht tiefer rein.



  • Nachdem die Standards: Treiber aktualisieren, Port freigeben, Timeouts setzen, Adapter wechseln das Problem nicht grundlegend lösen, könnte man noch folgendes probieren:

    Sicherstellen, dass die Anwendung genügend Rechte hat, um auf den seriellen Port zuzugreifen.

    Ein einfaches Konsolenprogramm erstellen, um den seriellen Port zu öffnen. Damit könnte man Windows Forms-spezifische Probleme ausschließen.

    Vor dem Öffnen den Port einmal schließen (falls geöffnet) und dann initialisieren.



  • @Erhard-Henkes sagte in Serieller Port lässt sich nicht öffnen:

    Sicherstellen, dass die Anwendung genügend Rechte hat, um auf den seriellen Port zuzugreifen.

    Hmm, unter Windows braucht man nicht viele Rechte um einen COM Port zu öffnen.

    Ein Problem dürfte es sein dass unter Win10 viele alte Hardware nicht mehr unterstützt wird. Ich habe es selbst anhand von alten Prolific Treibern erlebt.

    Es gibt da nur eine saubere Lösung: Ein neuer Win10 kompatibler Adapter.

    Das Problem mit PuTTY ist merkwürdig und müsste man weiter untersuchen. Ein Blick in den Gerätemanager wäre da notwendig.



  • @Erhard-Henkes
    Auch müsste man mal das Verhalten von den USB Ports untersuchen. Habe schon erlebt dass je nach USB Port Geräte erkannt werden oder nicht.