跳到內容

讀卡機卡號格式設定說明

同一張卡,在不同讀卡機掃出來的號碼不一樣,是正常的,卡片沒有壞。

卡片裡真正存的只有一組固定的數字(UID)。讀卡機把這組數字「唸」給電腦聽的時候, 可以用很多種唸法:唸成十六進位、唸成十進位、只唸後面一段、拆成兩半分開唸。 不同廠牌的讀卡機出廠時選的唸法不同,所以你會看到:

同一張卡掃出來
A 廠牌讀卡機0010373854
B 廠牌讀卡機9E4ADE
C 廠牌讀卡機31390 19166

這三個其實是同一組數字的三種寫法,可以互相換算。


格式名稱怎麼看懂

「格式名稱怎麼看懂」章節

台灣門禁業界常用的格式名稱長得像亂碼,其實有規則:H 前面的數字是十六進位有幾碼,D 前面的數字是十進位有幾碼。

名稱拆開來看意思
8H10D8 個十六進位碼 → 10 個十進位數字整組 4 bytes 當成一個數字,最大 4294967295,剛好 10 位
6H8D6 個十六進位碼 → 8 個十進位數字只取後面 3 bytes,最大 16777215,剛好 8 位
4H4H10D4 碼 + 4 碼 → 共 10 個數字拆成前後兩半,各自轉十進位(各最大 65535,5 位),5 + 5 = 10
2H4H8D2 碼 + 4 碼 → 共 8 個數字拆成 1 byte + 2 bytes,3 位 + 5 位 = 8

知道規則之後,看到沒見過的名稱也能自己推。

各家的習慣用法(依 minipc 轉碼程式 頁面標註):

格式常見於
8H10D最常見,多數 USB 讀卡機的出廠預設
4H4H10DSOYAL 茂旭
2H4H8DSOCA 日懋
6H8D卡威
反碼系列新領航、飛麒

ABA 和 Wiegand 又是什麼

「ABA 和 Wiegand 又是什麼」章節

這兩個跟上面那些名稱不是同一個層次的東西,這是最容易混淆的地方。

  • 8H10D6H8D 這些講的是「數字寫成什麼樣子」,也就是你在螢幕上看到的那串字。
  • ABA 和 Wiegand(WG)講的是「讀卡機用什麼方式把資料送給控制器」,是接線與訊號的規格。

門禁讀卡機接到控制器的線材規格主要就這兩種:

Wiegand(WG26、WG34…)ABA
D0 / D1 兩條資料線Data / Clock 兩條線
由來門禁業界的標準介面模擬磁條卡(Track 2)的輸出
名稱後面的數字一次傳幾個位元沒有這種編號

WG 後面的數字是「一次傳幾個位元」,扣掉頭尾的檢查位元才是真正的卡號:

總位元真正的資料換算後長度
WG262624 位元(8 + 16)6 碼十六進位 = 8 碼十進位
WG343432 位元(16 + 16)8 碼十六進位 = 10 碼十進位

看出來了嗎?

  • WG26 能傳的資料 = 6H8D,SOYAL 的技術文件把它叫做 ABA 8 碼
  • WG34 能傳的資料 = 8H10D,拆成兩半寫就是 4H4H10D
  • 2H4H8D 就是 WG26 那 24 個位元拆成「8 位元 + 16 位元」,門禁術語叫 Facility Code(場所碼)+ 卡號

所以你的直覺是對的:ABAWG 那一組名詞和 8H10D6H8D 那一組, 很多時候在講同一份資料,只是一邊從「線怎麼接」的角度命名,一邊從「數字長什麼樣」的角度命名。


對照表:舊系統用哪種,讀卡機就選哪種

「對照表:舊系統用哪種,讀卡機就選哪種」章節

換讀卡機時最重要的一件事:先弄清楚舊的那台輸出什麼,新的照著設。

舊系統顯示的樣子那是什麼格式這台讀卡機要選
10 位純數字,例如 00103738548H10D10 碼十進位(取 UID 後 4 bytes)
8 位純數字,例如 103738546H8D / ABA 8 碼8 碼十進位(取 UID 後 3 bytes)
10 位數字但前面固定兩個 06H8D 補零成 10 碼00 + 8 碼十進位(取 UID 後 3 bytes)
8 位含英文字母,例如 9E4ADE12HEX 碼8 碼十六進位
位數對但數字完全不同byte 順序相反同一格式的「反向輸出」版本
兩組數字中間有空格或逗號4H4H10D2H4H8D見下方說明

判斷不出來的時候最快的方法:開一個記事本,把舊讀卡機接上刷一次,再把新的接上刷一次,兩串數字擺在一起比。 或者把舊系統顯示的號碼貼進 卡號格式轉換器,看它換算出來的哪一種對得上。


這幾個選項會在卡號前後補上固定字元,用途是讓收銀或考勤軟體知道「一筆輸入結束了」。

選項效果
資料前面加 ;輸出變成 ;0010373854
資料後面加 ?輸出變成 0010373854?
中間加逗號在號碼中間插入逗號分隔
資料後面加回車刷完自動按一次 Enter

「資料後面加回車」是最常用的一個,可以讓游標自動跳到下一欄或直接送出表單。 前面加 ;、後面加 ? 是模擬磁條讀卡機的習慣,有些舊系統會靠這兩個符號判斷資料邊界; 系統沒特別要求的話這兩項不用開。


除了上面的固定符號,還可以自訂最多 4 個前綴字元與 4 個後綴字元。 設定工具裡填的是 ASCII 十六進位碼00 表示不輸出。

想輸出的字元填入
AZ415A
az617A
093039
#23
-2D
Tab09
Enter0D

例如前綴填 43 41 52 44CARD),刷卡輸出就會變成 CARD0010373854。 可用線上 ASCII 對照表換算出對應的字元,不用自己查表。


只有大聲、小聲兩段,沒有完全靜音的選項。

底下還有一個「自訂位元組」,勾選後可以再多送一個自訂的 ASCII 碼。 它在輸出字串裡的確切位置原廠沒有說明,我們也還沒實測,一般使用者不需要動它。


改完之後怎麼確認

「改完之後怎麼確認」章節
  1. 開一個記事本或任何文字輸入框,把游標點進去。
  2. 刷一張卡。
  3. 對照輸出是不是你要的位數與格式。

寫入後應重新讀取裝置設定並比對;如果回讀結果相符,代表設定確實寫進讀卡機了。

萬一改壞了,請用修改前備份的設定還原。