解决方案 »
- 怎么把图片放到 数据里
- C#中如何遍历菜单?
- 动态生成的picturebox,右键下拉菜单中的删除功能的实现?
- 如何用代码设置文件夹相关权限属性?求达人给个思路,或者最好是代码~~万分感激,在线等!
- 如何查找一个主窗体当前是否弹出指定窗口或对话框
- 求《c#编程起步》(人民邮电出版社)这本书,找到马上结帖。
- ftp程序上传中文文件出错,什么原因呢?
- 在WINFORM的DATAGRID中,某一列输入数据时,如何实现使用下拉列表方式的输入风格
- 从XML文件中读出数据写入Access数据库问题。
- 如何创建一个可编辑的窗体---(如果通过增分200)
- 高分求一正则表达式,取两标签之间的值。。
- 如何能让windows用户注销后仍然能运行有窗口操作的程序?或者用户永远不注销?
public struct DEV_CTRL_PARAM
{
public int ScanType; [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I4, SizeConst = 12)]
public int[] SelChannel;
public int mParamType;
public ptr mEtalonPeakNum;
public intptr p_EtalonPeakVal;
}
===>public intptr mEtalonPeakNum;
mParam.SelChannel = new int[12]; int mEtalonPeakNum = 0;
float[] EtalonPeakVal = new float[400];
int[] temptype = new int[7] { 6, 5, 4, 3, 2, 1, 0 };
mParam.ScanType = 3;
mParam.mParamType = 0; mParam.mEtalonPeakNum = Marshal.StructureToPtr(mEtalonPeakNum, mParam.mEtalonPeakNum,true);
mParam.p_EtalonPeakVal = UnsafeAddrOfPinnedArrayElement (EtalonPeakVal,0);
mParam.SelChannel[0] = 1;
mParam.SelChannel[1] = 1;
mParam.SelChannel[2] = 1;
mParam.SelChannel[3] = 1;
mParam.SelChannel[4] = 1;
mParam.SelChannel[5] = 1;
mParam.SelChannel[6] = 1;
mParam.SelChannel[7] = 1;
mParam.SelChannel[8] = 1;
mParam.SelChannel[9] = 1;
mParam.SelChannel[10] = 0;
mParam.SelChannel[11] = 0;Pci_InitDevice(0, ref mParam);
您好!谢谢您的解答 .mParam.mEtalonPeakNum = Marshal.StructureToPtr(mEtalonPeakNum, mParam.mEtalonPeakNum,true);
mParam.p_EtalonPeakVal = UnsafeAddrOfPinnedArrayElement (EtalonPeakVal,0);
整理为: Marshal.StructureToPtr(mEtalonPeakNum, mParam.mEtalonPeakNum, true);
mParam.p_EtalonPeakVal = Marshal.UnsafeAddrOfPinnedArrayElement(EtalonPeakVal, 0);现在出现问题:
mParam.mEtalonPeakNum Value cannot be null. Parameter name:ptr.
mParam.SelChannel = new int[12]; int mEtalonPeakNum = 0;
float[] EtalonPeakVal = new float[400];
int[] temptype = new int[7] { 6, 5, 4, 3, 2, 1, 0 }; mParam.ScanType = 3;
mParam.mParamType = 0; //IntPtr p = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Test)));
Marshal.StructureToPtr(mEtalonPeakNum, mParam.mEtalonPeakNum, true);
mParam.p_EtalonPeakVal = Marshal.UnsafeAddrOfPinnedArrayElement(EtalonPeakVal, 0);
mParam.SelChannel[0] = 1;
mParam.SelChannel[1] = 1;
mParam.SelChannel[2] = 1;
mParam.SelChannel[3] = 1;
mParam.SelChannel[4] = 1;
mParam.SelChannel[5] = 1;
mParam.SelChannel[6] = 1;
mParam.SelChannel[7] = 1;
mParam.SelChannel[8] = 1;
mParam.SelChannel[9] = 1;
mParam.SelChannel[10] = 0;
mParam.SelChannel[11] = 0;Pci_InitDevice(0, ref mParam);