Конвертировать данные в формате RAW в удобочитаемую форму

Я купил карт-ридер MSR606 Mag-Stripe. Как видно из руководства по программированию, он взаимодействует с компьютером со стандартными уровнями напряжения сигнала 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 в значение, которое вижу в инструменте производителя, но понятия не имею! Я пытался преобразовать шестнадцатеричные значения в десятичные, но не помогло.

1 ответ

Похоже, что readline не возвращает достаточно данных для создания этих строк ISO и RAW. Я сам не могу проверить это, но посмотрите код Python здесь, чтобы увидеть, как они читают и записывают данные с помощью этого кард-ридера:

https://www.triades.net/msr605-driver.html

Вот еще одна библиотека, которая может быть полезна:

https://github.com/0ki/libMSRx05

Другие вопросы по тегам