Добрый день!
В наличии есть карты с магнитной полосой, клавиатуры Gigatek kb840 с ридером с клавиатурным интерфейсом, и желание использовать данные карты в качестве скидочных.
Вот таким образом данная карта читается в обычном текстовом редакторе
0000000000: 3B 34 37 34 32 35 3F 0A │ ;47425?◙
Соответственно ";" - префикс, 47425 - значимый номер и "?"+#CR - суффикс (несмотря на то, что в редакторе 0А - определяется именно 13)
Настроил у ридера префиксы 59,00 и суффиксы 63,13. В тесте считывается все верно.
Завожу в goods.txt следующее!
4;10%;10% Тест карты;47425;0;10;1;47425;1;0;1;;;;0;0;
и... ноль эффекта. Такая же скидка через сканер штрих кода прекрасно проходит.
Вопрос.. Чего не хватает для нормальной работы? Немного смущает "c_key = 4128 " после считывания цифр номера
------reg key press------
c_key = 59
c_ascii = 59
c_state = 0
c_text = ;
c_text len = 1
------------
KeyboardDevice::FindCode(code = 59, status = 0)
------reg key press------
c_key = 52
c_ascii = 52
c_state = 0
c_text = 4
c_text len = 1
------------
KeyboardDevice::FindCode(code = 52, status = 2)
------reg key press------
c_key = 55
c_ascii = 55
c_state = 0
c_text = 7
c_text len = 1
------------
KeyboardDevice::FindCode(code = 55, status = 2)
------reg key press------
c_key = 52
c_ascii = 52
c_state = 0
c_text = 4
c_text len = 1
------------
KeyboardDevice::FindCode(code = 54, status = 2)
------reg key press------
c_key = 50
c_ascii = 50
c_state = 0
c_text = 2
c_text len = 1
------------
KeyboardDevice::FindCode(code = 50, status = 2)
------reg key press------
c_key = 53
c_ascii = 53
c_state = 0
c_text = 5
c_text len = 1
------------
KeyboardDevice::FindCode(code = 53, status = 2)
------reg key press------
c_key = 4128
c_ascii = 0
c_state = 0
c_text =
c_text len = 0
------------
KeyboardDevice::FindCode(code = 4128, status = 2)
------reg key press------
c_key = 63
c_ascii = 63
c_state = 256
c_text = ?
c_text len = 1
------------
KeyboardDevice::FindCode(code = 63, status = 2)
------reg key press------
c_key = 4100
c_ascii = 13
c_state = 0
c_text =
c_text len = 1
------------
KeyboardDevice::FindCode(code = 4100, status = 3)