c# - Attempted to read or write protected memory on DAQ -
i trying program icp das daq dio-24 following code.
class dio
class dio { #region dio public const short dio_noerror = 0; public const short dio_driveropenerror = 1; public const short dio_drivernoopen = 2; public const short dio_getdriverversionerror = 3; public const short dio_installirqerror = 4; public const short dio_clearintcounterror = 5; public const short dio_getintcounterror = 6; public const short dio_reseterror = 7; public const short dio_removeirqerror = 8; public const short dio_gettotalboarderror = 9; public const short dio_cardnotfound = 10; public const short dio_getconfigerror = 11; public const short dio_exceedboardnumber = 12; // test function [dllimport("dio.dll")] public static extern int dio_shortsub2(int a, int b); [dllimport("dio.dll")] public static extern single dio_floatsub2(single a, single b); [dllimport("dio.dll")] public static extern int dio_getdllversion(); [dllimport("dio.dll")] public static extern int dio_getdriverversion(int wdriverversion); // driver function [dllimport("dio.dll")] public static extern int dio_driverinit(int wtotalboards); [dllimport("dio.dll")] public static extern void dio_driverclose(); [dllimport("dio.dll")] public static extern int dio_getconfigaddress(int waddrbase, int wcurrentboard); [dllimport("dio.dll")] public static extern int dio_activeboard(int wboardno); // dio functions [dllimport("dio.dll")] public static extern void dio_outputbyte(int address, byte dataout); [dllimport("dio.dll")] public static extern void dio_outputword(int address, int dataout); [dllimport("dio.dll")] public static extern int dio_inputbyte(int address); [dllimport("dio.dll")] public static extern int dio_inputword(int address); // interrupt functions [dllimport("dio.dll")] public static extern int dio_intinstall(long hevent); [dllimport("dio.dll")] public static extern int dio_intgetcount(long wintcount); [dllimport("dio.dll")] public static extern int dio_intremove(); // dio-48 counter [dllimport("dio.dll")] public static extern void dio48_setcounter(int wbase, int wcounterno, int bcountermode, long wcountervalue); [dllimport("dio.dll")] public static extern long dio48_readcounter(int wbase, int wcounterno, int bcountermode); [dllimport("dio.dll")] public static extern void dio48_setcountera(int wcounterno, int bcountermode, long wcountervalue); [dllimport("dio.dll")] public static extern long dio48_readcountera(int wcounterno, int bcountermode); // dio-64 counter [dllimport("dio.dll")] public static extern void dio64_setcounter(int wbase, int wcounterno, int bcountermode, long wcountervalue); [dllimport("dio.dll")] public static extern long dio64_readcounter(int wbase, int wcounterno, int bcountermode); [dllimport("dio.dll")] public static extern void dio64_setcountera(int wcounterno, int bcountermode, long wcountervalue); [dllimport("dio.dll")] public static extern long dio64_readcountera(int wcounterno, int bcountermode); #endregion } }
form1
public partial class form1 : form { long lirqcnt, lservicecnt; int wtotalboards, wrtn, wselect; int wbase; public form1() { initializecomponent(); } private void form1_load(object sender, eventargs e) { // driver initailization try { wrtn = dio.dio_activeboard(wtotalboards); } catch (exception ex) { trace.writeline(ex.message); } if (wrtn != dio.dio_noerror) { messagebox.show("driver initailization error"); } else { messagebox.show("driver initializatin successful"); } eboards.text = wtotalboards.tostring(); eselect.text = "0"; } }
on form1_load in
wrtn = dio.dio_driverinit(wtotalboards);
i error
{"attempted read or write protected memory. indication other memory corrupt."}
on stacktrace get:
at dio24.dio.dio_driverinit(int32 wtotalboards) @ dio24.form1.form1_load(object sender, eventargs e) in c:\users\cdev\documents\visual studio 2010\projects\dio24\dio24\form1.cs:line 48 @ system.windows.forms.form.onload(eventargs e) @ system.windows.forms.form.oncreatecontrol() @ system.windows.forms.control.createcontrol(boolean fignorevisible) @ system.windows.forms.control.createcontrol() @ system.windows.forms.control.wmshowwindow(message& m) @ system.windows.forms.control.wndproc(message& m) @ system.windows.forms.scrollablecontrol.wndproc(message& m) @ system.windows.forms.form.wmshowwindow(message& m) @ system.windows.forms.form.wndproc(message& m) @ system.windows.forms.control.controlnativewindow.onmessage(message& m) @ system.windows.forms.control.controlnativewindow.wndproc(message& m) @ system.windows.forms.nativewindow.debuggablecallback(intptr hwnd, int32 msg, intptr wparam, intptr lparam) @ system.windows.forms.safenativemethods.showwindow(handleref hwnd, int32 ncmdshow) @ system.windows.forms.control.setvisiblecore(boolean value) @ system.windows.forms.form.setvisiblecore(boolean value) @ system.windows.forms.control.set_visible(boolean value) @ system.windows.forms.application.threadcontext.runmessageloopinner(int32 reason, applicationcontext context) @ system.windows.forms.application.threadcontext.runmessageloop(int32 reason, applicationcontext context) @ system.windows.forms.application.run(form mainform) @ dio24.program.main() in c:\users\cdev\documents\visual studio 2010\projects\dio24\dio24\program.cs:line 18 @ system.appdomain._nexecuteassembly(runtimeassembly assembly, string[] args) @ system.appdomain.executeassembly(string assemblyfile, evidence assemblysecurity, string[] args) @ microsoft.visualstudio.hostingprocess.hostproc.runusersassembly() @ system.threading.threadhelper.threadstart_context(object state) @ system.threading.executioncontext.runinternal(executioncontext executioncontext, contextcallback callback, object state, boolean preservesyncctx) @ system.threading.executioncontext.run(executioncontext executioncontext, contextcallback callback, object state, boolean preservesyncctx) @ system.threading.executioncontext.run(executioncontext executioncontext, contextcallback callback, object state) @ system.threading.threadhelper.threadstart()
if use sample code came dio-24 software in vb6.0, same code runs. appreciate help.
Comments
Post a Comment