【发布时间】:2020-05-29 15:32:04
【问题描述】:
我正在使用 C# 制作人机界面应用程序,其中需要在应用程序和基于 STM32 的机器人控制器之间设置串行端口通信。 但由于该控制器是基于 C++ 的,我需要将通信对象转换为字节数组,然后将其发送出去。 我尝试了类序列化但不起作用,因为它会生成更大的数据(445 字节)数组并且变量的位置不匹配,因此 c++ 代码无法正确解析它。
这是我需要发送给机器人的课程:
[Serializable]
public class RobotData
{
public RobotData(Byte _axisCount)
{
axisCount = _axisCount;
axData = new AxisData[axisCount];
for (int i = 0; i < axisCount; i++)
{
axData[i] = new AxisData((Byte)i);
}
}
public Int16 messageType;
public Byte axisCount;
public Int32 statusDWord;
public AxisData[] axData;
}
这是内部类的定义:
public class AxisData
{
public AxisData(Byte _axisId)
{
axisId = _axisId;
}
public Byte axisId;
public Int32 position;
public float velocity ;
public float acceleration;
public float torque;
}
所以我正在尝试创建一个字节数组,它会像这样:
- 位置/变量
- 0 / 消息类型
- 2 / 轴数
- 3 / statusDWord
- 7 / axData[0].axisId
- 8 / axData[0].position
- ...
- 54 / axData[2].torque
(总大小为 58 字节)
是否有某种通用方法(适用于任何类)来创建这个纯原始数据数组? 以及如何将传入的数据字节构造成类似的类? 谢谢。
【问题讨论】:
标签: c# arrays object serialization byte