Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » Wertübergabe c++ zu Java????

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.06.2005, 16:33 Uhr
~copper
Gast


Hallo ich habe ein c++ prog zur verfügung, dass einen Timecode,der sich alle 40ms ändert in der Linux Shell ausgibt. Wie kann ich diesen Wert auf ein Java Programm übertragen?
Ich habe schon probiert den wert in eine Datei zu schreiben und ihn von dem Java Prog. wieder auslesen zu lassen. Allerdings entstehen dann Lücken im Timecode, die Schreib - Leseprozesse der Progs. stören sich.

Also nochmal konkret meien Frage:
Wie bekomme ich einen Wert von eine mC++ Prog in ein Java Prog???

Thx für die Antworten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.06.2005, 18:43 Uhr
Pler
Einer von Vielen
(Operator)


Ich glaube, so was macht man über einen shared memory
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.06.2005, 19:26 Uhr
Spacelord
Hoffnungsloser Fall


Entweder JNI oder einfach den Ausgabestream des C++ Programms abfangen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.06.2005, 11:53 Uhr
~copper
Gast


Den Ausgabestream des c++ prog abfangen wie macht man so etwas?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.06.2005, 14:31 Uhr
Spacelord
Hoffnungsloser Fall


Dann musst du den C++ Prozess vom Java Programm aus starten (Runtime.getRuntime().exec("Dein Programmname") )und mit dem Rückgabewert ne Process Instanz initialisieren.
Jetzt kommst du über die Process Instanz an die Streams des C++ Programms(in,out,err).

Ist IMHO aber nur für wirklich einfache Datentransfers geeignet.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.06.2005, 15:27 Uhr
Spacelord
Hoffnungsloser Fall


Ich hab mal nen kleines Beispiel fertig gemacht.Ist aber sicherlich keine Referenz dafür wie man es machen sollte.

Das C++ "Programm":

C++:
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    int i=1;
    while(i<=10)
    {
        Sleep(500);
        cout<<i<<endl;
        ++i;
    }
    return 0;
}



Und der Java Code:


C++:
import java.io.*;

class CPPOut
{
   public static void main(String[] args)
   {
      Process proc;
      boolean notDone =true;
      String valueOfCppI;
      try
      {
        proc = Runtime.getRuntime().exec("test.exe");
        InputStream is = proc.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        while(notDone)
        {
          try
          {
            int exit;
            //exitValue wirft ne Exception wenn der Prozess noch läuft
            exit=proc.exitValue();
            if(exit==0)
            {
                  notDone=false;
                  System.out.println("Cpp Prozess wurde mit ExitCode "+exit+" beendet.");

                }
          }
          catch(IllegalThreadStateException e)
          {
               if((valueOfCppI = br.readLine())!=null)
               {
                  int valueOfJavaI=0;
                  valueOfJavaI = new Integer(valueOfCppI).intValue();
                  System.out.println("Wert von I im Java Programm :"+valueOfJavaI);
               }
          }
        }//while
      }//try
      catch(IOException e)
      {
          System.out.println(e.toString());
      }

   } //main
}




Geht bestimmt auch schöner aber funktioniert.

MfG Spacelord

PS: Die Formatierung ist so bescheiden weil ich kein Bock hatte Eclipse zu starten (766Mhz Rechner ) und mit Context wird es nie so dolle...
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 15.06.2005 um 15:42 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.06.2005, 17:20 Uhr
~copper
Gast


Danke deine Variante funzt. Auch wenn der Timecode nicht auf die Millisecunde genau gelesen wird. Sprich ich bekomme Sprünge von 9 Frames.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.06.2005, 17:39 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~copper:

Danke deine Variante funzt. Auch wenn der Timecode nicht auf die Millisecunde genau gelesen wird. Sprich ich bekomme Sprünge von 9 Frames.



Das ist klar das Ganze ist ja in keinerlei Weise synchronisiert.Das Java Programm schaut ja eigentlich nur ständig nach ob im Buffer was steht und durchläuft dann wieder die komplette while Schleife.Aus Performancesicht ist das absoluter Schrott.
Ich denke auch auch dass,wenn du die ms noch weiter runterschraubst,das C++ Programm dem Java Programm "wegläuft".Sprich das C++ Programm produziert mehr Output als das Java Programm abholen kann.Kein Ahnung was genau dann passiert......aber wohl nichts gutes .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: