我正在尝试使用Ardulink Library的
将字符串发送到arduinolink.sendCustomMessage();
我希望arduino通过Serial.println()将它发回给我来确认该消息;但是我没有从Arduino那里得到任何东西。
在从ardulink教程修改的PC上执行此代码:
public class InputTest {
public static void main(String[] args) {
Link link = Link.getDefaultInstance();
link.addConnectionListener(new ConnectionListener() {
@Override
public void disconnected(DisconnectionEvent e) {
System.out.println("Board disconnected");
}
@Override
public void connected(ConnectionEvent e) {
System.out.println("Board connected");
}
});
link.connect("COM5");
try {
System.out.println("wait for a while");
Thread.sleep(2000);
System.out.println("proceed");
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("start Listening");
while(true)
{
link.sendCustomMessage("omglol");
}
}
}
在Arduino上执行此代码:
String inData;
void setup()
{
Serial.begin(115200);
}
void loop()
{
inData="";
if (Serial.available() > 0)
{
int h=Serial.available(); // if you are getting escape -characters try h--; here
for (int i=0;i<h;i++)
{
inData += (char)Serial.read();
}
// if you are getting escape -characters try Serial.read(); here
}
//print it out
Serial.println(inData);
}
我不知道我是否正确行事;但我得到错误:
Exception in thread "Thread-2" java.lang.ArrayIndexOutOfBoundsException: 1024 at org.zu.ardulink.connection.serial.AbstractSerialConnection$SerialReader.run(AbstractSerialConnection.java:190)
at java.lang.Thread.run(Unknown Source)
提前致谢!
答案 0 :(得分:0)
你必须使用Serial.write(255)终止从Arduino到Ardulink的消息;
否则Ardulink将字节存储在缓冲区中,认为消息未完成且不处理它。当缓冲区已满时,异常会升起。
为了查看消息,您必须在Java代码中添加Raw Listener。