我的嵌入式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中?