3

我想将准备好的 HEX 文件上传到 Arduino 板。我怎样才能在 Java 代码中做到这一点?

我应该在 Java 中实现 STK500 协议吗?Java中是否有任何可行的解决方案或示例?

PS。我在Erlang中找到了一个STK500 实现,但我不知道。

4

2 回答 2

1

轮子存在。使用轮子。
使用优秀的 AVRdude 从 Java 上传。

/*
A command line looks like this in a stock Arduino IDE:

D:\arduino-dev\arduino-1.0.3\hardware/tools/avr/bin/avrdude   
-CD:\arduino-dev\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf 
-v -v -v -v -patmega328p -carduino 
-P\\.\COM8 -b115200 -D -V 
-Uflash:w:e:\Temp\build100458372319682483.tmp\Blink.cpp.hex:i

Just write the binary to the .HEX file and let the dude upload it:
*/

String hexfile = "e:\somefolder\Blink.cpp.hex";
String exefile = "D:\arduino-dev\arduino-1.0.3\hardware/tools/avr/bin/avrdude";
String conffile = "D:\arduino-dev\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf";
String opts = " -v -v -v -v -patmega328p -carduino -P\\.\COM8 -b115200 -D -V ";
String cmd = exefile +" -C"+ conffile + opts +" -Uflash:w:" + hexfile +":i";

Process proc = Runtime.getRuntime().exec(cmd);
int retcode = waitFor(proc);
于 2013-01-31T05:21:37.580 回答
1

我可以很容易地使用 Stk500 协议(Uno,仅限旧 arduinos)做到这一点。您唯一应该注意的是 DTR/RTS。

于 2013-03-16T18:13:56.107 回答