簡體   English   中英

pywinusb寫入HID磁條卡編碼器

[英]pywinusb Write to HID magstripe card encoder

我的任務是創建一個(非常受時間限制的)tkinter應用程序,該應用程序可以為POC讀寫ISO-7811規格的磁卡。 我正在使用符合上述標准的MSR605x編碼器。

到目前為止,我已經能夠將編碼器設置為讀取模式,並使用功能報告並設置所需的原始數據命令來回讀刷卡。

我無法通過使用功能報告發送指定的控制命令和要寫入卡的數據Blob來使編碼器進入寫入模式。 據我了解,設備決定了可以與之交互的報告類型。 有問題的設備指定兩個:輸出和功能。

我嘗試輸出報告時沒有運氣。 理想情況下,我希望設備使用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()

我弄清楚了發送哪個控制字符。 仍僅使用功能報告。 這相當於; 3 = 3? 在磁條的第二磁道上。

cmd = (0x00,
0x1B,
0x61,
0x1B,
0x77,
0x1B,
0x73,
0x1B,
0x02,
0x33,
0x3D,
0x33,
0x3F,
0x1C,
)

暫無
暫無

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

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