最近在做一个项目,有用到明华的读卡器,要用明华读卡器来读卡~!
先初始化设备
调用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,说明寻卡不成功,请问我这个改写有什么不对的吗?是不是哪里类型搞错了!!!
如果参数是传进的话,用string是可以的,如果是传出的话,用StringBuilder。
至于const int*,用"ref int"来替换。
int===> IntPtr
是不是类型错误了??
像这样的方式你最好用非安全代码的方式,我以前做过,的确会出现这种问题
[DllImport("mwrf32.dll")]
public static extern int rf_card(int icdev, byte _Mode, out uint _Snr);
试试.
int===> IntPtr
我第一个参数用IntPtr试过了,也不行~!!
[DllImport("mwrf32.dll")]
public static extern int rf_card(IntPrt icdev, byte _Mode, ref uint _Snr);
在数据库中有张表,有id,name两列,id 是主键,没有设置自增属性,在程序中取出这张表放入datatable,在这个datatable中插入一条记录,当更新数据库时提示id列不能为空,请问该怎么解决?
给它一个值!!主键不能为空 ......