Wie kann ich zwei PC-Programme miteinander reden lassen

Gast #200772
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
Gast #200773
Lesenswert?

Gast #200774
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
Gast #200775
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
Gast #200779
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).
Gast #200780
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
Gast #200781
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
Gast #200783
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
Gast #200785
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren