Я пытаюсь отправить строку в arduino с помощью библиотеки Ardulink
link.sendCustomMessage();
и я хотел бы, чтобы arduino подтвердил это сообщение, отправив его мне через Serial.println(); Однако я ничего не получаю от Ардуино.
После этого кода на ПК, измененном из учебника ardulink:
открытый класс 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)
Заранее спасибо!
вам нужно прекратить сообщение от Arduino до Ardulink с помощью Serial.write(255);
В противном случае Ardulink хранит байты в буфере, думая, что сообщение не закончено и не обрабатывает его. Когда буфер заполнен, возникает исключение.
Чтобы увидеть сообщение назад, вы должны добавить Raw Listener к вашему Java-коду.