none
Auf DataReceived Event in einer anderen Klasse registrieren RRS feed

  • Frage

  • Hallo zusammen, 
    ich habe folgendes Problem und es ist wahrscheinlich auch ganz einfach aber irgendwie sehe ich den Wald vor lauter Bäumen nicht. 
    Ich habe ein Form in der mehrere Instanzen einer SerialPort-Klasse erzeugt werden. Jetzt möchte ich das die Eingehenden Daten auf der Seriellen in der Form Angezeigt bzw. Verarbeitet werden. Also habe ich mir gedacht das man das mit Events machen kann, aber wie kann ich das Form an das  DataReceived Event in meiner SerialPort-Klasse registrieren bzw. de-registrieren ?   

    Vielen Grüße Pia

    Donnerstag, 31. Juli 2014 16:22

Alle Antworten

  • Hi Pia,

    deine Serial Ports Klasse kann ein Event Bereitstellen, was ausgelöst wird, wenn intern das DataReived Event ausgelöst wird.

    MFG

    Björn

    Donnerstag, 31. Juli 2014 17:43
  • Hi Björn,
    ich entschuldige mich für die späte Antwort. Ich muss Zugeben das ich bis jetzt mit C# eher wenig zu habe.
    Aber das soll mich nicht Aufhalten :-) und Events habe ich in Ihrer Implementierung noch nicht ganz verstanden.
    Ich habe in meiner Form1 einige SerialPorts-Klassen erzeugt. 

    Ein kleiner Ausschnitt aus Form1 in dem die SerialPorts:

    ManagementScope connectionScope = new ManagementScope(); SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort WHERE Description LIKE '%CC1111%'"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery); List<mySerialPorts> _tmp_serPort = new List<mySerialPorts>(); foreach (ManagementObject item in searcher.Get()) { _tmp_serPort.Add(new mySerialPorts { SP_PortName = item["DeviceID"].ToString(), SP_Baudrate = BAUTRATE, SP_DataBits = DATABITS, SP_Handshake = HANDSHAKE, CSP_Parity = PARITY, SP_StopBit = STOPBITS

    }); }


     Ausschnitt aus der mySerialPort:

    //Geter und Setter 
    public type xyz {get; set;}
    ....
    
    //create a SerialPort Instance
    private SerialPort my_SerPort = new SerialPort()
    
    my_SerPort.PortName = _PortName;
    my_SerPort.BaudRate = _Baudrate;
    my_SerPort.Parity = (Parity)Enum.Parse(typeof(Parity), _Parity);
    my_SerPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), _StopBit);
    my_SerPort.DataBits = DataBits;
    my_SerPort.Handshake = (Handshake)Enum.Parse(typeof(Handshake), _Handshake);
    my_SerPort.DataReceived += new SerialDataReceivedEventHandler(ReadData);
    

    Jetzt will ich ja eigentlich das was auf DataReceived ankommt in meiner Form1 in eine  RichTextbox ausgeben, aber da schaltet mein Gehirn auf memory overflow.

    Mittwoch, 13. August 2014 22:00