這是浪費寶貴的嵌入式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