Hallo
Ich habe eine Frage, ich habe in einer eigenen Klasse(RS232) eine RS232
Behandlung geschrieben.
Ich kann über ein Form die RS232 einstellen, Öffnen und Schließen.
Nun möchte ich von der Klasse RS232 die empfangenden Daten
weiterleitern.
Was ich bisher gemacht haben ist mir ein Event in meiner RS232 Klasse zu
schreiben und nun wollte ich ganz einfach die
mir ein Event auszulösen und die Daten im "indata" weiterzureichen um im
Form damit zu arbeiten.
Aber leider ist der DatareceivedHandler ein eigenes Thread und ich steh
gerad auf dem Schlauch wie ich die Daten rüberbekomme.
Hat einer eine Idee?
Invoke ist wohl ein Stichwort aber der scheint das in dem Punkt nicht zu
kennen.
Der Handler wird in meiner RS232_init() bereit gestellt:
Danke für den Link.
Glaub aber ich hab eine andere Richtung gedacht gehabt und frag mich ob
es überhaupt geht.
Ich wollte quasi das Event abfangen in meiner RS232 Routine und die dann
weiterleiten und selber ein Event starten, das irgendeine übergeordnete
Form ein Event bekommt und darauf reagieren kann.
Die meisten Routinen beschäftigen sich damit das Event direkt in der
Form einzubinden, ich wollte ein zwischenschritt über eine eigene
Klasse.
So dachte ich mir das auch, leider bekomm ich dann die Meldung das es
kein statischer Member sei..
Und ein Invoke lässt er mich irgendwie nicht benutzen, oder mach ich was
falsch mit meinem:
// RS232_class::RS232_empfang("test");
// gibt fehler, da keine statische Member?
?
Klassendeklarationen:
Hmm in einem Buch das ich genommen hatte wurd das Eventsystem so
beschrieben, das der Handler zum auslösen außerhalb der Klasse stehen
soll..
Wenn ich mir ein Handler in der Datareceived erstell stürzt es ab,
vermutlich weils ins nirgendwo hinzeigt.
Auch wenn ich mein Datareceived Handler unter Privat setz innerhalb
meiner Klasse, findet der mein RS232_empfang nicht innerhalb der
Datareceived.
Bisher fand ich alles ziemlich Logisch und Nachvollziehbar aber gerade
stehe ich auf dem Schlauch.
Mein Event funktioniert auch, weil es innerhalb von RS232_init wird eins
geworfen und im Form kann ich das abfangen und auf der Console ausgeben.
Ich hab Console als Debugmonitor drin, neben der Form.
Gut das scheint wohl eine C++/CLI Besonderheit zu sein.
In C# wäre es nichtmal möglich Funktionen außerhalb einer Klasse zu
definieren ;D
Dann muss wohl jemand mit C++/CLI Kenntnissen her ;D
Ich schätz das es einfach eine globale Variable ist, bzw ein gloaber
Verweis. Danke dir aber für deine Tipps.
Ich glaub irgendwann geh ich auch nach C#, wollte nur erstmal ein
Grundgerüst bauen bei CLI.
Hoffe einer hat noch eine Idee zu dem Problem, ich schein wohl
irgendetwas zu übersehen oder hab was falsch verstanden.
Einglich alles wie in C++ nur in C# geschrieben. Aber ich bekomme eine
Nullexception, sobald ich von der Datareveice ins RS232_empfang(datain);
geht, da in RS232_empfang scheinbar die
"_RS232_receive_handler(datain);" nicht mehr auffingbar ist.
Hat einer eine Idee?
Invoke geht bei den Punkt irgendwie nicht und ich find meist nur direkt
in GUI hilfe in Verbindung mit Invoke.
Ich will einglich die Daten aus dem Reveicehandler rausschicken zu
meinem eigenen Handler, der dann in einer Gui extra verwaltet wird.
Ist das ungewöhnlich die ganze RS232 geschichte in eine extra Klasse zu
verpacken, wo auch die ganze Datenverarbeitung drin steckt?
In der GUI wollt ich dann einglich nur aufrufe machen, zb RS232_config,
init...