-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Subscriber Issue #67
Comments
Ich habe nir jetzt einen FB "MyReceiver" wie folgt definiert:
Diesen verwende ich im FB "FirstSubscription" anstelle des Receivers aus der Library. Die Vorgaben kamen automatisch vom Codesys, auch die Methode "PublishReceived". Diese wird nun bei jedem Empfang automatisch aufgerufen, und somit kann ich mir die empfangenen Daten in einen Buffer schreiben:
Nach wie vor habe ich nur einen einzigen Receiver und einen einzigen Topic, der empfangen wird, da muß ich mit Wildcards arbeiten. Geht auch irgendwie. Sorry, mit dem ganzen objektorientierten Kram kenne ich mich wenig aus, seit ich vor 15 Jahren mit Codesys 2.3 angefangen habe und dann irgendwann auf die 3.5 umgestiegen bin. |
Danke für die Erklärung mit den Subscribern, die haben ja dann mit dem Receiver nichts zu tun. Ich hab mir 2 Subscriber gemacht, die jeweils einen Topic mit nur 1 Wildcard abonnieren. |
Hallo,
ich habe mir die Funktionen aus dem InteractionHowto.project in mein Projekt übernommen. Als Gegenstelle habe ich lokal den Server von mosquitto.org unter Windows laufen. Was soweit geht ist:
Beim Empfang von Nachrichten habe ich aber irgenwie ein grundsätzliches Verständnisproblem. Ich habe eine Hauptfunktion gemacht, aus der gemäß Demoprojekt zyklisch der Client FB, der Publisher und der Subscriber aufgerufen werden:
In FirstSubscription dann im Header:
und im Deklarationsteil:
Der FB Subscriber ist also irgendwie die Hauptfunktion für den Empfang? Wird ja auch zyklisch aufgerufen.
Der FB Collector ist dann so eine Art Sammelfunktion, die dem Subscriber über .Callback gemeldet wird?
Und schließlich der FB Receiver, hier vom Typ ReceiveString, der beim Collector über den put-Befehl angemeldet wird. So wie ich das verstanden habe, brauche ich für jeden Topic, den ich abbonieren möchte, einen eigenen Receiver, den ich per put-Befehl beim Collector anmelde?
Ich habe mal einen zweiten Receiver2 erstellt, der einen zweiten Topic empfangen soll. Dem gebe ich "Room2/Temp" als Suchstring mit.
Und wieso muß das überhaupt beim Subscriber nochmal angeben werden? Siehe Zeile
Subscriber.Topic:= ADR('TestTopic/FromCodesys');
Da geht ja dann irgendwie doch nur ein Topic.
Was ich nun beim mosquitto Server sehe, ist daß sich der Client anmeldet und "TestTopic/FromCodesys" abonniert, jedoch nicht "Room2/Temp". Alles was ich mit "Room2/Temp" publishe, wird demnach auch niemals beim Client ankommen.
Was ankommt, ist "TestTopic/FromCodesys", das sehe ich im Debugger als Text in MQTTReceived des ersten Receivers.
Was dann noch fehlt, ist irgenwie eine Callbackfunktion, die im Falle eines Empfangs dann automatisch aufgerufen wird? Bzw. deren Methode .PublishReceived? Wo schreibe ich das hin? Der Receiver ist ist ja schon deklariert, muß also noch mit der PublishReceived Methode erweitert werden?
The text was updated successfully, but these errors were encountered: