Publish Subscriber Design Pattern
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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
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
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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..
Es funktioniert trotzdem, aber es wird halt nicht sauber in die Dispatchertabelle geschrieben.
Lg montanaro
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..
Es funktioniert trotzdem, aber es wird halt nicht sauber in die Dispatchertabelle geschrieben.
Lg montanaro
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Publish Subscriber Design Pattern
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.
Nur Vermutungen, denn bei anderen Clients funktioniert es.
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
Hallo Eg,
ich habe den einen Client neu geschrieben. Jetzt wird wieder alles sauber abgewickelt.
Danke.
Lg
montanaro
ich habe den einen Client neu geschrieben. Jetzt wird wieder alles sauber abgewickelt.
Danke.
Lg
montanaro
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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
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
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Publish Subscriber Design Pattern
Kannst du dein Subscribe Data VI anhängen?
Welche Topics will ClientX empfangen und welche sendet der ClientY ?
Welche Topics will ClientX empfangen und welche sendet der ClientY ?
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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
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
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Publish Subscriber Design Pattern
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?
wie wird der Client mit Werten gefüttert?
Was hat es mit der lokalen Variblen zu tun?
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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
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
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Publish Subscriber Design Pattern
Wenn es doch mehrere Daten sind, dann kannst du die entweder einzeln nacheinander abschicken oder alles zusammen als ein Array.
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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
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
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Publish Subscriber Design Pattern
Welche Daten hast du denn? Kannst du denn keinen Cluster daraus machen? Oder Array aus Cluster?
-
- user
- Сообщения: 81
- Зарегистрирован: 01 сен 2008, 19:14
- Версия LabVIEW: 8.6, 2009
- Откуда: Südtirol-Italien
- Контактная информация:
Re: Publish Subscriber Design Pattern
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
Hier eine Lösung, die verbessert werden muss.
Grüße
montanaro