最近在做一个项目,有用到明华的读卡器,要用明华读卡器来读卡~!
先初始化设备
调用rf_init 返回值是0,表示成功的!
之后寻卡
rf_Card()一直都是失败,返回值不是0我调用过程是这样的
动态链接库中的函数原型是:
int rf_card(int icdev,unsigned char _Mode,unsigned long *_Snr);
参 数:icdev:通讯设备标识符
_Mode:寻卡模式mode_card
_Snr:返回的卡序列号我用C#调用改写成下面形式
[DllImport("mwrf32.dll")]
public static extern int rf_card(int icdev, byte _Mode, ref uint _Snr);但调用之后返回值一直不是0,说明寻卡不成功,请问我这个改写有什么不对的吗?是不是哪里类型搞错了!!!
先初始化设备
调用rf_init 返回值是0,表示成功的!
之后寻卡
rf_Card()一直都是失败,返回值不是0我调用过程是这样的
动态链接库中的函数原型是:
int rf_card(int icdev,unsigned char _Mode,unsigned long *_Snr);
参 数:icdev:通讯设备标识符
_Mode:寻卡模式mode_card
_Snr:返回的卡序列号我用C#调用改写成下面形式
[DllImport("mwrf32.dll")]
public static extern int rf_card(int icdev, byte _Mode, ref uint _Snr);但调用之后返回值一直不是0,说明寻卡不成功,请问我这个改写有什么不对的吗?是不是哪里类型搞错了!!!
至于const int*,用"ref int"来替换。
int===> IntPtr
是不是类型错误了??
public static extern int rf_card(int icdev, byte _Mode, out uint _Snr);
试试.
我第一个参数用IntPtr试过了,也不行~!!
[DllImport("mwrf32.dll")]
public static extern int rf_card(IntPrt icdev, byte _Mode, ref uint _Snr);
但还是不行的
CharSet = CharSet.Auto, ExactSpelling = false,
CallingConvention = CallingConvention.StdCall)]
//说明: 向指定地址写数据
//调用: icdev: 通讯设备标识符 mode: 寻卡模式
// _Snr: 返回序列号 _Snrlen: 序列号长度
//返回: <0 错误 =0 正确
public static extern Int16 rf_card(int icdev, Int16 mode, [MarshalAs(UnmanagedType.LPArray)]byte[] _Snr, [MarshalAs(UnmanagedType.LPArray)]byte[] _Snrlen);