简介
@codetector/pcsclite 是一个 Node.js 的 npm 包,它提供了对 PC/SC (Personal Computer / Smart Card) 设备的访问。它使用 PC/SC 通用接口,支持多种 PC/SC 设备,包括智能卡、磁卡读卡器等等。
它具有以下特点:
- 可跨平台使用,支持 Windows、Linux 和 macOS 等操作系统。
- 支持多种 PC/SC 设备。
- 提供了简单易用的 API。
在这篇文章中,我们将详细介绍如何使用 @codetector/pcsclite 包。
安装
使用 npm 进行安装:
npm install @codetector/pcsclite
使用方法
基础使用
以下示例展示了如何使用 @codetector/pcsclite 包:
-- -------------------- ---- ------- ----- -------- - -------------------------------- ----- ---- - ----------- ----------------- ---------------- - ---------------- ------ ---------- ------------- ------------------ ------------- - --------------------- ---------- ----- ------------- --- ------------------- ---------------- - ---------------------- ---------- ----- -------- -- ----- ---- --- ------- -- ----- ------- - ---------- - ------------- -- --------- - -- --------- - ----------------------- -- ------------- - ------------------------ - ----------------- ---------- -- ---- ------- -- ------------------------------------------ ------------- - -- ----- - ----------------- - ---- - ---------------------------- - --- - ---- -- --------- - ------------------------- -- ------------- - -------------------------- - ----------------- ----------- -- ---- -------- -- ---------------- ---------- - ----------------------- -- ------------- --------- - -- ----- - ----------------- - ---- - ------------------------ ------------ ----- ---------- ----- ------- - --- ------------- ----- ----- ----- ------- ------------------------ --- --------- ------------- ----- - -- ----- - ----------------- - ---- - ----------------- ---------- ------ - --- - --- - - --- ---------------- ---------- - --------------------- ---------- ----------- --- --- ---------------- ------------- - ------------------------------ ------------- ---
此示例将监听任何连接到计算机 USB 端口的智能卡并打印出卡片的任何事件,例如插入和拔出。在这个脚本中,您会在命令行终端上看到输出。
API
pcsclite()
静态方法,返回一个 Parser 对象数组。
const pcsclite = require('@codetector/pcsclite'); const pcsc = pcsclite();
这将返回一个 Parser 对象数组。
Parser.on('reader', callback(reader))
此事件将在每个新读卡器连接时触发。它将返回一个读卡器对象作为参数,其中包含读卡器的“名称”。
parser.on('reader', function(reader) { console.log('New reader detected', reader.name); });
reader.connect(options, callback)
这将建立与所选读卡器的连接。第一个参数是选项,第二个是回调函数。回调函数返回一个“协议”参数,它是使用的重要通讯协议。
reader.connect({ share_mode : this.SCARD_SHARE_SHARED }, function(err, protocol) { if (err) { console.log(err); } else { console.log('Protocol(', reader.name, '):', protocol); } });
reader.transmit(command, length, protocol, callback)
command
- 发送到智能卡的命令。length
- 命令的长度。protocol
- 通信协议。callback
- 回调函数,返回接收到的数据(如果有的话)。
-- -------------------- ---- ------- ----- ------- - --- ----------- ------------------------ --- --------- ------------- ----- - -- ----- - --------------------- ------------ ----- ----- - ---- - ----------------- ---------- ------ - ---
reader.disconnect(disposition, callback)
disposition
- 指定卡片处理完成后对卡片应用的断开行为(如 SCARD_LEAVE_CARD)。callback
- 回调函数。
reader.disconnect(reader.SCARD_LEAVE_CARD, function(err) { if (err) { console.log(err); } else { console.log('Disconnected'); } });
示例代码
以下是一个完整的例子:
-- -------------------- ---- ------- ----- -------- - -------------------------------- ----- ---- - ----------- ----------------- ---------------- - ---------------- ------ ---------- ------------- ------------------ ------------- - --------------------- ---------- ----- ------------- --- ------------------- ---------------- - ---------------------- ---------- ----- -------- -- ----- ---- --- ------- ----- ------- - ---------- - ------------- -- --------- - -- ---- ------- -- --------- - ----------------------- -- ------------- - ------------------------ - ----------------- ---------- -- ----- ---------- ---- --- ------ ------------------------------------------ ------------- - -- ----- - ----------------- - ---- - ---------------------------- - --- - -- ---- -------- ---- -- --------- - ------------------------- -- ------------- - -------------------------- - ----------------- ----------- ---------------- ---------- - ----------------------- -- ------------- --------- - -- ----- - ----------------- - ---- - ------------------------ ------------ ----- ---------- ----- ------- - --- ------------- ----- ----- ----- ------- ------------------------ --- --------- ------------- ----- - -- ----- - --------------------- ------------ ----- ----- - ---- - ----------------- ---------- ------ - --- - --- - - --- ---------------- ---------- - --------------------- ---------- ----------- --- --- ---------------- ------------- - ------------------------------ ------------- ---
总结
@codetector/pcsclite 是一个非常有用的 Node.js 包,它提供了对 PC/SC 设备的访问,使用的 API 简单易用。通过本文的学习,你已经掌握了如何安装和使用这个包。
当我们处理 PC/SC 可编程卡时,此包将成为不可或缺的一部分。因此,熟悉此包的使用方式将使我们轻松处理智能卡的读取和写入操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056ede81e8991b448e7830