这是浪费宝贵的嵌入式CPU时间来生成和传输XML文件。相反,我只是使用二进制字节数组表示数据,但我会使用结构来帮助解释数据。 C#的结构特性使您可以轻松地将字节数组解释为有意义的数据。这里有一个例子:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct DeviceStatus
{
public UInt16 position; // Byte 0 and 1
public Byte counter; // Byte 2
public Fruit currentFruit; // Byte 3
};
enum Fruit : Byte
{
Off = 0,
Apple = 1,
Orange = 2,
Banana = 3,
}
那么你将有你的字节数组转换到这个结构的函数:
public unsafe DeviceStatus getStatus()
{
byte[] dataFromDevice = fetchStatusFromDevice();
fixed (byte* pointer = dataFromDevice)
{
return *(DeviceStatus*)pointer;
}
}
与XML比较,这种方法将节省CPU时间在设备上,在PC,而且它比XML模式更容易维护,并具有用于构建和解析XML文件的补充功能。您所要做的就是确保嵌入式设备中的struct和enum定义与C#代码中的定义相同,以便C#程序和设备同意要使用的协议。
您可能想要在C#和嵌入端都使用“packed”属性,以便所有结构元素都以可预测的方式定位。
感谢您的洞察 – PICyourBrain 2010-11-20 17:56:55
+1版本 – 2010-11-20 22:51:33