我买了一台MSR606 Mag-Stripe读卡器。正如您在its programmer's guidance document中所看到的,它与具有标准RS232信号电压电平的计算机进行通信。默认值,9600波特,无奇偶校验,8位。
它支持的其中一个命令是读取RAW数据:
我尝试在python中使用上面的命令读取我的卡片。结果如下:
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import serial
>>> encoder = serial.Serial("COM3", 9600, timeout = 3)
>>> encoder.write(b'\x1b\x6d')
2
>>> encoder.readline()
b'\x1bs\x1b\x01\x00\x1b\x02^\xd3C\x9eNp#y\x06\xf1\xb5\r\xa6\xd0\xd6\x01\x83y
\xc6\x84!\x08B\x10\x87\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x1b\x03\x00?\x1c\x1b0'
>>>
这是当我读同一张卡时制造商的工具返回的结果:
ISO Form : 6037991467167650=96051016776000000000
RAW Form : D3439E4E70237906F1B50DA6D0D6018379C6842108421087ED
这是制造商的工具输出:
我的问题是什么?
我想将我的Python程序的输出转换为我在制造商工具中看到的值,但我不知道!我试图将十六进制值转换为十进制,但没有帮助。
答案 0 :(得分:0)
没有出现'readline'返回足够的数据来生成那些ISO和RAW字符串。我自己无法真正测试它,但请查看Python代码,了解它们如何使用该读卡器读取和写入数据:
https://www.triades.net/msr605-driver.html
这是另一个可能有用的库: