通过指针发送.NET对象给.NET程序?

brallow 2007-12-11 03:27:00
我手头上有一个数据采集程序。包括采集端与收集端。收集端大体上就是接收消息,然后根据消息中的指针来解析并读取内存中某块区域的数据。这块区域的格式用列集方式已经定义好,如下:
代码 (双击代码复制到粘贴板)
[StructLayout(LayoutKind.Sequential)]
public struct ItemValueLayOut
{
[MarshalAs(UnmanagedType.I4)]
public int IVT;
[MarshalAs(UnmanagedType.I4)]
public int IV_INT;
[MarshalAs(UnmanagedType.R4)]
public float IV_FLOAT;
[MarshalAs(UnmanagedType.I4)]
public int IV_BOOL;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
public String IV_STR;
}

采集端是直接与硬件通信取得数据后发送给收集端。之前都是用VC做的,所以可以很方便的按照对应的格式构造对象然后发送消息。但现在我需要使用C#来实现一个采集端,这个时候就面临一个问题,我构造了对象、填充了数据之后应该如何发送出去呢?
我想有两种可能
1)把当前的对象按某种方式列集,然后用GCHandle.Alloc的方法来取得指针并发送。
但用这种方法,总是会报错。
2)有没有可能在C#中直接构造非托管对象,然后进行相应的处理?这个我没有找到方法还没有尝试。
...全文
73 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyc 2007-12-11
  • 打赏
  • 举报
回复
C#我不是很熟悉,

不过,C#确实可以直接控制内存, 不过要使用 unsafe 关键字 才可以


如果,要生成非托管对象,需要对那个对象作包装,制作一个类才可以。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧