以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 读卡器调用 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49602) |
-- 作者:zhangyan123_123 -- 发布时间:2014/4/21 11:08:00 -- [求助] 读卡器调用 我想作个会议签到程序,我公司有职工卡,我有职工物理卡号与员工信息对应表,如何在foxtable 下调用,请位高手指导一下: dll 文件名 eLabel.all 在 .net 下是这样定义并调用的
[DllImport( "eLabel.DLL" )] private static extern int InitReader();//初始化读卡器 [DllImport( "eLabel.DLL" )] private static extern int UnlinkReader();//断开读卡器 [DllImport( "eLabel.DLL" )] private static extern int GetMOCardSn( StringBuilder sn, StringBuilder err ); //读工作证序列号
在foxtable 全局代码中写: <DllImport("eLabel.DLL")> Public Function InitReader() As Integer <DllImport("eLabel.DLL")> Public Function UnlinkReader() As Integer <DllImport("eLabel.DLL")> Public Function GetMOCardSn(ByVal sn As String,ByVal err As String) As Integer --------------------- 新建一个读卡form.form 下有三个button -------------- button1,读卡器链接,click事件代码 : Dim n As Integer = InitReader() ------------ button3,关闭form(同时断开读卡器), click事件代码 : --------- 经测试,button1,button3 运行正常
Dim sn As String
执行button1后,执行button2(执行读卡器链接后,执行读卡) 提示: 错误代码位置:窗口,w_read,Button2,Click System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
那位专家指指招,谢谢,我邮箱 zhangyan@bjbpp.com
|
-- 作者:Bin -- 发布时间:2014/4/21 11:08:00 -- 狐表安装在了系统目录吧? 导致访问DLL失败. |
-- 作者:有点甜 -- 发布时间:2014/4/21 11:51:00 -- 试试这样去定义,看行不行
<DllImport("eLabel.DLL")> Public Function GetMOCardSn(ByVal sn As StringBuilder, ByVal err As StringBuilder) As Integer |
-- 作者:zhangyan123_123 -- 发布时间:2014/4/21 12:24:00 -- 安装了,否则不可能读卡器链接成功 |
-- 作者:zhangyan123_123 -- 发布时间:2014/4/21 12:28:00 -- 刚测试了,报同样错误 |
-- 作者:有点甜 -- 发布时间:2014/4/21 14:42:00 -- 以下是引用zhangyan123_123在2014-4-21 12:28:00的发言:
刚测试了,报同样错误
感觉不应该错才对。你再改改,应该是可以的。
<DllImport("eLabel.DLL")> Public Function GetMOCardSn(ByRef sn As StringBuilder, ByRef err As StringBuilder) As Integer
调用 Dim sn As new Stringbuilder |
-- 作者:zhangyan123_123 -- 发布时间:2014/4/21 15:53:00 -- 原来提示: 错误代码位置:窗口,w_read,Button2,Click System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
改为 stringBuilder后,错误提示
System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
试着放卡卡与不放卡,错误提示一样,此程序,我公司在.net测试成功,我在pb下也测试成功了,不知在此为何抱错, 可能是那没配置好 |
-- 作者:zhangyan123_123 -- 发布时间:2014/4/21 16:02:00 -- 你那有读卡器吗?不行我发给你们eLabel.dll,你们测试一下,eLabel.dll默认端口是com1,我已在系统配置,把端口 改为com1 |
-- 作者:有点甜 -- 发布时间:2014/4/21 16:13:00 -- 以下是引用zhangyan123_123在2014-4-21 16:02:00的发言:
你那有读卡器吗?不行我发给你们eLabel.dll,你们测试一下,eLabel.dll默认端口是com1,我已在系统配置,把端口 改为com1
没有读卡器,远程帮你看一下,应该是挺简单的问题
QQ 2450314695
|
-- 作者:zhangyan123_123 -- 发布时间:2014/4/21 16:25:00 -- 我公司是保密单位,单位内网和外网是物理隔离的,如有机会北京,欢迎来我公司参观, |