Forum: PC-Programmierung Wie kann ich zwei PC-Programme miteinander reden lassen


von Tassilo (Gast)


Lesenswert?

Hi @All,

kennt jemand von Euch eine Möglichkeit in W2000/XP zwei bzw. drei
Programme miteinander reden zu lassen!? Meine Suche landete bei TCP/IP
und DDE. Beides finde ich aber in meinem Fall nicht sehr gut.

Vielleicht noch zum Sinn der Sache!

Ich habe ein CAN-Netzwerk an dem mehrere Boards (verschiedene) hängen.
Die Daten des CAN's werden über einen Wandler auf die RS232 des PC's
gelegt. Jetzt dachte ich mir, ich schreibe eine art Server der mir die
Daten von der RS232 holt und an das entsprechende Programm weitergibt!
z.B.: ein Programm verwaltet Analogeingänge das andere alles was
Digital ist!

Wie gesagt, dazu müssen die Programme miteinander reden können!

Mit bestem Dank

Tassilo

von Chris (Gast)


Lesenswert?


von T.Stütz (Gast)


Lesenswert?

Noch eine Möglichkeit, das Programm das die Daten von der RS232 liest
bekommt einen Mini-TCP/IP-Server (Stichwort WinSocket).

Damit hast du den Vorteil, das die Client-Programme nicht nur auf
diesem Rechner sein müßen, sondern auch irgendwo am Netzwerk hängen
können. Du bist nicht beschränkt in der Anzahl der Clients.

Ich weiß du hast oben schon erwähnt, das dir TCP/IP nicht gefällt,
jedoch denke ich das diese Lösung sinnvoll ist.

Zu den Pipes:
Du mußt immer wissen wieviele Programme zugreifen und jedem Pipe
zumindest eine Kennung verpaßen.

Zu den Messages:
Nur auf einem Rechner möglich und du mußt wissen wohin die Nachricht
geht (Fenstername oder Classname), außerdem ist es schwierig eine echte
2Wege Kommunikation aufzubauen.

Zu DDE (basiert ja auf Messages):
Finger weg, ist kompliziert, langsam und empfindlich

Gruss

von Tassilo (Gast)


Lesenswert?

Hi @All,

danke erstmal für die schnellen Antworten!

Also kleine Zusammenfassung:

Also eine Möglichkeit sind Pipes wie ich auf die schnelle gefunden habe
"Named Pipes"!

Die zweite Möglichkeit (gut, lasse mich ja überzeugen) TCP/IP und
sprich WinSocket.

Messages und DDE sind gestorben weil bescheiden!

Danke, für die Antworten und werde beida Sache näher beleuchten!

Liebe Grüße
Tassilo

von Schoaschi (Gast)


Lesenswert?

würde es nicht auch funktionieren wenn man die daten in eine datei
schreibt und auf diese immer zugreift?*dummengedankenhinschreib*

von Tobi (Gast)


Lesenswert?

ist eine datei nicht blockiert, wenn ein prozess schreibrechte darauf
hat?

von Thorsten (Gast)


Lesenswert?

Man darf halt nich lesen und schreiben gleichzeitig.

von dicky (Gast)


Lesenswert?

ja und da komme ich gleich zu einer frage die mich schon ein weile
beschäftigt:

nehmen wir an ich compiliere mir eine programm namens test.exe.

früher unter dos konnte ich problemlos auf die datei test.exe selbst
lesend und schreibend zugreifen, auch wenn das programm gerade lief.
habe das benutzt um bestimmte variablen (einstellungsdaten) dauerhaft
zu speichern. diese daten habe ich durch eine bestimmte zeichenfolge
problemlos erkennen können d.h. also diese stelle war nicht an einem
bestimmten offset ab dateibeginn. damit es schöner aussieht, habe ich
noch jedesmal das datei-datum auf einen festgelegten zeitpunkt
eingestellt. hat jahrelang prima funktioniert, beim kopieren des
programms auf einen anderen rechner waren immer gleich die variablen
wie beim letzten mal zur verfügung.

seit ich aber unter win programmiere, klappt das trotz aller
ausprobierter tricks nicht mehr. dabei ist es so praktisch... und ich
habe es aufgegeben.

jetzt keimt ein fünktchen hoffnung auf, dass hier doch jemand weiss ob
das geht. theoretisch könnte ich zur laufzeit versuchen test.exe nach
test.xxx zu kopieren (geht schon mal nicht da das lesen nicht geht) um
dann test.xxx zu verändern (geht) und anschliessend in test.exe
umzubenennen (geht nicht).

von Tassilo (Gast)


Lesenswert?

Hi Schoaschi,

>würde es nicht auch funktionieren wenn man die daten in eine datei
>schreibt und auf diese immer zugreift?*dummengedankenhinschreib*

So blöde finde ich die Idee garnicht! - War auch schon in meinem
Gedankengut! Habe Sie nur verworfen da ich es halt blöde finde eine
Sache auf die HD zu schreiben, wenn ich es auch im RAM machen kann!
Aber im Grunde ist es eine Möglichkeit!

Liebe Grüße
Tassilo

von Tobi (Gast)


Lesenswert?

@dicky
nimm 2 programme, wobei das eine das eigentlich aufruft und vorher eine
kopie erstellt. oder nimm einfach eine ganz normale datei für
konfigurationsdaten wie alle anderen programme auch. wer win
installiert hat, hat bestimmt auch dafür noch <1k speicher über

von Hans (Gast)


Lesenswert?

activeX aka com gibts da auch noch.. für die ganz lustigen gäbe es noch
corba aber damit kenn ich mich nix aus..com geht eigentlich ganz
einfach ;)

73

von Hans (Gast)


Lesenswert?

zum probelm,dass ein programm von sich selbst liest und schreibt..das
geht sicher... ;)

www.codeproject.com und irgendwas mit self extractor.. da war sowas in
die richtung...

aber config sachen legt man doch in einer schönen ini oder xml file
ab.. ;) dafür gibts schöne parser und man kann auch mal eben nachschaun
was drinnen steht.. (vor allem wenn man gerade als kammerjäder fungiert
und böse käfer bzw motten sucht ;)

73

von dicky (Gast)


Lesenswert?

tobi,hans. danke. ist eigentlich etwas chaos entstanden da wir hier
durcheinander schreiben. werde einen extra thread aufmachen.

von Marc (Gast)


Lesenswert?

Hallo,

eine andere Möglichkeit wäre ein Shared-Memory zu benutzen.Ist
eigentlich nur ein Speicherbereich der durch Verriegelungen, den
Schreib- und Lesevorgang regelt. Allerdings müßten die Programme
wissen, in welchem Datenbereich sich die Daten befinden und welche
Datenstruktur verwendet wird.

Gruss
Marc

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.