Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Daten zwischen zwei Programmen austauschen? (https://www.delphipraxis.net/55122-daten-zwischen-zwei-programmen-austauschen.html)

moelski 17. Okt 2005 08:26


Daten zwischen zwei Programmen austauschen?
 
Moin !

Wir haben im Moment folgendes Problem. Unsere Anwendung wertet Daten vom seriellen Port aus. In manchen Situationen wäre es sehr hilfreich, wenn man diese Daten an andere Programme weiterreichen könnte.
Die Frage ist nun, wie kann unsere Anwendung die Daten bereitstellen und wie kann eine andere Anwendung diese entgegen nehmen? Das ganze müsste auch noch relativ fix geschehen.

Eine Alternative wäre sicherlich, die Daten über einen "seriellen Splitter" bereitzustellen. Aber das würde unseren Anwendern Kosten bereiten. Das wäre also nicht wirklich eine Lösung.

Bernhard Geyer 17. Okt 2005 08:34

Re: Daten zwischen zwei Programmen austauschen?
 
Möglichkeiten wären:

- COM/Automatisierungs-Schnittstelle
- Socket-Verbindung
- WM_COPYDATA-Messages

Je nach weitergehenden Anforderungen wäre die eine oder andere Lösung die beste.

moelski 17. Okt 2005 09:46

Re: Daten zwischen zwei Programmen austauschen?
 
Moin !

Habe jetzt noch etwas mit deinen Begriffen im Web gesucht und bin auf IPC gestoßen. Bei Delphi ist sogar eine kleine Demo zu dem Thema dabei.

Nun ist es da aber so, das immer nur ein "Client" die Daten empfangen kann. Geht das prinzipiell auch mit mehr als einem Client?

Sharky 17. Okt 2005 09:58

Re: Daten zwischen zwei Programmen austauschen?
 
Hai moelski,

(m)ein Lösungsansatz wäre so:
  • Ein Programm liest die Daten vom seriellen Port aus und speichert diese
  • Die Clients verbinden sich mit diesem Programm (Server) über einen TCP-Socket.
  • Der Server teilt den Programmen einen Timestamp mit
  • Die Clients fordern alle Daten an die seit dem erhalt des letzten Timestamp beim Server gespeichet wurden
  • Die Clients trennen die Verbindung und rufen jetzt die Daten in einem beliebigen Intervall (5 Minuten) ab
Wenn Du den Clients jetzt noch eine Session-ID für sagen wir 30 Minuten gibst und serverseitig die S-ID und die IP speicherst kannst Du auch noch prüfen ob ein Client regelmässig seine Daten abholt.

moelski 17. Okt 2005 10:03

Re: Daten zwischen zwei Programmen austauschen?
 
Moin !

Hmm, sicher keine schlechte Idee ... Aber ...
Bei uns kommen im Sekundentakt Daten rein. Dazu kommt noch das der "Server" diese Daten in Echtzeit verarbeiten muss. Also ich würde die Daten gerne mit Timestamp bereitstellen und jede Anwendung die diese Daten haben möchte holt sie sich einfach. Anhand des TimeStamp kann man dann am "Client" sehen ob die Daten angekommen sind. Eine Gültigkeitsprüfung macht der Client eh.

Tja, bleibt halt nur die Frage ob ich auch die Daten an mehrere Clients "verteilen" kann.

Luckie 17. Okt 2005 10:45

Re: Daten zwischen zwei Programmen austauschen?
 
Wer sagt denn, dass nur ein Fenster auf die WM_COPYDATA Nachricht reagieren muss? Oder wie eäre es mit Pipes oder MMFs?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz