我正在尝试使用 Ardulink 库将字符串发送到 arduino
link.sendCustomMessage();
我希望 arduino 通过 Serial.println() 将消息发送回给我来确认该消息;但是我没有从 Arduino 得到任何东西。
在 PC 上按照根据 ardulink 教程修改的代码进行操作:
公共(public)类输入测试{
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)
提前致谢!
您必须使用 Serial.write(255) 终止从 Arduino 到 Ardulink 的消息;
否则 Ardulink 将字节存储在缓冲区中,认为消息尚未完成并且不处理它。当缓冲区已满时,会引发异常。
为了查看返回的消息,您必须将原始监听器添加到 Java 代码中。
我是一名优秀的程序员,十分优秀!