【问题标题】:Sensor data from iPhone to PC using Java app使用 Java 应用程序从 iPhone 到 PC 的传感器数据
【发布时间】:2012-07-26 19:57:15
【问题描述】:

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

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 编程,我不知道该怎么做……可以请任何人发送示例代码,以便我了解如何执行此操作并为所有值重复此操作。

谢谢大家,祝大家有个愉快的一天。

【问题讨论】:

    标签: java string user-interface numbers sensors


    【解决方案1】:

    问题解决了,我终于用了这段代码:

    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);
    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多