forked from sachinpuranik/verizy-go-fingerprint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
132 lines (111 loc) · 3.15 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package main
import (
"encoding/json"
"fmt"
"log"
"time"
"github.com/SachinPuranik/verizy-go-fingerprint/fingerprint"
"github.com/tarm/serial"
//"github.com/tarm/serial"
)
const constvid = 0x1A86
const constpid = 0x7523
func main() {
var breakMe bool
var choice int
//scanner := fingerprint.NewUSB(constvid, constpid, 0x0000)
c := &serial.Config{Name: "/dev/tty.usbserial-1420", Baud: 9600 * 6, ReadTimeout: time.Millisecond * 500}
scanner := fingerprint.NewSerial(c, 0x0000)
err := scanner.Capture()
if err != nil {
log.Fatal("Wow...Cant't handel err =>", err.Error())
}
defer scanner.Release()
for breakMe == false {
fmt.Println("Choose your option:")
fmt.Println("1 - Verify Password")
fmt.Println("2 - System Params")
fmt.Println("3 - Search")
fmt.Println("4 - Enroll")
fmt.Println("5 - Clear Database")
fmt.Println("9 - Exit")
//choice = 4
switch fmt.Scan(&choice); choice {
//switch choice {
case 1:
if scanner.VerifyPassword() == true {
log.Println("Password verified")
} else {
log.Println("Password wrong")
}
case 2:
if sp, err := scanner.GetSystemParameters(); err == nil {
b, _ := json.Marshal(sp)
fmt.Println(string(b))
}
case 3:
//Place holder for Enroll Function
Search(scanner)
case 4:
Enroll(scanner)
case 5:
err := scanner.ClearDatabase()
if err != nil {
log.Printf(err.Error())
} else {
log.Printf("database cleared now")
}
case 9:
breakMe = true
fmt.Println("Stoping the program - with Exit Option")
default:
fmt.Println("Thats Invalid choice")
}
}
}
//Search -
func Search(scanner fingerprint.ScannerIO) {
log.Println("R307 : Waiting for finger...")
for scanner.ReadImage() == false {
log.Println("R307 : Still waiting for finger...")
}
scanner.ConvertImage(fingerprint.FINGERPRINT_CHARBUFFER1)
result, err := scanner.SearchTemplate(fingerprint.FINGERPRINT_CHARBUFFER1, 0, -1)
if err == nil {
log.Printf("PositionNumber : %d, AccuracyScore: %d\n", result.PositionNumber, result.AccuracyScore)
} else {
log.Printf(err.Error())
}
}
//Enroll -
func Enroll(scanner fingerprint.ScannerIO) {
log.Println("R307 : Waiting for finger...")
for scanner.ReadImage() == false {
log.Println("R307 : Still waiting for finger...")
}
scanner.ConvertImage(fingerprint.FINGERPRINT_CHARBUFFER1)
result, _ := scanner.SearchTemplate(fingerprint.FINGERPRINT_CHARBUFFER1, 0, -1)
if result.PositionNumber >= 0 {
log.Println("Template already exists at position #", result.PositionNumber)
return
}
log.Println("Remove and keep the finger again")
time.Sleep(2 * time.Second)
for scanner.ReadImage() == false {
log.Println("R307 : Still waiting for finger...")
}
scanner.ConvertImage(fingerprint.FINGERPRINT_CHARBUFFER2)
accuracyScore, err := scanner.CompareCharacteristics()
if accuracyScore == 0 {
log.Printf("Fingers do not match")
return
}
err = scanner.CreateTemplate()
newPosition := -1
newPosition, err = scanner.StoreTemplate(newPosition, fingerprint.FINGERPRINT_CHARBUFFER1)
if err != nil {
log.Printf("Unable to store template")
return
}
log.Println("finger enrolled successfully. New template position #", newPosition)
}