Schade, dass es hierzu bisher kein Feedback gegeben hat. Denn gerade bei der Roboterprogrammierung vermißt man schon mal schmerzlich Threading. Es geht zwar auch anders ... aber JAVA (und damit HaikuVM) bietet hierfür einen Sprachstandard (synchronized, wait(), etc.) und die Klasse Thread. Vielleicht sollte ich noch mal für HaikuVM werben und mache hiermit auf zwei Highlights aufmerksam:
1) Single line command interface
Nach dem Download genügt ein Einzeiler um ein JAVA Programm (z.B. BlinkWithThread) zu compileren, uploaden und zu starten wenn der Arduino z.B. an Port com5 angeschlossen ist:
Code:
C:\haikuVM\bin\haiku -v --Config arduino --Config:Port com5 -o BlinkWithThread.hex C:\haikuVM\examples\src\main\java\arduino\tutorial\BlinkWithThread.java
2) Direct memory access
Statische Felder welche mit @NativeCVariable# annotiert sind (wobei # in 8, 16, 32 oder 64) werden direkt auf gleichnamige C Variablen gemapt. Dadurch kann man mit HaikuVM auch hardwarenah programmieren (ohne extra C Code schreiben zu müssen):
Code:
...
public static final int UDRE0 = 5;
@NativeCVariable8 // tells HaikuVM to map UCSR0A to an AVR 8Bit C variable called UCSR0A
public static int UCSR0A;
@NativeCVariable8 // tells HaikuVM to map UDR0 to an AVR 8Bit C variable called UDR0
public static int UDR0;
...
public void write(int b) {
while ( (UCSR0A & (1 << UDRE0)) == 0 ) /*poll*/ ;
UDR0=b;
};
Lesezeichen