将传感器数据对象转换为字节数组(C#)
本文关键字:数组 字节数 字节 传感器 数据 对象 转换 | 更新日期: 2023-09-27 18:27:20
我有一个程序,可以从计算机#1:获取所有传感器数据
using Windows7.Sensors;
Sensor[] sensors = SensorManager.GetAllSensors();
foreach (Sensor sensor in sensors)
sensor.DataUpdated += sensor_DataUpdated;
在DataUpdated函数中,我想使用Sockets将所有数据发送到#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
}
我的问题是我不知道如何将类对象转换为Byte Array。当我尝试序列化它时,它失败了,因为SensorDataReport对象无法序列化。
知道怎么做吗??
您可以使用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());
}
}