C# 与C++传值问题

C++结构体:typedefstructGY7502_DATA_INFO{BYTEDatabuffer[256];//buffertowriteorreadUINTWri... C++结构体:
typedef struct GY7502_DATA_INFO{
BYTE Databuffer[256];//buffer to write or read
UINT WriteNum;//Valid num in Databuffer[]
UINT ReadNum;// data num to Read
BYTE IoSel;//bit value=1 means selected. bit0 for IO-PORT0, bit1 for IO-PORT1
BYTE IoData;//only the bit will be valid which bit is 1 in IoSel.
BYTE ChipSelect;//Chip Selected,output, 0~CS0, 1~CS1
BYTE Reserved[4];//Reserved
}GY7502_DATA_INFO,*pGY7502_DATA_INFO;
C#的结构体:
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct GY7502_DATA_INFO
{
/// <summary>
/// 地址和数据
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public byte[] Databuffer;
/// <summary>
/// 地址和数据的总个数
/// </summary>
public int WriteNum;
/// <summary>
/// 需要读的数据个数
/// </summary>
public byte ReadNum;
/// <summary>
/// IO口选择
/// </summary>
public byte IoSel;

public byte IoData;
/// <summary>
/// 片选输出选择 值:0、1
/// </summary>
public byte ChipSelect;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] Reserved;
}

请问对不对啊?
展开
 我来答
mlj12345
2017-06-26
知道答主
回答量:17
采纳率:0%
帮助的人:8.1万
展开全部
建议你byte数组用指针的方法传递,并且要注意的是指针的大小(数组长度)要保持一致,否则会出异常。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式