0

私は、POC 用の ISO-7811 仕様の磁気カードを読み書きできる (非常に時間の制約が厳しい) tkinter アプリケーションを作成する任務を負っています。上記の規格に準拠した MSR605x エンコーダーを使用しています。

これまでのところ、エンコーダーを読み取りモードに設定し、機能レポートを使用してカード スワイプを読み取り、必要な生データ コマンドを設定することができました。

指定された制御コマンドと、機能レポートを使用してカードに書き込みたいデータ BLOB を送信しても、エンコーダーを書き込みモードにすることができません。私が理解しているように、デバイスは、インターフェースできるレポートの種類を決定します。問題のデバイスは、出力と機能の 2 つを指定しています。

レポートを出力しようとしましたが、うまくいきませんでした。理想的には、デバイスが HID ではなく COM ポートを使用することを望みますが、それを回避する方法はないようです。

私が試すことができる別のライブラリはありますか、それとも実装で何か不足していますか?

これは私が見つけたデバイスのドキュメントです: http://carddevicestore.com/files/msr605_user_manual.pdf

スクラッチコードを追加しました。どんな洞察も大歓迎です。

import pywinusb.hid as hid
import time
def sample_handler(data):
    print("Raw data: {0}".format(data))

filter = hid.HidDeviceFilter(vendor_id=0x0801, product_id=0x0003)
devices = filter.get_devices()

if devices:
    device = devices[0]
    print "success"

device.open()
device.set_raw_data_handler(sample_handler)
out_report = device.find_feature_reports()[0]

cmd = (0x00,
0x1B,
0x61,
0x1B,
0x65,
0x1B,
0x61,
0x1B,
0x77,
0x1B,
0x73,
0x1B,
0x01,
0x41,
0x42,
0x43,
0x31,
0x32,
0x33,
0x1B,
0x02,
0x31,
0x32,
0x33,
0x34,
0x35,
0x1B,
0x03,
0x31,
0x32,
0x33,
0x34,
0x35,
0x3F,
0x1C
)
buffer = [0x00] * 65
i = 0
for x in cmd:
    buffer[i] = x
    i += 1

print buffer
out_report.set_raw_data(buffer)
out_report.send()
count = 0
while device.is_plugged() and count < 10:
    time.sleep(0.5)
    count += 1

device.close()
4

1 に答える 1