簡體   English   中英

使用javascript獲取完整的信用卡數據

[英]Getting full credit card data using javascript

我一直在嘗試從 Desko 鍵盤獲取信用卡數據,我最終成功了,但問題是我每次刷卡時都以不同的模式獲取信用卡數據

下面是我的JS代碼

var fs = require('Serialport');
function listenDevice() {
  this.port = fs('COM8');
  let dataComplete = '';
  let count = 0;
  this.port.on('open', () => {
    console.log('sp: ' + this.port.path + ' port open event');
    this.port.set({ dtr: true, rts: true }, function (err) {
      if (err) {
        console.log('Set Error: ', err.message);
        this.isServiceError = true;
        this.serviceErrorText = err;
      }
    });
  });

  this.port.on('data', (data) => {
    console.log('sp: Data: ', data.toString('utf-8'));
  });
}

這是我得到的卡片數據的模式:

sp:數據:?CBZZZZZZZZZZZZZZ^XXXXXXXX sp:數據:XXXX X ^18082261485500005000000 !ZZZZZZZZZZZZZZZZ sp:數據:=1808226000005?

sp:數據:?CBZZZZZZZZZZZZZZ^XXXXXXXX sp:數據:XXXX X ^18082261485 sp:數據:500005000000 !ZZZZZZZZZZZZZZZZ=1808226000005?

sp:數據:?CBZZZZZZZZZZZZZZ^XXXXXXXX sp:數據:XXXX X ^18082261485500005000000 !ZZZZZZZZZZZZZZZ=1808226000005?

這里 X 表示持卡人姓名 Z 表示卡號

正如你可以sp: Data: log 被調用了兩次或三次,但卡數據是相似的。 無論數據如何來,我都想連接這張卡數據。 任何的想法。

我正在使用串口讀取數據

您不能假設您將在單個data事件中擁有所有data 您需要緩沖數據,並使用您了解的協議信息來確定何時有足夠的數據。

由於您只需要少量數據,因此將運行的數據緩沖區連接在一起是可以接受的。

你會想要做這樣的事情:

let buffer;
this.port.on('data', (data) => {
  buffer = Buffer.concat([buffer, data]);
  if (/* your code to determine if you have enough data */) {
    const packet = buffer.slice(0, /* expected length */);
    buffer = buffer.slice(/* expected length*/);
    console.log(packet.toString());
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM