|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
Добрый день! Столкнулся с проблемой нужно при контакте карточки и считывателя получать код карточки и считывателя. Считыватель UART подключается при помощи usb. Мой адресс устройства 00000002 Пример тестовой программы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118.
Протокол обмена Обмен между считывателем и компьютером осуществляется с помощью пере-дачи специальных команд и приема ответов. Считыватель поддерживает два режима чтения карт (режимы программируются командой 0xC1, описание которой приведено ниже): – выдача кода карты по запросу; – выдача кода карты по факту поднесения карты. Если установлен режим работы 0, то для считывания карты могут использовать-ся команды 0xC3, 0xC4 и 0xCE. Если установлен режим работы 1, то идентификатор карты выдается при ее поднесении в формате ответа на команду 0xC3. Переключение между режимами осуществляется посредством команд. Опи-сание всего набора команд и их формата приведено ниже. Скорость передачи по RS-232 программируется и может принимать значения 1200, 2400, 4800, 9600, 19200, 38400, 115200 бит/с. По умолчанию установлена ско-рость 9600 бит/с. Формат слова: 1 старт-бит, 8 бит, контроль по четности,1стоп-бит. Формат команды представлен в таблице 3. Таблица 3 – Формат команды № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xXX код команды 4 0xXX длина параметров команды 5 [0xXX, … 0xXX] параметры команды 6 0x11 маркер конца сообщения 7 0xXX контрольная сумма сообщения Формат ответа приведен в таблице 4. Таблица 4 – Формат ответа № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xXX код команды 4 0xXX длина результата выполнения команды 5 [0xXX, … 0xXX] код ошибки + результат выполнения команды (для команд, которые возвращают значение) 6 0x11 маркер конца сообщения 7 0xXX контрольная сумма сообщения Контрольная сумма рассчитывается как арифметическая сумма байт от маркера начала до маркера конца включительно. В случае возникновения ошибок для любых команд ответ выглядит, как показано в таблице 5. Таблица 5 – Формат ошибки № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xXX код команды, в результате получения кото-рой возникла ошибка 4 0x01 длина ошибки 5 1, 21, 22 код ошибки 6 0x11 маркер конца сообщения 7 0xXX контрольная сумма сообщения Могут возникать следующие ошибки (в десятичном формате): 01 – неправильный код команды, неправильная длина параметров, 21 – ошибка контрольной суммы, 22 – ошибка данных (неправильный параметр, например месяц = 13). Используются следующие команды: 0xC0 – Прочитать/записать идентификатор устройства Вид запроса команды приведен в таблице 6. Если в запросе длина параметров равна 0, то производится чтение идентификатора считывателя. Вид ответа приведен в таблице 7. Если длина параметров отличная от приведенной, то выдается ошибка с кодом 1. В случае возникновения ошибки, генерируется ошибка, приведенная в табли-це 8. Будут записаны все параметры, которые соответствуют длине параметров (на-пример, при длине параметров = 3, будут записаны тип устройства и версия прошив-ки). Таблица 6 – Запрос команды 0xC0 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xC0 код команды 4 0, 1, 3, 6, 12, 14 длина параметров 5 0xXX тип устройства (описание приведено ниже) 6 0xXXXX версия прошивки (2 байта, начиная со старшего) 7 0-99 дата выпуска прошивки (год) 8 1-12 дата выпуска прошивки (месяц) 9 1-31 дата выпуска прошивки (день) 10 0xXXXXXXXXXXXX Серийный номер устройства (6 байт, начи-ная со старшего) 11 0xXXXX Дополнительная информация (2 байта, на-чиная со старшего) 13 0x11 маркер конца сообщения 14 0xXX контрольная сумма сообщения Таблица 7 – Ответ на команду 0xC0 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xC0 код команды 4 15 длина параметров 5 0 код ошибки (0 – ошибки нет) 6 0x00, 0x06 тип устройства (описание приведено ниже) 7 0xXXXX версия прошивки (2 байта, начиная со старшего) 8 0-99 дата выпуска прошивки (год) 9 1-12 дата выпуска прошивки (месяц) 10 1-31 дата выпуска прошивки (день) 11 0xXXXXXXXXXXXX Серийный номер устройства (6 байт, начи-ная со старшего) 12 0xXXXX Дополнительная информация (2 байта, на-чиная со старшего) 13 0x11 маркер конца сообщения 14 0xXX контрольная сумма сообщения Таблица 8 – Формат ошибки команды 0xC0 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xС0 код команды, в результате получения кото-рой возникла ошибка 4 0x01 длина ошибки 5 4 код ошибки (ошибка записи в EEPROM) 6 0x11 маркер конца сообщения 7 0xXX контрольная сумма сообщения 0xC1 – Прочитать/записать параметры устройства Вид запроса команды приведен в таблице 9. Если в запросе длина параметров равна 0, то производится чтение параметров считывателя. Вид ответа приведен в таб-лице 10. Если длина параметров больше 6, то выдается ошибка с кодом 1. В случае возникновения ошибки, генерируется ошибка, приведенная в таблице 11. Будут запи-саны все параметры, которые соответствую длине параметров (например, при длине параметров = 3, будут записаны тип устройства, его адрес и скорость обмена). Таблица 9 – Запрос команды 0xC1 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xC1 код команды 4 0-6 длина параметров 6 0xXX тип устройства (описание приведено ниже) 7 0xXX адрес устройства 8 0 – 7 скорость обмена (описание приведено ниже, по умолчанию 3 = 9600бит/с) 9 0xXX период чтения карты (время хранения карты после ее прочтения, 1=100мс, по умолчанию 10 = 1с) 10 0, 1 режим работы устройства (0 – выдача кода карты по запросу, 1 – выдача кода карты по факту подне-сения карты) 11 0x11 маркер конца сообщения 12 0xXX контрольная сумма сообщения Таблица 10 – Ответ на команду 0xC1 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xC0 код команды 4 6 длина параметров 5 0 код ошибки (0 – ошибки нет) 6 0xXX тип устройства (описание приведено ниже) 7 0xXX адрес устройства 8 0 – 7 скорость обмена (по умолчанию 3 = 9600бит/с) 9 0xXX период чтения карты (время хранения карты после ее прочтения, 1=100мс, по умолчанию 10 = 1с) 10 0, 1 режим работы устройства 11 0x11 маркер конца сообщения 12 0xXX контрольная сумма сообщения Таблица 11 – Формат ошибки команды 0xC1 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xС1 код команды, в результате получения кото-рой возникла ошибка 4 0x01 длина ошибки 5 4 код ошибки (ошибка записи в EEPROM) 6 0x11 маркер конца сообщения 7 0xXX контрольная сумма сообщения При перезаписи адреса необходимо учитывать, что ответ будет с новым адре-сом. Скорость изменится после выключения/включения питания. Используются следующие параметры для записи скорости обмена: 0 - 1200 бит/с; 1 - 2400 бит/с; 2 - 4800 бит/с; 3 - 9600 бит/с; 4 - 19200 бит/с; 5 - 38400 бит/с; 6 - 57600 бит/с; 7 - 115200 бит/с. Для определения типа устройства используются параметры приведенные ниже: 0 – Тип не определен; 6 – Контрольный считыватель СBK-01 с интерфейсом RS232, предназначенный для считывания карт совместимых с Em-Marin H4001 (125кГц); 7 – Контрольный считыватель СBK-01TM с интерфейсом RS232, предназначен-ный для считывания ключей Touch Memory; 8 - контрольный считыватель c интерфейсом USB, предназначенный для считы-вания карт совместимых с Em-Marin H4001 (125кГц); 9 - контрольный считыватель c интерфейсом USB, предназначенный для считы-вания ключей Touch Memory; 0xC2 – Прочитать параметры устройства Команда используется только для чтения параметров. Формат команды пред-ставлен в таблице 3. Длина параметров в запросе всегда равна 0 (параметры не пере-даются). Формат ответа аналогичен формату команды 0xC2, приведенному в таблице 12. Единственное отличие: код команды = 0xC2. 0xC3 – Прочитать состояние устройства Команда используется для чтения состояния устройства. Формат команды пред-ставлен в таблице 3. Длина параметров в запросе всегда равна 0 (параметры не пере-даются). Если есть прочитанная карты, то вид ответа показан в таблице 12, если нет, то в таблице 13. Во избежание потери идентификатора прочитанной карты, учитывать, что период опроса считывателя, должен быть меньше, чем период чтения карты. Таблица 12 – Ответ 1 на команду 0xC3 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xC3 код команды 4 8 длина параметров 5 0 код ошибки (0 – ошибки нет) 6 0x80 состояние устройства (0x80 – прочитана карта) 7 0xID0…0xID5 идентификатор карты (5 байт, начиная с младшего) 8 0x00 старший байт идентификатора (равен 0x00 для со-вместимости с ключами Touch Memory) 9 0x11 маркер конца сообщения 10 0xXX контрольная сумма сообщения Таблица 13 – Ответ 2 на команду 0xC3 № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xC3 код команды 4 2 длина параметров 5 0 код ошибки (0 – ошибки нет) 6 0x00 состояние устройства (0x00 – нет прочитаной карты) 7 0x11 маркер конца сообщения 8 0xXX контрольная сумма сообщения 0xC4, 0xCE – Прочитать состояние устройства Команда используется для чтения карты из памяти считывателя. Формат коман-ды представлен в таблице 3. Длина параметров в запросе всегда равна 0 (параметры не передаются). Если есть прочитанная карта, то вид ответа показан в таблице 14, ес-ли нет, то в таблице 15. Таблица 14 – Ответ на команду 0xC4, 0xCE № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xС4, 0xСE код команды 4 7 длина параметров 5 0 код ошибки (0 – ошибки нет) 6 0xID0…0xID5 идентификатор карты (5 байт, начиная с младшего) 7 0x00 старший байт идентификатора (равен 0x00 для со-вместимости с ключами Touch Memory) 8 0x11 маркер конца сообщения 9 0xXX контрольная сумма сообщения Таблица 15 – Формат ошибки команды 0xC4, 0xCE № п/п Значение Описание 1 0x10 маркер начала сообщения 2 0xXX адрес устройства 3 0xС4, 0xСE код команды 4 0x01 длина ошибки 5 20 код ошибки (нет прочитанной карты) 6 0x11 маркер конца сообщения 7 0xXX контрольная сумма сообщения ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 15:17 |
|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
Проблема в том что данные не проходят в консоль. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 15:22 |
|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
AlexNonПроблема в том что данные не проходят в консоль. Программ нет, сниффера тоже, пишу по приборам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 15:44 |
|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
Варианта три 1. Неправильно открываешь порт 2. Неправильно шлешь команду 3. Устройство не настроено или не работает Сначала надо удостовериться что устройство фурычит. Для этого берешь 2-3 программ для общения по ком порту и шлешь данные и считываешь ответ. Дальше пляшешь от результатов - либо ищешь ошибку у себя в коде, либо выбрасываешь устройство ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 17:39 |
|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
Порт тулс пойдет для проверки? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 20:02 |
|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
AlexNonПорт тулс пойдет для проверки? son456 ты можешь как-нибудь по-другому начинать свои темы? "Здравствуйте! Столкнулся с проблемой...." ты за что ни возьмешься - все время сталкиваешься с проблемами. Может тебе уже лучше взяться за метлу? Ато с такими потугами "програмистом" можно назвать любого кто умеет кликать мышкой и дубасить по клавиатуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 23:05 |
|
Не получается запрограммировать обмен считывателя с компьютером.
|
|||
---|---|---|---|
#18+
AlexNonПроблема в том что данные не проходят в консоль. Похоже автор совершенно не понимает что делает. Для начала стоит разобраться в принципе работы имеющегося устройства, во-вторых нужно не тупо передрать чей-то пример и расчитывать что он будет сразу работать, а сесть разобраться с командами устройства, тем более что есть справка что где и как. Вобщем сложилось такое впечатление, что автор скорее всего не имеет отношения ни к программированию ни к ИТ вцелом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 11:24 |
|
|
start [/forum/topic.php?fid=20&fpage=46&tid=1399982]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 423ms |
0 / 0 |