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
Du könntest Pipes benutzen: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/named_pipes.asp Oder einfache Windows-Messages: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/datacopyreference/datacopymessages/wm_copydata.asp Es gibt noch mehr Möglichkeiten, aber schau dir erstmal die an.
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
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
würde es nicht auch funktionieren wenn man die daten in eine datei schreibt und auf diese immer zugreift?*dummengedankenhinschreib*
ist eine datei nicht blockiert, wenn ein prozess schreibrechte darauf hat?
Man darf halt nich lesen und schreiben gleichzeitig.
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).
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
@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
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
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
tobi,hans. danke. ist eigentlich etwas chaos entstanden da wir hier durcheinander schreiben. werde einen extra thread aufmachen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.