2012-07-26 34 views
0

我发现了一款​​名为“SensorLogger”的iPhone应用程序,可以记录大多数iPhone传感器的数据,然后通过电子邮件发送它们,但它也可以通过电子邮件使用UDP数据包的网络,这里是代码(JAVA)我用它来接收数据:使用Java应用程序从iPhone到PC的传感器数据

import java.io.*; 
import java.net.*; 

public class Main { 
    public static void main(String[] args) throws UnknownHostException, SocketException, IOException { 
     DatagramSocket socket = new DatagramSocket(5555, InetAddress.getByName("0.0.0.0")); 
     byte[] buf = new byte[64]; 
     DatagramPacket packet = new DatagramPacket(buf, buf.length); 
     while (true) { 
      socket.receive(packet); 
      String data = new String(packet.getData()); 
      System.out.println(java.util.Arrays.toString(data.split(","))); 
     } 
    } 
} 

它完美的作品,这里是在iPhone上运行的应用程序的输出:

[1343331999601, 4, 0.0013, -0.0049, -0.00237] 
[1343331999636, 4, -0.0024, 0.0049, -0.00477] 
[1343331999670, 4, -0.0073, 0.0073, -0.00377] 
[1343331999704, 4, -0.0036, 0.0024, -0.00247] 

第一个数字是一个时间戳,但我不知道这些数字是什么意思,它不符合日期/吨iPhone上的时间...第二个数字表示使用什么传感器,1是GPS位置,2是指南针,3是加速计,4是陀螺仪。最终数字是传感器的值(由第二个数字定义)。现在,我想做一个小的GUI应用程序,它将以更友好的方式显示所有这些值......但是,这是我第一次用Java编程,而且我不知道该怎么做......可以任何人都请发送一个示例代码,以便我能够理解如何做到这一点,并重复所有的值。

谢谢大家,祝大家度过愉快的一天。

回答

0

问题解决了,终于用该代码:

import java.io.*; 
import java.net.*; 
import java.util.*; 

public class Main { 
    public static void main(String[] args) throws UnknownHostException, SocketException, IOException { 
     DatagramSocket socket = new DatagramSocket(5555, InetAddress.getByName("0.0.0.0")); 
     byte[] buf = new byte[64]; 
     DatagramPacket packet = new DatagramPacket(buf, buf.length); 
     while (true) { 
      socket.receive(packet); 
      String data = new String(packet.getData()); 
      String[] dataParsed = data.split(","); 
      float timestamp = Float.parseFloat(dataParsed[0]); 
      float sensortype = Float.parseFloat(dataParsed[1]); 
      float x = Float.parseFloat(dataParsed[2]); 
      float y = Float.parseFloat(dataParsed[3]); 
      float z = Float.parseFloat(dataParsed[4]); 
      String sensorname = new String(); 
      if (sensortype == 1) { 
       sensorname = "GPS"; 
      } 
      else if (sensortype == 2) { 
       sensorname = "Magnetometer"; 
      } 
      else if (sensortype == 3) { 
       sensorname = "Accelerometer"; 
      } 
      else if (sensortype == 4) { 
       sensorname = "Gyroscope"; 
      } 
      else if (true) { 
       sensorname = "Unknown"; 
      } 
      Date date = new Date();String line = ("Timestamp " + timestamp + ", local date " + date.toString() + ", sensor " + sensorname + ", x " + x + ", y " + y + ", z " + z); 
      System.out.println(line); 

     } 
    } 
} 
相关问题