powered by simpleCommunicator - 2.0.31     © 2024 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Накопление символов в строку при KeyPress.
25 сообщений из 40, страница 1 из 2
Накопление символов в строку при KeyPress.
    #40131023
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго.
Пишу небольшую программку. Логика то мне ясна, хотя может вы, что умного подскажите. Цель получение и обработка набора символом получаемых со сканера шрихкода подключено как эмулятор клавиатуры.
Для железа (и ПО соответственно) ввод со сканера (в разрыв клавиатуры) не отличается от набора на клавиатуре. Единственно, что можно отследить - интервал между нажатиями - человек не надолбит 13 цифр за доли секунды.
В сканере у меня есть префикс и постфикс соответственно начало и завершение штрих кода.
На чем я заткнулся. Есть форма. У нее есть событие KeyPress, в C# я не силен, так вот мне надо накапливать входящие значения.
Ну типа такого. Получаем в событии KeyPress текущий символ клавиатуру, если это префикс, то вызываем свою процедуру. Сразу вопрос, где ее лучше разметить? В своей процедуре. Туту тоже вопрос, нужно где-то хранить переменную вне процедуры. Если это префикс то нашу переную обнуляем, если нет, то добавляем в конец текущий полученный символ, если это это суффикс, то вызываем другую свою процедуру.
Вроде просто, но сообразить не могу. В C# только начал работать.
Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131045
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нафига весь этот секс с KeyDown? просто сделай текстовое поле, в которое шрихкод будет вносить данные, пользователь пусть сам убедится в их корректности, а еще лучше со сканером работать в нормально режиме, без всяких эмуляций, тогда можно и события сканирования сделать и получать нормальный код, без всяких KeyDown'ов. Библиотек для этого уже 100500 понаписано, для всего, что только можно
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131102
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня нет текстового поля. Да и не нужно оно мне, штрихкод не читабелен, длинен, и пользователю там нечего делать.
Ремиv эмуляции клавиатуры есть самый нормальный режим. Все сканеры так сейчас работают.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131107
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
сканеры могут передавать данные в режиме COM-порта- то есть тебе не нужны какие-либо текстовые поля, нужно только прослушиватель данных из com-порта. Очень удобно- последовательность символов приходит целой пачкой.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131109
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могут.
Но это надо ставить драйверы, опять не везде есть ком порты, опять не у всех сканеров есть такая возможность
Опять это эмуляция, переходники USB-COM или наоборот.
С моим зоопарком-то проблем будет. Не хочу.
Опять же проброс на сервер терминалов.
А так воткнул, винда сама нашла, дрова подкинула и поехали.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131111
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
там виртуальный com-порт-никаких аппаратных дополнительных модулей ставить не надо. Драйвер используется тот же, что и для передачи в режиме текстовой вставки. Единственное нужно будет дополнительно прописать номер порта. Зачем нужен проброс на сервер терминалов? Вы делаете приложение, которое слушает COM-порт и само обрабатывает данные.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131114
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не хочу я COM портами возиться.
Надоело.
Проброс для тонких клиентов, а они на малинке у меня. Какие там нафиг порты и драйверы.
В общем хочу так. Как сначала написал.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131116
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
считывание сканером это как будто ввели набор символов и нажали Enter.
Без текстового поля не обойтись, поэтому если его не нужно показывать, то придётся делать его скрытым и следить все время, чтобы фокус был именно на нем. Не знаю прокатит ли это со скрытым TextBox.
Так же необходимо будет все время следить за раскладкой клавиатуры- сканирование при разных раскладках дает разный результат.
То есть или менять кириллицу на латиницу на ходу или делать запрет на её ввод.
Считывать каждый символ и накапливать его не придется - нужно слушать событие нажатия Enter- и ты получишь всю последовательность штрихкода-после этого нужно очистить TextBox. С малинок куда хочешь, туда дальше и кидай- хочешь по http, хочешь через сокеты.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131117
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
у тебя что малинки на винде?
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131126
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
авторРемиv эмуляции клавиатуры есть самый нормальный режим.
самый не нормальный,vb_sub верное решение предлагает, а так - будет полный геморрой.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131146
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
tavr2022,
у тебя что малинки на винде?


Нет. Но секасом с COM портом через USB заниматься как то не хочется.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131148
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub,
авторсчитывание сканером это как будто ввели набор символов и нажали Enter.

Да вот именно это мне и нравится.

авторБез текстового поля не обойтись, поэтому если его не нужно показывать, то придётся делать его скрытым и следить все время, чтобы фокус был именно на нем. Не знаю прокатит ли это со скрытым TextBox.

А вот этот геморой мне и хотелось бы избежать. Через поле я TextBox сделал.
Фокус вечно куда пропадает. Пользователь то мышкой дернет то винда там что подумает.
А особо умные пользователи пытаюсь проявить сообразительность, и что-то править.


авторТак же необходимо будет все время следить за раскладкой клавиатуры- сканирование при разных раскладках дает разный результат.
То есть или менять кириллицу на латиницу на ходу или делать запрет на её ввод.

Но вот тут как эту проблему и хочу решить, тут будет проще сразу менять на нужный код клавиши.

авторСчитывать каждый символ и накапливать его не придется - нужно слушать событие нажатия Enter- и ты получишь всю последовательность штрихкода-после этого нужно очистить TextBox. С малинок куда хочешь, туда дальше и кидай- хочешь по http, хочешь через сокеты.

Малинки работают только как тонкие клиенты, сами они ничего не обрабатывают.
TextBox неудобен, длин шрихкода очень большая. Мерцание при перерисовке, доступен пользователю, постоянные потери фокуса, опять проверка на вводимое значение, конвертация в другую раскладку при необходимости.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131171
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
нет препятствий энтузиастам!
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131183
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно. Мне советы нужны.

Даже хнен с ним.
Пусть это будет ТextBox.
Как мне не терять фокус?
Как мне не дать пользователю тама ручками шаловливыми что-то править?
И если форм у меня будет больше одной, мне надо где-то общая процедура по обработке всего этого, где ее размещать?
Писать код в самой форме это не есть хорошо.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131184
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
tavr2022Как мне не терять фокус?
Все время отслеживать его изменение и возвращать обратно
tavr2022Как мне не дать пользователю тама ручками шаловливыми что-то править?
Возможно спрятать где-либо Textbox
tavr2022И если форм у меня будет больше одной, мне надо где-то общая процедура по обработке всего этого, где ее размещать?
Это наименьшая из проблем, с которой ты при своем подходе столкнешься. Можешь размесить всю обработку в одном классе-сервисе и оттуда все использовать.
tavr2022Писать код в самой форме это не есть хорошо.
Можешь воспользоваться MVVM-подходом.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131187
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022
А вот этот геморой мне и хотелось бы избежать. Через поле я TextBox сделал.
Фокус вечно куда пропадает. Пользователь то мышкой дернет то винда там что подумает.
А особо умные пользователи пытаюсь проявить сообразительность, и что-то править

Это легко решается, как только поле теряет фокус, просто сфокусируй обратно.
делайте как вас советовали, через COM или используйте существующие либы. Ничего сложного в работе с COM портом нет, это не сложнее, чем работать с клавиатурой или файлом. В 90-2000 у всех были модемы и терминальный доступ по COM порту была норма, любой пользователь мог разобраться, как терминально зайти на BBS ^) в вашем случае это считай тоже самое. Все это взаимодействие заверните в сервис, который возвращает асинхронную операцию ReadAsync() и читайте данные с COM порта, подозреваю, что там не надо быть Шерлоком Холмсом, чтоб понять, что это за данные и как их прочитать. Но всё это уже написано, 100500%
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131188
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub,

авторВсе время отслеживать его изменение и возвращать обратно.

Ну да есть событие Leave. Можно на него и привязаться. Как прошло, то сразу вернуть назад.
Или у меня в шрихкоде есть префикс, и через пресловутое событие KeyPress формы ловить как префикс проскочил, активировать нужный мне TextBox
Как вам второй вариант?

авторМожешь размесить всю обработку в одном классе-сервисе и оттуда все использовать.

Вот тут у меня и затык. В Дельфи можно было делать общие процедуры и функции в одном модуле. А тут такого нет полное ОПП.
Киньтесь примером коли не в тягость.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131190
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Ну нет у меня COM портов.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131193
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022
Вот тут у меня и затык. В Дельфи можно было делать общие процедуры и функции в одном модуле. А тут такого нет полное ОПП.
Киньтесь примером коли не в тягость.

Что бы затоков не было, надо мыслить в объектно-ориентированной парадигме, а не процедурной. Но не везде оно нужно, конечно.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131195
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022,
для "Честного знака" приложение пишешь?
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131200
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
tavr2022,
для "Честного знака" приложение пишешь?


Нет, у нас тут свой аттракцион.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131224
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не пойму, зачем тут текстбокс.
Прочитал клавишу
- если символ начала - поставил флаг, что запись идет, и инициализировал переменную-накопитель
- если символ конца - сбросил флаг записи и выполнил действия
- в остальных случаях если флага записи нет - игнор, есть - добавляем в накопитель
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131225
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

это будет работать до тех пор пока его приложение в фокусе, если выбрать в фокусе какое-нибудь другое окно, габела. А если кот по клавиатуре пробежит? :D
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131227
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Что-то я не пойму, зачем тут текстбокс.
Прочитал клавишу
- если символ начала - поставил флаг, что запись идет, и инициализировал переменную-накопитель
- если символ конца - сбросил флаг записи и выполнил действия
- в остальных случаях если флага записи нет - игнор, есть - добавляем в накопитель


Блин я так и хочу. Как этот накопитель блин сделать?
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131280
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022
Как этот накопитель блин сделать?
Код: c#
1.
a += b

так не подойдет?
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Накопление символов в строку при KeyPress.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]