рдХреНрдпреЛрдВ?
рдпреВрдПрдЪрдПрдл рд░реАрдбрд░ рдЖрдкрдХреЛ 10 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдЯреИрдЧ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рджреЗрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╡рд╛рд╣рдиреЛрдВ рдХреЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рджреЗрд╢реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ: рдЧреЗрд░рд╛рдЬ / рдЦрд▓рд┐рд╣рд╛рди рдореЗрдВ рдЙрдкрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдгред рдЪреЛрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реЛрдЪрдирд╛ рд╢рд╛рдпрдж рд╣реА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ RFID рдЯреИрдЧ рдХреЛ рд╕рд╛рдЗрдХрд┐рд▓ (рдЯреВрд▓ рдХреЗрд╕) рд╕реЗ рдЪрд┐рдкрдХрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рджреЗрдЦреЗ рдЧрдП рдкрд░рд┐рдзрд┐ рдХреЗ рдмрд╛рд╣рд░ рдЕрдкрдиреЗ рдкреНрд░рд╕реНрдерд╛рди рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
NodeJS + RaspberryPI рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдкреЗрд░реАрдлреЗрд░рд▓ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕рд╕реНрддрд╛ рд╕рд░реНрд╡рд░ рд╣реИред
рдЙрдкрдХрд░рдг
рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП CF-RU5109 (CHAFON) рд▓рд┐рдпрд╛, рдЬреЛ RS232, RS485, Wiegand, TCP рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
(рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЯреАрд╕реАрдкреА рдЪрд╛рд╣рд┐рдП)
рдореЙрдбрд▓ рдкреЗрдЬ -
CF-RU5109рдЯреИрдЧ - rfid gen2 uhf рдПрд▓рд┐рдпрди H3 рдЪрд┐рдк рд╡рд╛рд▓рд╛ рдкреЗрдкрд░ рдЯреИрдЧ
рдкрдврд╝рдиреЗ рдХреА рд╕реАрдорд╛ред рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрдврд╝рдирд╛ рд▓реЗрдмрд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЗрд╕рдХреА рдЧрддрд┐) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЭреВрда рдХрд╛ рдирд┐рд╢рд╛рди 3 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрдордЬреЛрд░ рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ - 5-5.5 рдореАрдЯрд░, 8 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╣рд╛рде рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд▓рд╣рд░рд╛рдирд╛ рдерд╛ред рдореЗрд░реЗ рдкрд╛рдардХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд 9dbi рдПрдВрдЯреАрдирд╛ рд╣реИред


рдореБрд▓рд╛рдпрдо
рдкрд╛рдардХ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрдИ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдоред рдореИрдВ рдХреЗрд╡рд▓ рд░реАрдбрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рд╣рдореЗрдВ NodeJS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рдиреЛрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
tcpclient.prototype.Start = function () { client = new net.Socket(); client.setEncoding('ascii'); client.connect(6000, '192.168.0.190', function() { }); client.on('connect', function(data) { console.log('UHF reader connected'); var bytes = Buffer.from([0x04, 0xff, 0x21, 0x19, 0x95], "ascii"); client.write(bytes); client.on('data', function(data) { console.log('UHF reader respond:'); var buffer = Buffer.from(data, "ascii"); console.log(buffer); }); }); client.on('close', function() { console.log('UHF reader - connection closed'); }); client.on('error', function(err) { console.log(err) }); }; tcpclient.prototype.Write = function (req) { var bytes = new Buffer(req, "ascii"); console.log(bytes); client.write(bytes); };
рдореИрдиреБрдЕрд▓ рд╕реЗред рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдЗрд╕ рддрд░рд╣ рд╕рдВрд░рдЪрд┐рдд рд╣реИ:
рд▓реЗрди, рдПрдбреНрд░, рд╕реАрдПрдордбреА, рдбреЗрдЯрд╛ [], рдПрд▓рдПрд╕рдмреА-рд╕реАрдЖрд░рд╕реА 16, рдПрдордПрд╕рдмреА-рд╕реАрдЖрд░рд╕реА 16
рдЕрдВрддрд┐рдо рджреЛ рдмрд╛рдЗрдЯреНрд╕ CRC16 рдЪреЗрдХрд╕рдо рд╣реИрдВ, рдмрд╣реБрдкрдж 0x8408 рдХреЗ рд╕рд╛рде, рдкреНрд░рд╛рд░рдВрдн рд╕рдВрдЦреНрдпрд╛ 0xFFFFред рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ рдиреЗ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╕реА рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
рддрджрдиреБрд╕рд╛рд░, [0x04, 0xff, 0x21, 0x19, 0x95] рдПрдХ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрддреЗ FF рдкрд░ рдкрд╛рдардХ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред 04-рд▓рдВрдмрд╛рдИ, 21-рдХрдорд╛рди, 19 рдФрд░ 95 - рд╕реАрдЖрд░рд╕реА 16 рдЪреЗрдХрд╕рдоред
var PRESET_VALUE = 0xFFFF; var POLYNOMIAL = 0x8408; var CRC16 = function (pucY) { var uiCrcValue = PRESET_VALUE; for(var i = 0; i < pucY.length; i++){ uiCrcValue = uiCrcValue ^ (pucY[i]); for(var j = 0; j < 8; j++){ if(uiCrcValue & 0x0001){ uiCrcValue = (uiCrcValue >> 1) ^ POLYNOMIAL; } else { uiCrcValue = (uiCrcValue >> 1); } } } var buf = Buffer.from(uiCrcValue.toString(16), 'hex'); buf = Buffer.from([buf[1], buf[0]], 'hex'); return buf; };
рдХрдорд╛рди рдЙрджрд╛рд╣рд░рдг
рдЗрдиреНрд╡реЗрдВрдЯрд░реА - рдПрдХрд▓ рдХрд╛рд░реНрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдзред рдЙрддреНрддрд░-рд╡рд┐рдзрд╛ рдореЗрдВ рдЕрдзрд┐рдирд┐рдпрдо
req =[0x04, 0x00, 0x01, 0xdb, 0x4b]; tcpClient.Write(req);
рдпрджрд┐ рдирд┐рд╢рд╛рди рджреГрд╖реНрдЯрд┐ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓рддрд╛ рд╣реИ
UHF рдкрд╛рдардХ рдЬрд╡рд╛рдм:
<рдмрдлрд░ 13 00 01 01 0 рд╕реА 62 00 51 79 17 19 00 04 05 60 5 рдмреА 28 2 рдПрдл 24>
62 00 51 79 17 19 00 04 05 60 5b 28 рдЯреИрдЧ рдЯреИрдЧ рд╣реИред
рд░реАрдбрд░ рдСрдкрд░реЗрд╢рди рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛
рдЙрддреНрддрд░-рд╡рд┐рдзрд╛ : [0x0a, 0x00, 0x35, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x2a, 0x9f]
рд╕реНрдХреИрди / рд╕рдХреНрд░рд┐рдп рдореЛрдб : [0x0a, 0x00, 0x35, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x9b]ред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдкрд╛рдардХ рд▓рдЧрд╛рддрд╛рд░ рдЯреИрдЧ рдЯреИрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯреИрдЧ рджреЗрддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдФрд░ рдлрд┐рд░, рдпрджрд┐ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдпрд╛ рддреЛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ 0x01 (рдЗрдиреНрд╡реЗрдВрдЯрд░реА) рдХрдорд╛рдВрдб рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓реЗрдмрд▓ рдЕрдкрдиреЗ рдЯреИрдЧ рджреЗрддреЗ рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЙрдЪрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛ рд╣рдо рдПрдХ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рд░рдВрддрд░ рд╕реНрдХреИрдирд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рдЯреИрдЧ рдХреА рджреГрд╢реНрдпрддрд╛ рд╕реАрдорд╛ рдореЗрдВ рдЧрд┐рд░рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред