明华m1卡读写

wo449305245 2012-11-19 04:33:50
[DllImport("mwrf32.dll")]
public static extern int rf_init(int port, long baud);
int icdev= rf_init(4,9600);


提示是打开通信端口失败,求解
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wo449305245 2012-11-19
  • 打赏
  • 举报
回复
int rf_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr); 功 能:卡防冲突,返回卡的序列号 参 数:icdev:通讯设备标识符 _Bcn: 设为0 _Snr:返回的卡序列号地址 返 回:成功则返回 0 int rf_select(int icdev,unsigned long _Snr,unsigned char *_Size); 功 能:从多个卡中选取一个给定序列号的卡 参 数:icdev:通讯设备标识符 _Snr:卡序列号 _Size:指向返回的卡容量的数据 返 回:成功则返回 0 上面是c++的,类型都试过了,不行 问题查到了, out后的_Snr有问题,求解
51Crack 2012-11-19
  • 打赏
  • 举报
回复
参数不应该用out
  • 打赏
  • 举报
回复
失败的返回值是什么,开发文档中应该有才对。
z2357 2012-11-19
  • 打赏
  • 举报
回复
注意类型对应,否则会无故崩了。
wo449305245 2012-11-19
  • 打赏
  • 举报
回复
之前的解决了,现在是类型对应:

[DllImport("mwrf32.dll")]
public static extern Int16 rf_anticoll(int icdev, Byte _Bcnt, out UInt64 _Snr);
[DllImport("mwrf32.dll")]
public static extern Int16 rf_select(int icdev, UInt64 _Snr,out Byte _Size);
Int16 st;
UInt64 _Snr;
Byte _Size;
st=rf_anticoll(icdev,0,out _Snr);
st = rf_select(icdev, _Snr,out _Size);
执行到最后一步出现;尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
心灵彩虹 2012-11-19
  • 打赏
  • 举报
回复
端口是否正确,端口是否占用?dll文件是否在debug文件夹下?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧