Kann man ein ereignis durchreichen?



  • Hallo,
    Mein Programm läuft jetzt bis auf einem Schönheitsfehler so wie vorgestellt.
    Ich greife Lesend (und natürlich Schreibend) auf die RS232 Schnittstelle zu. Allerdings erfolgt die Abfrage der Schnittstelle durch bloßes Polling.

    Ich würde das gerne Ereignisgesteuert hinbekommen. Wenn ich die Schnittstelle direkt aus dem mit Windows Forms erzeugten Formular ansprechen würde, so währe es auch kein Problem. hier könnte ich ja mittels DataReceived ein Ereignis abfragen. Allerdings möchte ich um mir spätere Änderungen an der SW offenzuhalten dieses den Schnittstellenzugriff über eine eigene Klasse laufen lassen.

    Meine RS232 Klasse sieht in etwas so aus:

    #pragma once
    
    using namespace System; 
    using namespace System::Diagnostics; 
    using namespace System::IO::Ports; 	
    
    ref class SCHNITTSTELLE {
    
    SerialPort Port;
    
    punnblic:
    void Sopen() {
    			Port.PortName = "COM6"; 
    ...
    			Port.Open();
    } 
    void Ausgabe(int offset) {
    			array<unsigned char>^ tst=
    ...
    
    			Port.Write(tst,offset*2,wert2);
    }
    void Empfangen(int){
    			s = Port.ReadExisting();
    ...
    }};
    

    DasFormular ist ein 08/15 Windows.Forms Formular mit dem Designer erstellt.

    Daher meine Frage:
    ISt es möglich das Ereignis in meiner eigenen Klasse auflaufen zu lassen und dadurch gesteuert ein neues Ereignis entstehen zu lassen was dann in der Form1.h ausgewertet werden? (Wie mache ich das? Verschieden Versuche brachten nur unzählige Fehlermeldungen...)
    Oder kann ich das Ereignis einfach "weiterleiten"?
    Oder gibt es einen anderen, eleganteren Weg?

    Gruß
    Carsten



  • ISt es möglich das Ereignis in meiner eigenen Klasse auflaufen zu lassen und dadurch gesteuert ein neues Ereignis entstehen zu lassen was dann in der Form1.h ausgewertet werden? (Wie mache ich das? Verschieden Versuche brachten nur unzählige Fehlermeldungen...)
    Oder kann ich das Ereignis einfach "weiterleiten"?

    Du musst es weiterleiten. Dazu einen entsprechenden Delegaten deklarieren, dann in deiner Klasse ein Event deklarieren und den dann entsprechend ausführen.

    Oder gibt es einen anderen, eleganteren Weg?

    Denke nicht.

    Simon


Anmelden zum Antworten