私はPOC用にISO-7811仕様の磁気カードを読み書きできる(非常に厳しく制限された時間の制約のある)tkinterアプリケーションを作成することになっています。私は、言及された標準に準拠するMSR605xエンコーダを使用しています。pywinusb HID磁気ストライプカードエンコーダに書き込む
これまでは、エンコーダを読み取りモードに設定し、機能レポートを使用してカードスワイプを読み取って、必要な生データコマンドを設定することができました。
指定された制御コマンドと、機能レポートを使用してカードに書き込むデータBLOBを送信することで、エンコーダを書き込みモードにすることができません。私が理解しているように、デバイスはそれがインタフェースできるレポートの種類を指示します。問題のデバイスは、出力と機能の2つを指定します。
私は運がない出力レポートを試みました。理想的には、デバイスがCOMポートを使用し、HIDは使用しないことを望みますが、その周りには方法がないようです。
私は試してみることができるライブラリがありますか、実装で何か不足していますか?
これは私が、デバイスが見つかりいくつかのドキュメントです: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()