以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教老师出现一个错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130919)

--  作者:fangdejin
--  发布时间:2019/2/11 19:34:00
--  请教老师出现一个错误

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190211193419.png
图片点击可在新窗口打开查看

btnInitDev按钮click代码

icdev = Mwrf32.rf_init(0, 9600)
If (icdev > 0) Then
    AppendStatus("成功连接读写器")
    Dim status As New String(status, 20)
    Dim st = Mwrf32.rf_get_status(icdev, status)
    If (st = 0) Then
        status = ClearNullString(status)
        e.Form.Controls("lblDevVer").Text = "硬件版本号: " & status
    Else
        e.Form.Controls("lblDevVer").Text = ""
    End If
    status =  New String(status, 16)
    st = Mwrf32.rf_srd_snr(icdev,16, status)
    If (st = 0) Then
        status = ClearNullString(status)
        e.Form.Controls("lblCardSeq").Text = "设备序列号: 2019年001号 " & status
    Else
        e.Form.Controls("lblCardSeq").Text = ""
    End If
    
    \'向读写器装载指定扇区的新密码(不与卡片进行通讯) ,读写器中有16个扇区的密码(0~15) ,每个扇区有两个密码(KEY  A 和 KEY B)
    Dim keyA = "ffffffffffff" \'默认密码
    Dim keyB = "ffffffffffff" \'默认密码
    For sector As Integer = 0 To 15
        Dim dr As DataRow = DataTables("读写器密码").Find("扇区 = " & sector ) \' 从数据表获取加载密码
        If dr IsNot Nothing Then
            keyA = dr("密码A")
            keyB = dr("密码B")
        End If
        \'装载密码A
        st = Mwrf32.rf_load_key_hex(icdev, 0, sector, keyA)
        If (st <> 0) Then
            AppendStatus("向读写器扇区" & sector & "装载密码A错误: " & GetErrorDesc(st))
        End If
        \'装载密码B
        st = Mwrf32.rf_load_key_hex(icdev, 4, sector, keyB)
        If (st <> 0) Then
            AppendStatus("向读写器扇区" & sector & "装载密码B错误: " & GetErrorDesc(st) )
        End If
    Next
    AppendStatus("完成向读写器装载密码!")
    
    e.Form.Controls("pnlOprate").Visible = True
    e.Form.Controls("btnCloseDev").Enabled = True
    e.Form.Controls("btnInitDev").Enabled = False
    e.Form.Controls("btnReadCards").Enabled = True

    \'\'st = rf_beep(icdev, 30) \'蜂鸣30ms,根据需要使用
Else
    AppendStatus("连接读写器失败,请查看是否已连接读写器,或者读写器已被其它程序占用: " & GetErrorDesc(icdev))
End If

--  作者:fangdejin
--  发布时间:2019/2/11 19:35:00
--  
不知道哪个参数错了。。。。。。。。。。。
--  作者:有点蓝
--  发布时间:2019/2/11 20:21:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm

看是哪一句代码出错

--  作者:fangdejin
--  发布时间:2019/2/11 20:35:00
--  
出现这个
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190211203956.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/2/11 20:37:10编辑过]

--  作者:fangdejin
--  发布时间:2019/2/11 20:35:00
--  
出现这个~~~~~
--  作者:有点蓝
--  发布时间:2019/2/11 20:45:00
--  
重启一下项目,再重新测试
--  作者:fangdejin
--  发布时间:2019/2/11 21:34:00
--  
还是不行 还是第一张图的提示, Range对象中,Min(2)必须小于或等于Max(-1)
--  作者:有点蓝
--  发布时间:2019/2/11 21:54:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm

看是哪一句代码出错

--  作者:fangdejin
--  发布时间:2019/2/11 21:56:00
--  
蓝老师,我把
 \'向读写器装载指定扇区的新密码(不与卡片进行通讯) ,读写器中有16个扇区的密码(0~15) ,每个扇区有两个密码(KEY  A 和 KEY B)
    Dim keyA = "ffffffffffff" \'默认密码
    Dim keyB = "ffffffffffff" \'默认密码
    For sector As Integer = 0 To 15
        Dim dr As DataRow = DataTables("读写器密码").Find("扇区 = " & sector ) \' 从数据表获取加载密码
        If dr IsNot Nothing Then
            keyA = dr("密码A")
            keyB = dr("密码B")
        End If
        \'装载密码A
        st = Mwrf32.rf_load_key_hex(icdev, 0, sector, keyA)
        If (st <> 0) Then
            AppendStatus("向读写器扇区" & sector & "装载密码A错误: " & GetErrorDesc(st))
        End If
        \'装载密码B
        st = Mwrf32.rf_load_key_hex(icdev, 4, sector, keyB)
        If (st <> 0) Then
            AppendStatus("向读写器扇区" & sector & "装载密码B错误: " & GetErrorDesc(st) )
        End If
    Next
    AppendStatus("完成向读写器装载密码!")

删除了,没有出现这个提示了,密码代码出问题。。。

--  作者:有点蓝
--  发布时间:2019/2/11 22:03:00
--  
可能的原因:
1、卡片没有16个扇区那么多,或者卡片存储的不是12位密码,具体咨询一下购买卡片的商家
2、存储的密码不正确,超过了范围