Foxtable(狐表)用户栏目专家坐堂 → [求助] 读卡器调用


  共有5485人关注过本帖树形打印复制链接

主题:[求助] 读卡器调用

美女呀,离线,留言给我吧!
zhangyan123_123
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
[求助] 读卡器调用  发帖心情 Post By: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
End Function

<DllImport("eLabel.DLL")> Public  Function UnlinkReader() As Integer
End Function

<DllImport("eLabel.DLL")> Public Function GetMOCardSn(ByVal sn As String,ByVal err As String) As Integer
End Function

---------------------

新建一个读卡form.form 下有三个button

--------------

button1,读卡器链接,click事件代码 :

Dim n As Integer = InitReader()
If n=0 Then
   Messagebox.Show("链接成功")
Else
    Messagebox.Show("链接失败")
End If

------------

button3,关闭form(同时断开读卡器), click事件代码 :
Dim c As Integer = UnlinkReader()
Forms("w_read").close()

---------

经测试,button1,button3 运行正常


在button2,读卡,报错,button2  click事件代码 :

Dim sn As String
Dim err As String
Dim c As Integer = GetMOCardSn( sn , err )
 Messagebox.Show("22")

 

执行button1后,执行button2(执行读卡器链接后,执行读卡)

提示:     错误代码位置:窗口,w_read,Button2,Click

            System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
            在 UserCode.GetM0CardSn(String sn, String err)
            在 UserCode.Click_2dcb6b29(ControlEventArgs e)

 

那位专家指指招,谢谢,我邮箱 zhangyan@bjbpp.com


 


 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/21 12:24:00 [显示全部帖子]

安装了,否则不可能读卡器链接成功


 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/21 12:28:00 [显示全部帖子]

刚测试了,报同样错误


 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/21 15:53:00 [显示全部帖子]

原来提示:     错误代码位置:窗口,w_read,Button2,Click

            System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
            在 UserCode.GetM0CardSn(String& sn, String& err)
            在 UserCode.Click_2dcb6b29(ControlEventArgs e)

 

改为 stringBuilder后,错误提示

 

           System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
            在 UserCode.GetM0CardSn(StringBuilder& sn, StringBuilder& err)
            在 UserCode.Click_2dcb6b29(ControlEventArgs e)

 

试着放卡卡与不放卡,错误提示一样,此程序,我公司在.net测试成功,我在pb下也测试成功了,不知在此为何抱错,

可能是那没配置好


 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/21 16:02:00 [显示全部帖子]

你那有读卡器吗?不行我发给你们eLabel.dll,你们测试一下,eLabel.dll默认端口是com1,我已在系统配置,把端口

改为com1


 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/21 16:25:00 [显示全部帖子]

我公司是保密单位,单位内网和外网是物理隔离的,如有机会北京,欢迎来我公司参观,

 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/21 16:27:00 [显示全部帖子]

等一下,我把程序考到笔记本上,你什么时候下班?


 回到顶部
美女呀,离线,留言给我吧!
zhangyan123_123
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:33 积分:336 威望:0 精华:0 注册:2014/3/25 14:02:00
  发帖心情 Post By:2014/4/22 10:20:00 [显示全部帖子]

昨天问题在专家制导下已解决

在全局代码中

<DllImport("eLabel.DLL")> Public Function GetMOCardSn(ByVal sn As StringBuilder, ByVal err As StringBuilder) As Integer
End Function

 

昨天代码

Dim sn As new Stringbuilder
Dim err As new Stringbuilder

Dim c As Integer = GetMOCardSn(sn , err)
msgbox(c & " " & sn)

 

修改后代码

Dim sn As new Stringbuilder(20)

Dim err As new Stringbuilder(20)

Dim c As Integer = GetMOCardSn(sn , err)
msgbox(c & " " & sn)


 


 回到顶部