通过serial.read()确认从Ardulink的sendCustomMessage()收到的消息

时间:2014-12-26 07:16:06

标签: java serial-port arduino

我正在尝试使用Ardulink Library的

将字符串发送到arduino
link.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)

提前致谢!

1 个答案:

答案 0 :(得分:0)

你必须使用Serial.write(255)终止从Arduino到Ardulink的消息;

否则Ardulink将字节存储在缓冲区中,认为消息未完成且不处理它。当缓冲区已满时,异常会升起。

为了查看消息,您必须在Java代码中添加Raw Listener。