[英]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.