以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何在foxtable应用ID读卡器(已解决)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=62894)

--  作者:yyzlxc
--  发布时间:2015/1/9 15:58:00
--  [求助]如何在foxtable应用ID读卡器(已解决)
本人近期购置荣士的USB接口的ID读卡器一台,如何将其应用到foxtable,请各位老师指教,谢谢。

附上读卡器的配套驱动和案例。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:usb接口id卡读卡器oem软件.part1.rar


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:usb接口id卡读卡器oem软件.part2.rar


[此贴子已经被作者于2015-1-10 15:22:47编辑过]

--  作者:有点甜
--  发布时间:2015/1/9 16:06:00
--  

 你问过很多遍啦,运行vb.net的例子,看人家怎么写的啊。

 

 然后拷贝代码到foxtable啊。

 

 http://www.foxtable.com/help/topics/2417.htm

 


--  作者:yyzlxc
--  发布时间:2015/1/9 18:37:00
--  
谢谢甜老师的指导。
通过代码复制,现在可以通过点击窗口的按钮,弹出显示卡号的对话框。

全局代码如下:

Public Declare Function idr_read Lib "OUR_IDR.dll" (ByRef pserial As Byte) As Byte \'读卡函数声明
Public Declare Function idr_beep Lib "OUR_IDR.dll" (ByVal xms As Long) As Byte
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
idr_beep(50)
Dim status As Byte
Dim mypiccserial(4) As Byte \'卡序列号
status = idr_read(mypiccserial(0))
If status = 0 Then
    MessageBox.Show("操作成功卡号为" + Convert.ToString(mypiccserial(1) * 256 * 256 * 256 + mypiccserial(2) * 256 * 256 + mypiccserial(3) * 256 + mypiccserial(4)))
ElseIf status = 8 Then
    MessageBox.Show("请将卡放在感应区")
ElseIf status = 23 Then
    MessageBox.Show("机器没连上,或驱动程序未安装!")
Else
    MessageBox.Show("异常")
End If
End Sub


窗口的AfterLoad事件代码如下(窗口自动生成按钮):

Dim ct As New Windows.Forms.Button
ct.Text = "我的按钮"
e.Form.Panel.Controls.Add(ct)
AddHandler ct.Click, AddressOf Button1_Click


如果要求刷卡后,将卡号直接输入到窗口的TextBox1文本框,代码应该如何修改,请各位老师指教,谢谢!!

[此贴子已经被作者于2015-1-9 18:37:52编辑过]

--  作者:yyzlxc
--  发布时间:2015/1/10 8:57:00
--  
请Bin老师帮助看看,如何修改代码实现上述要求,谢谢!!
--  作者:Bin
--  发布时间:2015/1/10 9:06:00
--  
继续参考它提供的文档,复制代码
--  作者:yyzlxc
--  发布时间:2015/1/10 9:57:00
--  

全局代码:
Public Declare Function idr_read Lib "OUR_IDR.dll" (ByRef pserial As Byte) As Byte \'读卡函数声明
Public Declare Function idr_beep Lib "OUR_IDR.dll" (ByVal xms As Long) As Byte \'驱动蜂鸣器函数声明
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
idr_beep(50) \'2毫秒*50
Dim status As Byte
Dim mypiccserial(4) As Byte \'卡序列号
status = idr_read(mypiccserial(0))
If status = 0 Then
    Dim aa As Integer = (Convert.ToString(mypiccserial(1) * 256 * 256 * 256 + mypiccserial(2) * 256 * 256 + mypiccserial(3) * 256 + mypiccserial(4)))
    Dim bb As Integer = (aa Mod 256 * 256) + (INT(aa /(256 * 256)) Mod 256) * 100000
    MessageBox.Show( Format(bb,"00000000"))
ElseIf status = 8 Then
    MessageBox.Show("请将卡放在感应区")
ElseIf status = 23 Then
    MessageBox.Show("机器没连上,或驱动程序未安装!")
Else
    MessageBox.Show("异常")
End If
End Sub

窗口的AfterLoad事件代码
Dim ct As New Windows.Forms.Button
ct.Text = "我的按钮"
e.Form.Panel.Controls.Add(ct)
AddHandler ct.Click, AddressOf Button1_Click

刚才问了荣士的客服,他建议做一个循环,隔0.2秒调用一次读卡函数,可以不用点击按钮读卡,问题是这个循环如何做,请老师指教,谢谢!!

--  作者:Bin
--  发布时间:2015/1/10 9:59:00
--  
把代码写到窗口的计时器.   计时器间隔设置为2000毫秒


--  作者:yyzlxc
--  发布时间:2015/1/10 10:07:00
--  
谢谢Bin老师的指教!!我试试看,谢谢!!
--  作者:yyzlxc
--  发布时间:2015/1/10 15:09:00
--  

全局代码:
Public Sub ABC(ByVal sender As System.Object, ByVal e As System.EventArgs)
    读卡代码
End Sub

窗口的AfterLoad事件代码:
Dim but As WinForm.Button = e.Form.Controls("Button1")
AddHandler but.BaseControl.Click, AddressOf ABC

要求只通过拍卡(不点击按钮),直接读取卡号,窗口的TimerClick事件代码应该如何写?
或者用什么代码,在命令窗口执行,可以读取卡号,请各位老师指教,谢谢!



--  作者:Bin
--  发布时间:2015/1/10 15:11:00
--  
把读取卡号的代码放到 TimerKick即可.