none
VB 2010 RFID 程式問題請教 RRS feed

  • 問題

  • 在使用VB2010寫RFID的讀取卡號卡程式,RFID的讀卡機是用USB連接

    卡片規格:ISO 14443-A
    Reader:交流科技的EWTJ– 680S 讀寫模組
    操作頻率 13.56 MHz
    通訊介面 USB

    以下是我的程式碼





    Public Class Form1

    Private Declare Function E680_Open_ComPort Lib "D:\680api.dll" (ByVal port As Byte) As Long
    Private Declare Function E680_Request_CardSN Lib "D:\680api.dll" (ByVal serial As Byte) As Long

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    If E680_Open_ComPort(3) = 0 Then
    Label1.Text = ("失敗")
    Else
    Label1.Text = ("成功")
    End If
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    Dim strSN As String = "FFFFFFFF"
    E680_Request_CardSN(strSN)
    TextBox1.Text = strSN

    End Sub
    End Class




    卻出現 ( 錯誤是在strSN 從字串 "FFFFFFFF" 至型別 'Byte' 的轉換是無效的。 )



    剛自學沒多久需要各位的幫忙!!

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    另外請問一下 廠商給的規格書
    Overview of commands

    Command:0x20
    Description:Request cards (尋卡並取得RF卡序號)


    List of commands

    Request cards

    Host sends:
    0x03 0x20 Mode Checksum
    Mode: 1 byte, 0: WUPA (request all); all other values: REQA (Request not halted only)

    Module return success:
    - 0x20 Data Checksum
    Data: 4; 7 or 10 bytes card serial number + 2 bytes ATQA + 1 byte SAK

    Module return failure:
    0x02 0xDF Checksum

    這邊(0x20)有點困難看不太懂,不知是否可以指導一下



    • 已編輯 曾仔 2012年10月20日 上午 06:54
    2012年10月20日 上午 06:47

解答

  • Overview of commands

    Command:0x20
    Description:Request cards (尋卡並取得RF卡序號)


    List of commands

    Request cards

    Host sends:
    0x03 0x20 Mode Checksum
    Mode: 1 byte, 0: WUPA (request all); all other values: REQA (Request not halted only)

    Module return success:
    - 0x20 Data Checksum
    Data: 4; 7 or 10 bytes card serial number + 2 bytes ATQA + 1 byte SAK

    Module return failure:
    0x02 0xDF Checksum

    不好意思 這段程式現在還是搞不太懂什麼意思@@

    有人可以概略講解一下嗎 謝謝!!

    這是通訊協定的格式內容, 不是程式

    Request cards

    Host sends:
    0x03 0x20 Mode Checksum
    Mode: 1 byte, 0: WUPA (request all); all other values: REQA (Request not halted only)

    來說. 他在說明

    (1) 這個是尋卡的命令

    (2) Host Sends 標明以下說明是由電腦發送到設備端的命格式

    (3) 0x03 0x20 Mode Checksum , 表示 Byte0 固定為 0x03 (因為資料不全, 我猜測這是協定的開頭碼) ,Byte1 的 0x20 在這段前有說明, 表示為尋卡命令, Byte2 的 Mode 可為 0或其它數值, 表示搜尋的模態, WUPA 或 REQA , Byte3 (因為資料不全, 看起來是一個 Byte, 不過也許有陷阱, 這就要看文件中關於 CheckSum 的說明了) 表示撿查碼, 檢查碼怎麼算, 文件中一定會寫 .

    (4) 依上述推論, 當要送卡時就是送一個長度為 4, 格式如上的 Byte 陣列出去

    總結: 你應該先學會怎麼看懂那份文件, 才能繼續


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年10月22日 下午 02:39
    版主

所有回覆

  • 您好,
    以下有相關的討論,請參考,謝謝@

    (VB2008)(RFID)如何加入DLL檔&如何使用API 

    Private Declare Function E680_Request_CardSN Lib "D:\680api.dll" (ByRef serial As String) As Long
    
    Dim strSN As String = "FFFFFFFF"
    E680_Request_CardSN(strSN)
    TextBox1.Text = strSN


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年10月20日 上午 08:50
  • 0x20 代表 16 進位的 20, 也就是 10 進位的 32

    你列出的這一段表示, 當你的命令碼送 0x20 代表要求 RFID Reader 做尋卡動作.

    然後這台卡機是 USB 模擬成 Serialport 用的

    所以你要做兩件事

    (1) 搞懂廠商給你的文件寫的通訊協定內容

    (2) 搞懂在 .Net  Serialport 程式怎麼寫 , 你可以參考 [海角點部落 Serialport]

    不用急著寫, 把基礎知識搞懂了在下手

    至於你另外一個問題: 卻出現 ( 錯誤是在strSN 從字串 "FFFFFFFF" 至型別 'Byte' 的轉換是無效的。 )

    因為你的函式宣告傳入的是 Byte, 你卻試圖傳字串進去, 當然不會對.

    就此看來, 你還有很多基本的知識要弄懂. 給你幾個建議

    (1) 找本 Visual Basic 基本入門書, 先弄懂程式最基本的東西

    (2) 對初心者有助益的 MSDN 文件庫索引整理 (一) 

    上面這篇文有一些索引資料可以看看


     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年10月20日 上午 08:53
    版主
  • CardSN 到底是幾個 bytes ... 看起來是 1 個,卻要塞 4 個...

    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年10月20日 下午 03:23
  • CardSN 到底是幾個 bytes ... 看起來是 1 個,卻要塞 4 個...

    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。


    我覺得, 搞不好原廠的文件中是 Byte 陣列或是字串, 所以宣告就錯了.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年10月21日 上午 02:59
    版主
  • Overview of commands

    Command:0x20
    Description:Request cards (尋卡並取得RF卡序號)


    List of commands

    Request cards

    Host sends:
    0x03 0x20 Mode Checksum
    Mode: 1 byte, 0: WUPA (request all); all other values: REQA (Request not halted only)

    Module return success:
    - 0x20 Data Checksum
    Data: 4; 7 or 10 bytes card serial number + 2 bytes ATQA + 1 byte SAK

    Module return failure:
    0x02 0xDF Checksum

    不好意思 這段程式現在還是搞不太懂什麼意思@@

    有人可以概略講解一下嗎 謝謝!!

    2012年10月22日 下午 01:49
  • Overview of commands

    Command:0x20
    Description:Request cards (尋卡並取得RF卡序號)


    List of commands

    Request cards

    Host sends:
    0x03 0x20 Mode Checksum
    Mode: 1 byte, 0: WUPA (request all); all other values: REQA (Request not halted only)

    Module return success:
    - 0x20 Data Checksum
    Data: 4; 7 or 10 bytes card serial number + 2 bytes ATQA + 1 byte SAK

    Module return failure:
    0x02 0xDF Checksum

    不好意思 這段程式現在還是搞不太懂什麼意思@@

    有人可以概略講解一下嗎 謝謝!!

    這是通訊協定的格式內容, 不是程式

    Request cards

    Host sends:
    0x03 0x20 Mode Checksum
    Mode: 1 byte, 0: WUPA (request all); all other values: REQA (Request not halted only)

    來說. 他在說明

    (1) 這個是尋卡的命令

    (2) Host Sends 標明以下說明是由電腦發送到設備端的命格式

    (3) 0x03 0x20 Mode Checksum , 表示 Byte0 固定為 0x03 (因為資料不全, 我猜測這是協定的開頭碼) ,Byte1 的 0x20 在這段前有說明, 表示為尋卡命令, Byte2 的 Mode 可為 0或其它數值, 表示搜尋的模態, WUPA 或 REQA , Byte3 (因為資料不全, 看起來是一個 Byte, 不過也許有陷阱, 這就要看文件中關於 CheckSum 的說明了) 表示撿查碼, 檢查碼怎麼算, 文件中一定會寫 .

    (4) 依上述推論, 當要送卡時就是送一個長度為 4, 格式如上的 Byte 陣列出去

    總結: 你應該先學會怎麼看懂那份文件, 才能繼續


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年10月22日 下午 02:39
    版主