//定义
[DllImport("NC2ACommDll.dll")]
public extern static bool InitComm(String strPort, int BaudRate, byte ByteSize, byte Parity, byte StopBits);
[DllImport("NC2ACommDll.dll")]
public extern static bool SetAddress(); [DllImport("NC2ACommDll.dll")]
public extern static bool GetTorqueSpeed(float fTorque, float fSpeed);
//fTorque:扭矩指针;fSpeed:转速指针
[DllImport("NC2ACommDll.dll")]
public extern static bool CloseComm();//调用 float a = 0, ba = 0;
GetTorqueSpeed(a, ba); double data_ch10 = a;//11-试验件风扇输入轴转速
double data_ch11 = ba;//12-风扇输入扭矩 未接入
-------------------------编译通过,但在调试时就提示错误“尝试读取或写入受保护的内存,这通常指示其他内存已损坏”
这到底是哪儿的原因?请各位大侠帮忙!
public extern static bool GetTorqueSpeed(float fTorque, float fSpeed);
//fTorque:扭矩指针;fSpeed:转速指针 给个native的函数原型吧,还有既然是指针,怎么传的是float型?这种问题多半是类型转换错误。
public extern static bool GetTorqueSpeed(float fTorque, float fSpeed);
参数不正确
这个是dll的readme----------
1.初始化扭矩仪通信
typedef BOOL (_stdcall *INITCOMM)(CString strPort,long BaudRate,BYTE ByteSize,BYTE Parity,BYTE StopBits);
//strPort:串口;BautRate:波特率;ByteSize:数据长度;Parity:0-4 =None,Odd,Even,Mark,Space;
//StopBits:0,1,2 = 1 ,1.5 ,2
2.设置扭矩仪地址
typedef BOOL (_stdcall *SETADDRESS)(WORD NC2AAddr);
3.读扭矩仪扭矩转速值
typedef BOOL (_stdcall *GETTORQUESPEED)(float &fTorque,float &fSpeed,DWORD &dTime);
//NC3Addr:扭矩仪地址;fTorque:扭矩指针;fSpeed:转速指针;dTime:实时时间指针
4.关闭通信
typedef BOOL (_stdcall *CLOSECOMM)();
[DllImport("NC2ACommDll.dll")]
public extern static bool GetTorqueSpeed(ref float fTorque, ref float fSpeed, ref int dTime);
试一下这个