首页 新闻 搜索 专区 学院

dsadasfrasf

0
悬赏园豆:160 [已关闭问题] 关闭于 2014-05-29 14:37

afdasfrsdafdafdafasfasdfsdfasd

紫云凌的主页 紫云凌 | 初学一级 | 园豆:2
提问于:2014-05-28 08:30
< >
分享
所有回答(1)
0

说实话,看你贴的代码,我觉得有问题,但是我还是先告诉你如何“将数据从非托管内存指针复制到托管 8 位无符号整数数组”:

byte[] buffer = new byte[dataLen];

Marshal.Copy(hdcoutbuffer,buffer,0,dataLen);

Launcher | 园豆:45045 (高人七级) | 2014-05-28 09:08

@紫云凌: 

char HALCSendPacketExport(unsigned char Action,unsigned char ID,unsigned int *data,unsigned int dataLen,unsigned int PorF_bit,unsigned int s_code);

 

Public static extern byte HALCSendPacketExport(byte Action,byte ID,IntPtr data,int dataLen,int PorF_bit,int s_code);

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-05-28 15:49

@紫云凌: 因为我不知道 HALCSendPacketExport 的功能是什么,因此下列解释会比较“晦涩”,同时,很多地方按照“使用习惯”和“约定俗成”来描述。

比如有如下 C 导出函数:

char HALCSendPacketExport(unsigned char Action,unsigned char ID,unsigned int *data,unsigned int dataLen,unsigned int PorF_bit,unsigned int s_code);

在 C# 中这样定义:

Public static extern byte HALCSendPacketExport(byte Action,byte ID,IntPtr data,UInt32 dataLen,UInt32 PorF_bit,int s_code);

调用:

 

UInt32[] buffer = new UInt32[1024];            

IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer,0);

byte ret = HALCSendPacketExport(0x31, 0x31, ptr, 1024, 0, 0);

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-05-29 09:21

@紫云凌: 对不起,我只能告诉你技术上的问题,关于“上下文不存在hdlcoutbuffer和dataLen” 请你自己先学习下基本的编程,而至于你的业务逻辑问题,我只能表示抱歉,没兴趣。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-05-29 11:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册