[英]decode drivers license PDF417 or magnetic strip
我能夠從條形碼中提取代碼,但是當從俄亥俄州駕駛執照中讀取磁性腳本時,我似乎無法獲得像 PDF417 那樣在執照號前面加上兩個字母的代碼。
Private Sub ScannDLButton_Click(sender As Object, e As EventArgs) Handles ScanDLButton.Click
Try
Dim strInputBox As String = InputBox("Please Swipe/Scan Customer's Driver's License", "Driver's License")
Dim strLastName As String
Dim strFirstName As String
Dim strMiddleName As String
Dim strDOB As String
Dim strStreet As String
Dim strCity As String
Dim strState As String
Dim strZIP As String
Dim strDL As String
Dim strCountry As String
這確定它是否是磁條
If strInputBox.Contains("%") Then
Dim CaretPresent As Boolean = False
Dim EqualPresent As Boolean = False
CaretPresent = strInputBox.Contains("^")
EqualPresent = strInputBox.Contains("=")
If CaretPresent Then 'track one
Dim CardData As String() = strInputBox.Split("^"c)
strState = CardData(0).Substring(1, 2)
strCity = CardData(0).Substring(3, CardData(0).Length - 3)
Dim strname As String() = CardData(1).Split("$"c)
strLastName = strname(0)
strFirstName = strname(1)
strMiddleName = strname(2)
strStreet = CardData(2)
Dim strzipcode As String() = CardData(3).Split("+"c)
strZIP = strzipcode(1).Substring(2, 5)
End If
If EqualPresent Then ' track two
Dim CardData As String() = strInputBox.Split("="c)
strDOB = CardData(1).Substring(6, 6)
End If
這確定用戶是否掃描了許可證背面的條形碼
ElseIf strInputBox.Contains("ANSI") Then
Dim separatingStrings As String() = {"ANSI", "DBA", "DCS", "DAC", "DAD", "DBD", "DBB", "DBC", "DAY", "DAU", "DAG", "DAI", "DAJ", "DAK", "DAQ", "DCF", "DCG", "DDE", "DDF", "DDG", "DAZ", "DCI", "DCJ", "DCU", "DCE", "DDA", "DDB", "DAW", "DDK", "ZOZ", "ZOE"}
Dim text As String = strInputBox
Dim words As String() = text.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries)
Dim i As Integer = 0
For Each word In words
_log.Info("Looking at code: " & separatingStrings(i).ToString)
_log.Info("Parsing field: " & word.ToString.Trim)
strLastName = IIf(separatingStrings(i) = "DCS", word.ToString.Trim, strLastName)
strFirstName = IIf(separatingStrings(i) = "DAC", word.ToString.Trim, strFirstName)
strMiddleName = IIf(separatingStrings(i) = "DAD", word.ToString.Trim, strMiddleName)
strDOB = IIf(separatingStrings(i) = "DBB", word.ToString.Trim, strDOB)
strStreet = IIf(separatingStrings(i) = "DAG", word.ToString.Trim, strStreet)
strCity = IIf(separatingStrings(i) = "DAI", word.ToString.Trim, strCity)
strState = IIf(separatingStrings(i) = "DAJ", word.ToString.Trim, strState)
strZIP = IIf(separatingStrings(i) = "DAK", word.ToString.Trim, strZIP)
strDL = IIf(separatingStrings(i) = "DAQ", word.ToString.Trim, strDL)
strCountry = IIf(separatingStrings(i) = "DCG", word.ToString.Trim, strCountry)
i += 1
Next
Else
MessageBox.Show("Incorrect format, contact us with this type of ID", "Scan Driver's License", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Return
End If
文本行中是否有代碼加密代碼。
我知道這是一個老問題,但也許有人仍然會發現這個答案有幫助。
看起來,至少在俄亥俄州,兩個字母的許可證號碼前綴由字母表的序數表示(A=01 .. Z=26)。
所以在樣本數據“;6360231911247481”中,“636023”是俄亥俄州的ANSI Id前綴,“19”是第一個字母(“S”)的序數,“11”是第二個字母(“K”)的序數,“247481”是剩余的數字部分。
因此,對於此示例,完整的 DL 編號為“SK247481”。
請注意,這是根據樣本數據確定的,而不是記錄在案的來源,因此 ymmv。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.