# Verbindung mit c-Programm



## clupus (4. Okt 2008)

Hallo an alle,

ich bin eigentlich ein Programmer der mit C unter Microcontrollern arbeitet und auch ab und zu ein bisschen was in java für den PC schreibt.

Nun muss/möchte ich einige Code-Schnipsel (avr-gcc codes, die im Prinzip ganz normales C sind) auf einem PC simulieren lassen. Diese Codes enthalten lediglich einige Methoden, die ein paar Berechnungen machen. Anschließend soll wieder was zurück gegeben werden. Bsp:

```
do_calc(){
if(a>5){
c=b+4;
} else {
c=b+2;
}
a++;
}
```
Dazu würde ich eben gerne eine Art Basis in Java schreiben, die die Hardware "simuliert". Nach Simulation soll dann einmal der avr-Code die Variablen aktualisieren und dann wird wieder ein weiterer Schritt simuliert.

Wie kann man so was implementieren? Ich vermute mal mittels disem Native Inteerface oder wie das heißt oder habt ihr eine bessere Möglichkeit?
Wie muss ich das einbinden in Java?
Muss ich die C-Codes als shared library einbinden? Wenn ich erst ein mal den Java Code laufen hab, kann ich dann Änderungen an den C-Codes machen und nur diese neu übersetzen?

Danke schonmal
Christian


----------



## foobar (5. Okt 2008)

Genau, dafür gibt es JNI oder sowas: http://www.swig.org/


----------



## Guest (1. Feb 2009)

warum mit java, nimt doch C#, da kannst Du C-Modul einfach als dll einbinden und Methodenaufrufe bzw. Callbacks nutzen. Java ist dafür nicht geeignet z.b. weil delegates fehlen.

Du kannst z.B. sowas schreiben:


```
public delegate void CallbackDef();
        public delegate void CallbackDef1([MarshalAs(UnmanagedType.LPStr)] string s, [MarshalAs(UnmanagedType.LPStr)] string s1);
                
        public CallbackDef callback;
        public CallbackDef1 callback1;

        [DllImport(@"xyz.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern void Register(CallbackDef callback, CallbackDef1 callback1);
```


----------



## Landei (2. Feb 2009)

Hab's zwar selbst noch nicht probiert, aber vielleicht hilft dir ja JNA ( https://jna.dev.java.net/ ) weiter?


----------



## VuuRWerK (3. Feb 2009)

Hallo Christian,

zum simulieren von AVR-µC kannst Du doch das AVR-Studio benutzen. Da kannst Du sowohl Deinen ASM als auch C Code testen und simulieren lassen und das für jeden µC der Atmel-Family.
Ports, Register, SRAM, EEPROM, usw. wird alles simuliert und unterstützt.

Grüße
Christian


----------

