afdasfrsdafdafdafasfasdfsdfasd
说实话,看你贴的代码,我觉得有问题,但是我还是先告诉你如何“将数据从非托管内存指针复制到托管 8 位无符号整数数组”:
byte[] buffer = new byte[dataLen];
Marshal.Copy(hdcoutbuffer,buffer,0,dataLen);
@紫云凌:
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);
@紫云凌: 因为我不知道 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);
@紫云凌: 对不起,我只能告诉你技术上的问题,关于“上下文不存在hdlcoutbuffer和dataLen” 请你自己先学习下基本的编程,而至于你的业务逻辑问题,我只能表示抱歉,没兴趣。