Publish Subscriber Design Pattern

Aufbau und Planung von Softwareprojekten, UML, Zustandsautomaten, Softwaremodule, OOP
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Hallo eg,
zunächst wünsche ich ein frohes ubd gesundes neues Jahr.
Ich muss dich leider wieder belästigen. Mal abgesehen von dem, was wir oben bereits besprochen haben.
Bei mir schleicht sich bei einem Client eine unsaubere Sache ein. In der dispatcher-Tabelle wird zunächst eine Referenz mit dem exit angegeben, wenn ich dann am client subsrive daten auslöse, so wird eine neue Referenznummer eingetragen und am Datentyp di TCP Verbindung eingetragen. Dies passiert, da im dispatcher im subscrive case die Fror-Schleife 2 Referenzen ausgibt.
Dies, weil das Sub VI subscrive bei client eine n+1 ausgibt, wobei n = die Anzahl der subscrive daten ist. Im screen shot habe ich einen roten Kreis über die Problemelemente gelegt.
Ich Kopfe nun schon seit zwei Tagen rum, kann aber nicht verstehen, warum im SubVI subscrive das Data->Client eine Zahl ausgibt die die doppelte Referenz entstehen lässt.
Vielleicht übersehe ich hier etwas?
Danke.
Lg montanaro
Вложения
Test01.png
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Hallo eg,

nun habe ich nocheinmal alles genau verfolgt und leider keinen Softwareunterschied entdeckt. Allerdings gibt die Queue am dispatcher bei den anderen Clients sauber denselben Client Kodex aus, beim anderen Client entstehen im Ausgang der Queue zwei unterschiedliche Client Kodex, einmal für subscrive exit und einmal für subscrive daten. Deshalb errechnet sich das Subscrive SubVi im Ausgang 2 Referenzen, und trägt dann im dispatcher den Eintrag wie im vorherigen screen shot.
Schuld ist wohl wer in die Queue schreibt. Und das passiert wohl im servicetask.vi. aber der Client gibt die Referenz richtig aus. Hmm.. :think:
Es funktioniert trotzdem, aber es wird halt nicht sauber in die Dispatchertabelle geschrieben.
Lg montanaro
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение Eugen Graf »

Das Problem ist vermutlich das Abmelden eines TCP Clients. Man MUSS den Client mit "unsubscribe" abmelden, denn beim TCP kriegt man nicht ganz mit wenn der Client tot ist. Wenn ein TCP Client sich richtig an und abmeldet, wird auch der Dispatcher sauber arbeiten.
Nur Vermutungen, denn bei anderen Clients funktioniert es.
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Hallo Eg,

ich habe den einen Client neu geschrieben. Jetzt wird wieder alles sauber abgewickelt. :super:
Danke.
Lg
montanaro
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Hallo,

ich möchte, dass sich ClientX beim Dispatcher anmeldet, alle Topics übergibt und sich von ClientY alle Werte schicken lässt, die ihn interessieren.
Habe es ausprobiert und es hat funktioniert, allerdings mit folgenden Erkenntnissen:
1. Einführung lokaler Variablen
2. So wie ich das aufgebaut habe, wird nur ein Wert gesendet (Daten1).

Wie bereits früher gesagt, so geht einiges über meine Kenntnisse hinaus, trotzdem will ich nicht loslassen und eine ordentliche Lösung finden.
Kann mir jemand helfen?
Danke und Grüße
montanaro
Вложения
clientX.png
clientX.png (9.5 КБ) 10332 просмотра
clientY.png
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение Eugen Graf »

Kannst du dein Subscribe Data VI anhängen?

Welche Topics will ClientX empfangen und welche sendet der ClientY ?
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

ich möchte einfach mehrere Daten von Client X an Client Y senden, d.h. Client X wird somit mit den aktuellen Werten gefüttert.
Leider weiss ich nicht wie ich die Daten hintereinander einfügen kann.
Grüße
montanaro
Вложения
TCP_Subscrive_Daten_Client.vi
(10.52 КБ) 278 скачиваний
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение Eugen Graf »

Ah, ok, das ist ja anderes Problem. Dann folgende Fragen:
wie wird der Client mit Werten gefüttert?
Was hat es mit der lokalen Variblen zu tun?
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Der Client hört die TCP/IP Kommunikation ab, sind für ihn Daten bestimmt, so wird über die untere While Schleife das Benutzererreignis aufgerufen.
Nur, im Falle, dass es mehrere Daten zu übertragen gilt, müsste es entweder eine Möglichkeit geben, ein Benutzerereigniss aufzurufen, welches alle Daten abarbeiten kann (hier bricht mein Wissen ab!!),
oder der Client Y schickt hintereinander alle Daten einzeln ab.
Ja die lokalen Variablen, die hängen mit der Art der Programmierung zusammen.
Grüße
montanaro
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение Eugen Graf »

Wenn es doch mehrere Daten sind, dann kannst du die entweder einzeln nacheinander abschicken oder alles zusammen als ein Array.
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Das ist sicher korrekt. Sind die Datentypen unterschiedlich, dann geht das Array wohl nicht gut.
Das topic "start" bewirkt einen user event, wo ich über TCP alle Daten anhänge mit topic "init", am ClientX
wird "init" als user event aufgerufen, und alle Daten werden herausgezogen.
Wie kann ich Datentypunabhängig übertragen und wie kann ich die Daten einpacken?
Grüße
montanaro
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение Eugen Graf »

Welche Daten hast du denn? Kannst du denn keinen Cluster daraus machen? Oder Array aus Cluster?
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

ich habe nur Testdaten, möchte es deshalb allgemein für jeden Datentyp lösen.
Hier eine Lösung, die verbessert werden muss.
Grüße
montanaro
Вложения
clientX.png
clientX.png (9.5 КБ) 10303 просмотра
clientX_daten1_true.png
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Habe die falsche Datei hochgeladen.
Вложения
clientX_init.png
montanaro
user
user
Сообщения: 81
Зарегистрирован: 01 сен 2008, 19:14
Версия LabVIEW: 8.6, 2009
Откуда: Südtirol-Italien
Контактная информация:

Re: Publish Subscriber Design Pattern

Сообщение montanaro »

Entschuldige bitte, jetzt die richtige Datei.
Вложения
clientY.png
Ответить

Вернуться в «Programmiermuster»