![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Алкоголик |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
Здраствуйте.
Проблема такая есть программа где используются магниотные ридеры(для считывания дисконтных карт). Раньше эти ридеры были через COM порт и все было замечательно, а тут озадачили через USB. Никакой документации не нашел что бы программа непосредственно с ридером работала по этому пллюнул и решил делать через одно место. Вообщем когда проводишь карточкой, то ридер работает как обычная клавиатура, по этому решил считывать в Edit. Строка такого вида ;778=153010001=160? Вот последние 160 и есть номер карты(может быть еще 5-значное число) Но возникла проблема, как мне узнать что наступил конец ввода(ридер передает не всю строку, а по одному символу), что бы начать отбор номера карты. Есть идеи? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Можно в OnChange засечь время, например GetTickCount, символы поступают сравнительно равномерно, поэтому интервал между ними будет колебаться в небольших пределах, после каждого OnChange запускать таймер на время в 5-10 раз большее чем время между приходом очередного символа, если символ пришел раньше, то отменяем таймер и перезапускам. После прихода последнего символа через указанное время таймер сработает (ведь его некому будет его отменить) и в его обработчике можно смело анализировать строку.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Алкоголик |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
Спасибо
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Засечь среднее время ввода символов. Например 1 раз в 2 секунды проверять TEdit на наличие двух знаков равно.
Добавлено через 55 секунд Должна быть возможность настроить ридер на паузу. Т.е. провели пропуск - пауза 2 секунды - провели пропуск - пауза 2 секунды. |
|||
|
||||
| dizJis |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 18.5.2009 Репутация: нет Всего: нет |
ИМХО, проще должно быть... После ввода последнего символа ридер "ентер" не нажимает? Либо другие спецсимволы не выводит?
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Когда я работал со сканером штрих-кодов, то сканер "нажимал" Enter.
Я ловил vk_return в событиях TEdit`а К сожалению, Алкоголик не сообщил ничего по поводу Enter. |
|||
|
||||
| Алкоголик |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
Да, идет Enter идет в конце. Я сделал вот так вот:
Это сообщение отредактировал(а) Алкоголик - 22.5.2009, 06:44 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |