如何从C#中的字节数组中提取结构?

时间:2017-09-13 14:14:33

标签: c# arrays struct

我的嵌入式MCU中有一个C语言结构,就像这样

struct setting_registers
{
uint16_t CNT;
char name[32];
float calibrate[4][16];
int some_setting;
...
about 1000 elements!
};

我已经将Struct转移到带有串口的C#应用​​程序中,现在我有一个包含来自MCU的我的Struct的字节数组,类似这样

int bytes = serialPort.BytesToRead;
byte[] buffer = new byte[bytes];
serialPort.Read(buffer, 0, bytes);

现在我希望在C#中有一个类似的Struct或类,并从这个接收到的字节数组中提取每个信息, 我想做这样的蛮力演员,

int CNT = 0;
CNT = buffer[0]*256 + buffer[1] ;

但这需要很长时间!如果我在我的MCU中更改结构,那么我也应该在C#代码中手工完成各种事情!我想知道是否有更聪明的方法吗?

我已经像这样在

中完成了MCU内部的结构序列化
uint8_t objectPointer = (uint8_t)setting_registers; 
//Send Object 
for(uint16_t i=0;i<size_of_obj;i++)
{ 
     uart0_putChar(objectPointer[i]); 
}

我的意思是我可以将整个结构转换为指针并将其串行发送。 因此,如果我只是将我的大结构复制并通过1000个元素转移到C#,有没有办法像for循环那样将recived缓冲区中的元素复制到Struct中?

0 个答案:

没有答案