2

我有一个程序可以从计算机 #1 获取所有传感器数据:

using Windows7.Sensors;

Sensor[] sensors = SensorManager.GetAllSensors();
foreach (Sensor sensor in sensors)
     sensor.DataUpdated += sensor_DataUpdated;

在 DataUpdated 函数中,我想使用套接字将所有数据发送到计算机#2。所以我创建了一个包含所有数据的类:

[Serializable]
public class SensorData
{
    public Sensor Sensor { get; set; }
    public SensorDataReport SensorDataReport { get; set; }
    public SensorData()
    {
    }
}

这是 DataUpdated 函数:

static void sensor_DataUpdated(Sensor sensor, SensorDataReport dataReport)
{
     SensorData data = new SensorData(sensor, dataReport);
     socket.Send(data.ToByteArray()); // this 'ToByteArray()' is not a real function. this is what I am looking for
}

我的问题是我不知道如何将我的类对象转换为字节数组。当我尝试对其进行序列化时,它失败了,因为 SensorDataReport 对象无法序列化。

知道怎么做吗?

4

1 回答 1

0

您可以使用BinaryFormatter类:

static void sensor_DataUpdated(Sensor sensor, SensorDataReport dataReport)
{
    SensorData data = new SensorData(sensor, dataReport);

    BinaryFormatter bf = new BinaryFormatter();
    using (MemoryStream ms = new MemoryStream())
    {
        bf.Serialize(ms, obj);
        socket.Send(data.ToByteArray());
    }
}
于 2016-01-06T12:24:30.473 回答