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 に答える