我用c#写的ch375写入测试程序,请问为什么会出错

[System.Runtime.InteropServices.DllImport("CH375DLL.dll")] static extern long CH375OpenDevice(long iIndex);

[System.Runtime.InteropServices.DllImport("CH375DLL.dll")] static extern Boolean CH375WriteData(long iIndex, Object iBuffer,long ioLength); public struct COMMAND_PACKET { public byte mCommandCode; public byte mCommandCodeNot; public byte[] mParameter; }

---------

outvalues=CH375OpenDevice(iIndex); COMMAND_PACKET mDemoReq =new COMMAND_PACKET(); mDemoReq.mParameter = new byte[20]; mDemoReq.mCommandCode = 0xEF; mDemoReq.mCommandCodeNot = 0xEF; mDemoReq.mParameter[2] = 0xEF; mDemoReq.mParameter[1] = 0xEF; if (outvalues==-1) {

textBox1.Text="无法打开设备"; } else { textBox1.Text=outvalues.ToString(); } if(CH375WriteData(0,mDemoReq,7)) { t2.Text="成功!"; } else {

t2.Text="不成功!"; }

这一行出错

if(CH375WriteData(0,mDemoReq,7))

谁 可以帮忙的


CH375WriteData中第二、三个参数传递的都必须是指针类型,更不能直接传递数值

PVOID iBuffer PULONG ioLength


ioLength 是数值类型吧,请问 c#的指针如何定义,谁有这方面的例子


引用回复:ioLength 是数值类型吧,请问 c#的指针如何定义,谁有这方面的例子 private static extern bool CH375ReadData( // 读取数据块 long iIndex, // 指定CH375设备序号 byte[] oBuffer, // 指向一个足够大的缓冲区,用于保存读取的数据 ref long ioLength ); // 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度

这样定义即可


"byte[] oBuffer, // 指向一个足够大的缓冲区,用于保存读取的数据"说的容易做的难.


贵公司能否提供net下的代码... 我想应该很多人会用得到的.


4楼正解,跪谢


只有登录才能回复,可以选择微信账号登录