| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Получение данных со считывателя через COM порт |
| Автор: Jen5on 17.11.2009, 22:37 |
| Есть считыватель для бесконтактных карт. Подключается через COM порт + разъем для клавиатуры. Считываю с помощь программы в архиве. (там исходник и ехе-шник). Это стандартная программа для чтения/записи данных из com порта. Получать должен число от 5 до 11 знаков, но вмето этого получаю кракозябры. Числа же не обязательно преводить в ANSI, но пробовал и так результат то же. Моежет кому приходилось работать со считывателем??? И еще, зачем считыватель подключается еще к разъему для клавиатуры? Буду премного благодарен за любую информацию. |
| Автор: mrbrooks 18.11.2009, 09:18 |
от чего это зависит? Это нормально. Преобразуй приходящие байты (а они у тебя char) к целым. Обычно в шестнадцатиричной системе. |
| Автор: Jen5on 18.11.2009, 09:51 |
| Количество знаков зависит от того какой код был зашит в карточку (скажем так). Спасибо большое за совет! Буду пробовать. |
| Автор: Jen5on 27.11.2009, 15:18 | ||
Попытался перевести строку в число с помощью:
А результат такой http://ipicture.ru/ Я на всякий случай прилагаю исходник. Я так понимаю что преобразование происходит не успешно раз ноль выдает. Может сразу видно ошибку подскажите пожалуйста. |
| Автор: mrbrooks 27.11.2009, 16:02 | ||||||
| Как то ты не по христиански переводишь. Тем более в билдере. Если ты точно уверен что в буфере целое число то:
вернет тебе либо число, либо 0 в случае неудачи. Добавлено через 4 минуты и 38 секунд интересный подход камрад
буфер в целое, а потом целое, как вещественное, в строку. |
| Автор: Jen5on 27.11.2009, 17:24 | ||
Попробовал так:
Выдает "0". Наверно опять учудил... |
| Автор: Jen5on 30.11.2009, 09:59 |
| А зачем считыватель кроме COM-порта подключается еще к разъему для клавиатуры? |
| Автор: Platov 30.11.2009, 10:55 | ||
Может разработчики считывателя както хотели вводить пинкод? |
| Автор: xvr 30.11.2009, 17:19 | ||
Скорее всего для получения питания на считыватель. Попробуй подключиться к считывателю обычным терминалом и посмотреть, что он отправляет. Судя по твоим строкам - это совсем не текст (или скорость COM порта не настроенна) |
| Автор: Jen5on 2.12.2009, 13:49 |
| Это по идее должно быть число. от 5 до 12-11 знаков. Скорость на 9600. А в первом сообщении в исходнике ее менять даже можно, но от етого лучше не становится Может есть какая документация по работе со считывателями (но только для программиста)? Добавлено через 13 минут и 41 секунду Нашел на одном сайте)))) http://aksep-t.com/predlagaem.html Посмотрим как оно... Описание работы с устройство 1. Правильно подключите изделие к персональному компьютеру в соответствие с разделом Подключение (не забывайте о необходимости подключения внешнего источника питания 12В.) 2. Запустите программу Hyper terminal, входящую в поставку Windows. 3. Создайте соединение с параметрами: скорость – 9600 бод., 8бит, без четности, 1 стоповый бит. 4. Поднесите карту к считывателю. 5. Прочтите код карты в окне Hyper terminal. #F5674CE…….., где #F - признак начала считанного кода. После этих символов идет тело секретного кода. |
| Автор: xvr 2.12.2009, 17:16 |
Посмотрел на прогу, чтение из порта сделано неправильно.
|
| Автор: Jen5on 2.12.2009, 17:25 |
| спасибо огромное!!! Учту все замечания. |
| Автор: Dimitriy 10.12.2009, 15:28 |
| Не хочу тему создавать, српошу тут, примерно та же проблема но с русскими буквами. Посылаю в COM порт например "Привет!" а принимаю крякозябры, с английскими буквами всё ок. Такое только в С++ Rad Studio 2009 и 2010, в Borland 2006 всё нормально. Подскажите как перевести крякозябры в String? |
| Автор: xvr 10.12.2009, 18:38 | ||||
Ключевое слово - Unicode. В RAD 2009 он уже есть, так что в порт отправляются не русские буквы в 1251 кодировке, а младшие половинки от Unicode'овых русских символов
|