-
just came across this Fim50 series
up to 10,000 templates -
-
I have played with the identify/verify, makes sense what you guys said. My concern now is, it limits me to doing identification and verification within the GT-511C3, which was how it was designed.
Filling the sensor DB with stored template might be cumbersome (it is likely I would have templates that run into hundreds).
My thought now is to know the algorithm that was used by the device to do verifiy/identify so it can also be done outside the device (say, in a remote server).
Or come up with another algorithm that might do that.
In both cases, is it feasible? and is it something we - all of us (: could attempt? -
hi guys, so I was looking at the template data and am deducing (maybe wrong) that each fingerprint pattern (lets say index finger) will return different template data independent of how many times it was enrolled (3 times enrollment).
So I would like to know how the scanner identifies and verifies a user print.
i.e during identification, is the single print template (the template generated when you attempt to identify) run against the merged template of the 3 enrollment process?P.S what I want to try and do is run identification and verification not on the inbuilt template database but on a template itself.
-
Thanks @PaddeK for all your assist...finally its working all thanks to your efforts, one which involved to change minification in WebIDE settings from Esprima to Closure (online) - Simple Minification.
@allObjects my appreciation goes to you too.
-
Hi @PaddeK, were you able to write some complete examples?
-
-
Hello @PaddeK, thanks for taking your time to try and sort somethings out.
I'm still getting a timeout error:timeout exceeded
I have tried several alternatives in calling the getTemplate function, yet it still times out.
Also calling the enroll(t) function results in this error:
Error { "msg": "Expecting a function to call, got Object", "type": "Error", "stack": " at line 1 col 1\nfn().then(res.concat.bind(res))\n^\nin function called from system\n" }
after setting enroll with enroll = (t) => () => g.enroll(t); and passed it into the GT511.sequence array I got this error
enroll error: Error { "msg": "Function \"switchLED\" not found!", "type": "Error", "stack": " at line 1 col 6\nthis.switchLED(!!b)\n ^\nin function \"fn\" called from line 1 col 4\nfn().then(res.concat.bind(res))\n ^\nin function called from system\n" }
-
@PaddeK have you received the GT-511C1??
-
No I didn't . I'll check but it just times out. Though the verify function returns some error codes like 4114 which is expected to an extent. I'll just wait for @PaddeK fingerprint to arrive (hopefully soon) so he could test-run too
-
-
could you please paste a code that should retrieve a given template let me run, maybe my code was bad and didnt implement it way I should;
GT511CXX.prototype.getUserFingData = function(id, callback){ let me = this, open = () => me.open(1), getData = (id) => me.getTemplate(id), close = () => me.close(); return new Promise((resolve, reject) => { let errorHandler = (err) => { close(); reject(err); }, successHandler = (data) => { console.log('template gotten'); console.log(data); close(); resolve(); }; getData(id) .then(successHandler) .catch(errorHandler); }); }
I also tried this code below, and got a timeout exceeded
fps.getTemplate(1).then( (data) => { console.log("then called"); console.log(data); } ) .catch( (err) => console.log(err));
-
-
-
Hello @PaddeK @allObjects, am having difficulties using the getTemplate() function. It always timesout whenever I call it.
How do I get the raw template data? (I want to store them in a remote database) -
Big thanks to you guys @PaddeK and @allObjects. I highly appreciate your efforts!
-
Awesome one @PaddeK! Still going through your code.
@allObjects would be nice to get those usage samples
Thanks for sharing @PaddeK -
So, run-tested the unedited code on the Espruino-Wifi,
here are errors encountered and how I fixed them.
Line 52 - .p.cmd0() to p.cmd0()Uncaught ReferenceError: "id" is not defined
at line 1 col 16
this.id = (id) ? id : 1; // holds on to the device idit turns out that the tenary expression ?: didn't work so I passed the Id directly
main issue:
Uncaught Error: Constructor should be a function, but is Object at line 1 col 16 var fpr1 = new FPR(); ^ =undefined Uncaught Error: Field or method "connect" does not already exist, and can't create it on undefined at line 70 col 7 fpr1.connect(Serial1,cb,1); ^ in function called from system
also, Line 21 and Line 34 has this.open as property and this.open as method respectively.
Anyway, just to get it running, this was my minor fix (as long it works am happy at the moment (: );// begin module inline var C = // for now just command stuff... but it could include more and become sub structured. { OPEN: 0x01 , CLOSE: 0x02 , LED: 0x12 , EXTRA: 0x01 , LED_ON: 0x01 , LED_OFF: 0x00 }; // Constructor for a GT522C3 Device // id: optional device ID, an Integer 16 bit, default 1 0x0001 // name: optional device name / location var D = function(id,loc) { this.id = 1; // holds on to the device id this.name = "Enrolment office"; // holds on to the optional name / location this.ser = undefined; // holds on to the serial the device is connected to this.opened = false; // holds on to the state the device is in (open/closed) }, p = D.prototype; // .connect(serial, cb) - connect w/ optional initialize (open, etc...) // cb: a callback function(err, data) // err: undefined when ok, otherwise err object (tbd - to be defined) // data: response object when ok (tbd) // xtra: optional booly truy for extra info // (booly: something that evaluates to boolean true or false, therefore also called // booly: absent, false, undefined, null, "", and 0 are all falsy, otherwise truy) // Note: if cb absent, only serial is stored and initialization has to be called separately p.connect = function(serial, cb, xtra) { serial.on("data", function(data){console.log(data);}); if (cb) { this.open(cb, xtra); } }; // .open(cb, xtra) - open w/ optional extra information in response object // cb: a callback function(err, data) // err: undefined when ok, otherwise err object: { _: this, ... } // (for this fpr instance, and more tbd - to be defined) // data: response object when ok, w/ xtra: // falsy: { _: this } // truy: { _: this, ver: aNumber, mxSize: aNumber, sn: aString } // for this fpr instance, version number, isoAreaMaxSize, serial number // xtra: optional truy for extra info p.open = function (cb, xtra) { this.cb = cb; // (incorrectly) for now... this.wri(this.cmd0(C.OPEN, xtra), cb); } // .cmd0(cmd, xtra) - build command of structure 0 - only extra parm p.cmd0 = function(cmd, xtra) { var c = [0x55,0xAA,this.id&0xFF,this.id>>8,(xtra)?0x01:0x00,0x00,0x00,0x00]; return this.chk(c,1); }; // .chk(data, add) - add (append) or validate checksum byte // data: a command without checksum byte or a response with checksum byte // add: truy: data is a command and is returned with calculated checksum byte added // falsy: data is response and true is returned when checksum byte is ok, else false p.chk = function(data, add) { var s = 0, c = data.length, i = c - ((add) ? 0 : 1); while (i-- > 0) s += data[i]; s&=0xFF; if (add) { data.push(s); return data; } else return (data[c] == s); }; // .wri(data) - write data to device - (incorrectly) for now... p.wri = function(data) { this.cb(undefined, data); }; //Modules.addCached("GT522C3",D); // later when as module: exports = D; // end module (inline) //var FPR = require("GT522C3"); var fpr1 = new D(); // or: ...(1,"Enrollment Office"); var cb = function(err, data) { console.log((err) ? err : data); }; // ...for now :( function onInit() { Serial1.setup(9600, { tx:B6, rx:B7 }); fpr1.connect(Serial1,cb,1); // open with extra info (version,...,serial number) } setTimeout(onInit,1000);
with printed on console 85, 170, 1, 0, 1, 0, 0, 0, 1
-
-
Thanks, really appreciated.
Couple of additional questions,the commands resulted on this response, which I believe is a proper acknowledgement.
U
ª0
0How do I get other commands using the format Serial1.write([0x55,0xAA,0x01,0x00,0x01,0x00,0x00,0x00,0x12,0x00,0x13,0x01]);
That is which of the hex numbers represent the command start code1, start code 2, device id, input parameter, command code and checksum.Finally, how do I display/get data packet in a readable format, like the serial_number and firmware_number in devinfo data packet which is returned by the open command
-
Hello, this is my first usage of the Espruino Wifi board.
I'm having trouble connecting/reading data from Fingerprint Scanner - TTL (GT-511C3).
I have already connected RX-TX, TX-RX pins from FPS to board, but am confused how to read/write data using the Serial class.I know there is a Nodejs library https://github.com/the-AjK/GT-511C3/blob/master/lib/gt511c3.js for it but I dont know how to use it with the Serial class.
Please any help or comment will be appreciated.
Just learnt that the GT511C3 uses the SmackFinger 3.0 Algorithm for identification.
Does that help in replicating the algorithm for identification/verification?
@PaddeK any other info on the GT-521F52 shared database on a network?