2017-10-26 17 views
0

私は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() 

答えて

0

私はどの制御文字を送信するかを知りました。まだ機能レポートのみを使用しています。これは、3 = 3?トラック上の2つのマグストリップ。

cmd = (0x00, 
0x1B, 
0x61, 
0x1B, 
0x77, 
0x1B, 
0x73, 
0x1B, 
0x02, 
0x33, 
0x3D, 
0x33, 
0x3F, 
0x1C, 
) 
関連する問題