mikrocontroller.net

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


Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest Pipes benutzen:
http://msdn.microsoft.com/library/default.asp?url=...

Oder einfache Windows-Messages:
http://msdn.microsoft.com/library/default.asp?url=...

Es gibt noch mehr Möglichkeiten, aber schau dir erstmal die an.

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Schoaschi (Gast)
Datum:

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

Autor: Tobi (Gast)
Datum:

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

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man darf halt nich lesen und schreiben gleichzeitig.

Autor: dicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dicky (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.