Android和Arduino套接字

时间:2014-07-24 09:49:37

标签: android sockets arduino

我用Android和Arduino创建了一个服务器和客户端,但是我遇到了问题。 Android只读一次。为什么?这是我的代码:

客户端Android:

new Thread(new ClientThread()).start();
}

class ClientThread implements Runnable {
    @Override
    public void run() {     
        try {                   
            InetAddress serverAddr = InetAddress.getByName("192.168.1.240");        
            socket = new Socket(serverAddr, 8888);
            if(socket == null)System.out.println("SOCKET NULL");
            PrintWriter out = new PrintWriter(new BufferedWriter(
                    new OutputStreamWriter(socket.getOutputStream())),true);
            inFromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            while(true){
                msgFromServer = inFromServer.readLine();
                System.out.println(msgFromServer);

            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (socket != null) {
                System.out.println("STOP SOCKET");
                // close socket
            }
        }
    }
}

Arduino服务器:

void loop() {

YunClient client = server.accept();
sensorValue = analogRead(sensorPin);    
String myString = String(sensorValue);

if (client) {
  String command = "none";
  command = client.readString();
  Serial.println(sensorValue);
  client.print(myString+"\n");
}
}

logcat的:

    07-24 11:44:24.468: D/OpenGLRenderer(19693): Enabling debug mode 0
07-24 11:44:25.363: I/System.out(19693): 121

121是Arduino的价值。但这只显示一次。

它只工作一次。我希望每秒都能从Arduino接收数据。 谢谢你们!

1 个答案:

答案 0 :(得分:2)

你需要接受循环。否则它发送一个字符串并等待来自客户端的另一个连接。

YunClient client = server.accept();
void loop() {

    sensorValue = analogRead(sensorPin);    
    String myString = String(sensorValue);

    if (client) {
       String command = "none";
       command = client.readString();
       Serial.println(sensorValue);
       client.print(myString+"\n");
    }
}

另外,我不知道客户端向服务器发送内容的位置。而不是System.out.println应该是out.println?