man kann 2 IPS Prozesse mit Server Socket und Client Socket verbinden. Ob sich die beiden Prozesse auf 2 Rechnern befinden oder auf einen Rechner 2 verschiedenen Versionen (V1.0,V2.0) ist dabei Egal. Ich schicke die Daten die von der I/O Instanz (FTDI) kommen einmal an den Splitter und über 4 Registervariable Instanzen an die Socket Instanz (Netzwerk). Dadurch habe ich die Informationen in 2 IPS Systeme und kann sie Parallel bearbeiten. Diese ist sehr praktisch beim Umstieg von V1.0 nach V2.0. Mann kann Funktion für Funktion portieren und es Funktioniert doch immer alles. Wenn einer daran Interesse hat kann ich das Verfahren auch noch genauer Beschreiben (Screenshot Scripte ect.)
Hallo Thomas,
wieso 4 RegVar? was machen die? Eine für In- und Output verstehe ich ja, oder trennst du das noch nach FS20- und FHT-Stack? Aber das kommt doch gemischt rein, oder?
ich verbinde mit diesem Verfahren 2 IPS Instanzen. Einmal die V1.0 und einmal V2.0.
Zur Vereinfachung ist die IPS Instanz mit der Hardware die „IPS A“ und die ohne „IPS B“. Bei mit ist die V2.0 „IPS A“. Es können genauso gut auch 2 IPS V2.0 auf verschiedenen Rechnern sein.
Ich habe eine FHZ1300 mit einer FTDI Instanz. Der Datenstrom von der FTDI ist mit 2 Registervariablen verbunden. Eine für Eingabe und eine für Ausgabe.
Die FTDI Instanz ist als 3. standardmäßig mit dem „FHZ1X00PC“ Splitter verbunden.
Die Verbindung zur „IPS B“ ist mit einem Server Socket und einem Client Socket realisiert. Auf welcher Seite der Server und wer der Client ist, ist egal. Bei „IPS A“ ist die Netzwerk Instanz auch mit 2 Registervariablen verbunden. Wieder eine für Eingabe und eine für die Ausgabe. Über die 2 Scripte wird nun der Empfang, der einen Seite mit dem Senden der anderen Seite verbunden. Die 2 Skripte haben folgenden Inhalt:
Die Angelegten Instanzen sind in dem Anhang dargestellt.
In „IPS B“ ist die Netzwerkinstanz auch mit dem „FHZ1X00PC“ Splitter verbunden.
Über „Change“ Ereignis einer Variablen kann nun eigene Informationen in den Datenstrom einbinden und mit dem einer „Cutter“ Instanz herausfiltern. (Vielleicht besser mit getrennter Netzwerkverbindung) .
Ich benutze es bei mir um die Funktionen Stück für Stück von dem alten IPS auf das neue IPS zu übernehmen.
Ich hoffe ich habe euch mit meiner Beschreibung geholfen.
ich habe von dem Rest auch noch Screenshots gemacht. Ich hoffe es hilft dir weiter. Bei dem Client und Server Socket muss die gleiche Portnummer angegeben werden. Du solltest eine hohe Portnummer benutzen um nicht mit anderen Ports zu kollidieren. z.B ist 80 für Http reserviert oder 21 für FTP. Wenn du V1 und V2 auf dem gleichen Rechner hast kannst du als IP Adresse die 127.0.0.1 benutzen. Wenn es aber auf 2 Rechner verteilt ist musst du die Adresse verwenden wo der Server Socket ist. (also da wo die V1 ist)
danke für Deine Hilfe, aber ich kriegs einfach nicht hin. Im Moment kann ich nur auf IPS V1 zugreifen, evtl. liegt es daran (zwischen ClientSocket und den Registervariablen kann ich keine Verbindung durch ein Script einstellen).
Beim Server läßt sich nur der Port, beim Client der Port und die IP-Adresse einstellen. Mehr geht leider nicht. Ich hoffe, dass in Kürze mein Update wieder freigeschaltet wird, damit ich mit der V2 mal testen kann.
es gibt auch keine Verbindung zwischen dem Client Socket und der Registervariable. Die 2 Scripte sind zwischen denn Registervariable Instanzen.
Ich versuche vielleicht einmal kurz das Prinzip zu beschreiben. Die Verbindungen funktionieren über Transportieren Datenströme. Also aufeinander folgende Zeichen. Diese Kannst du in dem Debuggerfenster sehen (V2 => Instanz => Debug). Von dem ELV FHZ geht also über die USB Schnittstelle und dann die FTDI Instanz ein Datenstrom. Diese muss dann an die Registervariable FTDI Empfange und an die Splitter Instanz „FHZ1X00PC“. Das an den Splitter ist ja normal und habe ich auch nicht weite beschrieben. Wenn in „FTDI Empfangen“ Daten Empfangen werden, wird das Script aufgerufen und die Daten in „Socket Senden“ eingetragen wo sie dann an den „Client Socket V1.1“ weitergeleitet werden. Dieser Sendet die Daten an Den Server in V1. Der Server Stocket ist dann mit dem Splitter verbunden. Der Rückweg funktioniert dann Entsprechend andersherum. Es ist sehr hilfreich das ganze stück für zu Testen. Also im Debuggerfenster zu kontrollieren ob Daten kommen.
Das bei dem Server keine IP einstellbar ist ist bei mir auch so. Ist als die IP des Rechners.
so langsam erkennen ich wo mein Problem liegt (Übrigens, in der Zeit, in der ich versuche die Sockets zum Laufen zu bringen, hätte ich die wichtigsten Scripte auch so übertragen und fertiggestelle, aber jetzt will ich es doch zum laufen bringen).
Ich habe erst mal Server und Client Socket auf IPS V1 eingerichtet. Mit vier Variablen, zwei jeweils zum senden und empfangen. Wenn ich in der Clientvariable fürs senden etwas eingebe, dann erscheint der Text auch auf der Empfangenvariable des Servers. Umgekehrt klappts genauso.
Danach habe ich den Client auf der IPS V2 eingerichtet. Wenn ich von V1 nach V2 etwas sende, dann gehts. Aber von V2 nach V1 geht nix. Im Debugfenster meiner Registervariable wird nichts angezeigt.
Darauf hin habe ich noch einen Server Socket unter V2 eingerichtet (natürlich mit anderen Ports). Hier passiert dann folgendes. Ich kann von V2 an V2 nichts senden. Wenn ich dann den Client unter V1 auf den Port des Servers unter V2 einstelle, dann kann ich wieder von V1 nach V2 senden.
Mein Problem besteht also im Senden von V2 (egal ob als Server, oder als Client). Wenn ich die Variabe von Hand ändere, kommt schon im Debugfenster des Sockets nichts an. Ich vermute, dass die Verknüpfung zwischen Socket und Registervariable falsch ist.
Ich habe den Socket als übergeordnete Instanz eingetragen, aber eigentlich müsste es ja die untergeordnete Instanz sein, aber im Einstellfenster für den Socket kann ich keine übergeordnete Instanz eintragen.
das Senden in der V2 geht in meinem Beschreibung nicht über das verändern einer Variablen, sonder durch Aufruf des Befehls in dem Script. Wenn du bei Register Variable das Häkchen bei Senden machst und dort eine Variable einträgst sollte auch beim Ändern der Variable das Senden funktionieren.
eben nicht! Wenn ich die Variable in der RegisterVariable eintrage und das Häkchen bei Senden mache, dann kommt in V1 nichts an. (Von V1 nach V2 gehts so.)
Jetzt habe ich mal einfach Dein Script angelegt und auf OnUpdate für die Variable das Script getriggert (bisher wusste ich nicht so genau, an welcher Stelle ih Dein Script einbinden soll), jetzt klappts es auch von V2 nach V1. Damit kann ich endlich zwischen beiden IPS Daten versenden.
Ich denke für die Musik wird V1 wohl noch länger bei mir laufen müssen. Da scheint in V2 noch nichts 100%ig zu funktionieren (mit mehreren Soundkarten).
Ich wünsche ein frohes Fest und einen guten Rutsch, ich mache jetzt erst mal Urlaub und träume von den neuen Möglichkeiten.