powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Накопление символов в строку при KeyPress.
40 сообщений из 40, показаны все 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
Накопление символов в строку при KeyPress.
    #40131283
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
это будет работать до тех пор пока его приложение в фокусе, если выбрать в фокусе какое-нибудь другое окно, габела. А если кот по клавиатуре пробежит? :D
ну ТС настаивает на эмуляции клавиатуры, что тут поделаешь
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131284
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Думаю нет. Мне строку набирать надо.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131287
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022
Shocker.Pro,

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


Блин я так и хочу. Как этот накопитель блин сделать?


В обоих случаях важное выражение "блин" должно быть окаймлено запятыми: одной и двумя.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131309
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создай класс, который слушает KeyDown\KeyUp, в классе должен быть StringBuilder, который добавляет символы в конце строки, как только нажимается кнопка цифры (намлок или обычные, или чем там плюется). Обрабатывай на уровне окна. как только количество символов в stringbuilder' достигает нужного, сделай вызов в форму, событие или как угодно еще. можно сделать валидацию по Regex, количество цифр и бизнес логики. Ввод сам по себе в любом случае синхронный.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131318
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
tavr2022
Shocker.Pro,

Думаю нет. Мне строку набирать надо.
и? понятно, что накопитель является строкой


Блин а реально прав.
Добавил в класс формы поле.
И все заработало как я хотел.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
private string scode;

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
  {
   scode = scode + e.KeyChar.ToString();
   //вывод чего насобиралось
  textBox2.Text = scode;
  }



А так как такую фигню надо в каждой форме где подразумевается ввод от сканера. Но у нас же ООП, можно от некой своей базовой формы наследоваться.
Шикарно.
Спасибо за подсказку.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131319
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes
создай класс, который слушает KeyDown\KeyUp, в классе должен быть StringBuilder, который добавляет символы в конце строки, как только нажимается кнопка цифры (намлок или обычные, или чем там плюется). Обрабатывай на уровне окна. как только количество символов в stringbuilder' достигает нужного, сделай вызов в форму, событие или как угодно еще. можно сделать валидацию по Regex, количество цифр и бизнес логики. Ввод сам по себе в любом случае синхронный.


Мне бы где пример глянут. Хоть отдалено похоже.
Ну не силен я в ООП.
Испрочен, процедурами.

А так по логике вообще идеально было бы пришел такой шрихкод, мы одни данные заполоняем, пришел другой другие.
Ну там например накладная или чек там. Мы бульк на нее, и номер заполнили, а потом товар пик, пик и у нас все товары. Ну как на кассах.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131451
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022

Мне бы где пример глянут. Хоть отдалено похоже.
Ну не силен я в ООП.
Испрочен , процедурами.

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


Если человек "не силен" в чем-то, то он "не силен" и во многом другом
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131469
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

Зря вы так. Есть в чем я силен. Но дай нам Боги чтобы я и дальше не проявлял свои сильные стороны.
Так что я вас тут уважаемые, буду лучше вопросами мучат.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131510
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tavr2022
Ролг Хупин,

Зря вы так. Есть в чем я силен. Но дай нам Боги чтобы я и дальше не проявлял свои сильные стороны.
Так что я вас тут уважаемые, буду лучше вопросами мучат.


Тогда совет от модератора: не пишите в своих темах "я не силен в хзч", так будет лучше
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131523
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОпять это эмуляция, переходники USB-COM или наоборот.
Но секасом с COM портом через USB заниматься как то не хочется
Ну нет у меня COM портов.
Ну не хочу я COM портами возиться.
Надоело.

так то вставило неподетский, видать у парня вся жись как rs232, измученого процедурами :)
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131772
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи
авторОпять это эмуляция, переходники USB-COM или наоборот.
Но секасом с COM портом через USB заниматься как то не хочется
Ну нет у меня COM портов.
Ну не хочу я COM портами возиться.
Надоело.

так то вставило неподетский, видать у парня вся жись как rs232, измученого процедурами :)
Так ТС и RDP упоминал - там без геморроя не будет приложение работать напрямую с com. Самому приходилось делать эмулятор клавиатуры на клиентской машине, где считыватель штрихкода только com, а не как нормальные, клавиатурные.
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131774
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131778
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще эта какая то тенденция, человек хочет стать программистом, но не хочет ни в чем разбираться.
он хочет, чтоб можно было в гугле на стековфлоу найти нужный код и вставить его в программу.
нафига разобраться с COM портами и RS-232, лучше поищем костыли и побежим на них...
сегодня точно так же пытался разработчику объяснить, почему в гит репозитории не нужно индексировать одно и тоже изменение в двух разных ветках, в итоге, он всё равно делает по своему. Зачем слушать, кого то, ведь я могу и так наговнякать, очень тяжело с молодыми работать. Может во мне дело и я уже слишком стар... :(
возникли проблемы с сервисами интеграции на мыле, попросил помочь разобраться, на вопрос, чего он сам не разберется, отвечает, что это типа устаревшая технология, зачем мне её учить.
а если взять рядового фронтендера молодого, вообще волосы на голове шевелятся =) я их обзываю скриптерами, а они обижаются :) мол они программисты =) но открыть COM порт и прочитать от туда 10 байт, они не в состоянии, они даже не смогут настроить подключение, так как параметры не согласованы. А мне кажется, что каким бы человек не был программистом, основы он знать обязан. А работа с COM портами, RS-232 это основы, хотя бы на минимальном уровне. :`(
...
Рейтинг: 0 / 0
Накопление символов в строку при KeyPress.
    #40131779
tavr2022
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Я честно разбирался. И честно много работал с COM портами и другими портами.
И решение которое я хочу реализовать то же не от фонаря нарисовалось. Это уже четвертая итерация.
Если найдешь в устройстве типа Raspberry Pi 3 model B COM порт, я тебе бутылку отличного коньяка поставлю.
А если еще скажешь как его пробросить на WTware, так вообще ящик с меня будет.
Будь у меня винда и обычные копы, я бы дальше сюда и не пришел. Пилил бы дальше на Dephi свое поделие.
Но так как все равно надо начинать сначала, то почему не опробовать что-то новое, тем более C# бесплатный и очень популярный.
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Накопление символов в строку при KeyPress.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (9): Анонимы (6), Yandex Bot, RePredeclared, Bing Bot 1 мин.
x
x
Закрыть


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