Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Daten von einem Programm ins andere übertragen (bisher läufts über eine Datei)
Spurius
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

Daten von einem Programm ins andere übertragen (bisher läufts über eine Datei)

beantworten | zitieren | melden

Hallo,
ich habe ein C-Programm was mir laufen 3 Werte in einer Textdatei aktualisiert, alle 10ms, 100ms würde auch noch reichen.
Außerdem habe ich ein C#-Programm, was diese Daten alle 100ms ausliest. Leider gibts einen Fehler. Das statische Lesn und Schreiben funktioniert, nur nicht das parallele. Hat da jemand eine Lösung dafür? Bzw. welche andere Möglichkeit zum Datenaustausch zwischen den beiden Programmen besteht?
Lg
private Nachricht | Beiträge des Benutzers
Scavanger
myCSharp.de - Member

Avatar #avatar-3209.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Müssen das unbedigt 2 Programme sein?

Wäre es nicht möglich entweder

a) das C Programm gleich in C# neu zu schreiben

oder

b) das C Programm in eine COM DLL "umzubauen" und in C# mittels DLLImport einzubinden?

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
private Nachricht | Beiträge des Benutzers
Spurius
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Ja sollten schon 2 Programme sein. Gibts trotzdem noch Hoffnung? Muss dazusagen dass ich nocht nicht so der ganz große Experte auf diesem Gebiet bin.
private Nachricht | Beiträge des Benutzers
Scavanger
myCSharp.de - Member

Avatar #avatar-3209.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Dann lautet dein Stichwort Interprozesskommunikation

Mit ein bisschen Googeln findest du genügend Beispiel für C(#).

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
private Nachricht | Beiträge des Benutzers
Sekkiy
myCSharp.de - Member



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

vielleicht hilft dir ja das: http://openbook.galileocomputing.de/visual_csharp/visual_csharp_10_003.htm ca. in der mitte, tabelle 10.4
dazu müsstest du das C# Programm zuerst starten.
private Nachricht | Beiträge des Benutzers
Scavanger
myCSharp.de - Member

Avatar #avatar-3209.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Bei solch hohen Aktualisierungsraten ist der Datenaustausch per Dateien (auf der Festplatte) relativ kritisch, eben weil die Datei ständig aktualisiert wird und dadurch oft durch Betriebssystem gesperrt ist. Hier ist die Interprozesskommunikation die sichere Lösung.
Hier gibt es z.B. den Ansatz das die Datei nicht auf der Festplatte gespeichert wird, sondern direkt im Arbeitsspeicher.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
private Nachricht | Beiträge des Benutzers
Spurius
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Ihr habt mich überzeugt, ich will es mit NamedPipes versuchen. Ich verwende VS2008Prof. und irgendwie kennt das System.IO.Pipes nicht, das brauche ich aber zwingend oder? OS ist XP mit SP3.
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo Spurius,

du musst IMHO eine entsprechende Assembly referenzieren.
private Nachricht | Beiträge des Benutzers
Spurius
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Hallo,
das sagt mir jetzt gar nichts... wie geht das denn bzw nach was muss ich da suchen?
Gruß
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

[FAQ] CS0234 / CS0246 - Der Typ- oder Namespacename "Foo" konnte nicht gefunden werden
private Nachricht | Beiträge des Benutzers
Spurius
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Ok, habs versucht... System.IO.Pipes scheint in System.Core zu liegen, wollte da einen Verweis hinzufügen aber System.Core lässt sich nicht auswählen, es ist angegraut??
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Spurius,

bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Verweise hinzufügen gehört auf jeden Fall zu den Grundlagen.

herbivore
private Nachricht | Beiträge des Benutzers