#c# #asp.net #asp.net-mvc #winforms #signalr
#c# #asp.net #asp.net-mvc #winforms #signalr
Вопрос:
У меня есть устаревшее приложение winforms, которое используется поставщиком кафе. Мы интегрировали сканер штрих-кода в качестве компонента activex в приложение, и все работает так, как ожидалось.
Недавно мы столкнулись с проблемой, когда клиент попытался использовать сканер штрих-кода для веб-приложения, оставив существующее приложение winforms свернутым. Она не смогла использовать сканер штрих-кода, поскольку он был зарегистрирован для приложения winforms, и только после закрытия соединений она смогла использовать webapp.
Чтобы преодолеть это, хотелось бы знать, можем ли мы использовать SignalR вместо ActiveX для использования сканера штрих-кода с приложением. Таким образом, будет центральный концентратор с 2 клиентами (Web app и winforms), и концентратор может решить, какой ответ отправлять какому подписчику. Любые мысли по этому поводу были бы очень полезны для нас, чтобы продолжить работу над этим.
Комментарии:
1. Сканеры штрих-кодов, которые я когда-либо видел, работают как клавиатура. Они отправляют ключи в активное окно, независимо от того, является ли оно веб-браузером, блокнотом, моим приложением или чем-либо еще. Таким образом, если, закрыв ваше приложение и используя 2 экземпляра notepad, каждый экземпляр может получать ключи, когда он активен, с вашим приложением могут возникнуть некоторые проблемы.
2. Я не использую сканер штрих-кода как простое устройство ввода. Чтобы предоставить вам справочный код, я проверяю, к какому COM-порту он подключен, а затем инициализирую свой объект ActiveX scanner на устройстве на этом COM-порту. Таким образом, это означает, что мой процесс — Winforms.exe прослушивает COM-порт, и проект веб-приложения при попытке инициализировать объект ActiveX штрих-кода выдает исключение, сообщающее, что Com-порт используется. Итак, я хотел бы сделать это центром и заставить всех моих подписчиков подключаться к нему и отправлять ответы в виде сообщений SignalR.
3. @Dinny На вашем месте я бы попытался посмотреть, смогу ли я использовать его как клавиатуру, не прослушивая com-порт. Если это невозможно, то я бы создал приложение / службу Windows, которое прослушивает com-порт и после получения данных отправляет ключи в активное окно, просто используя
SendKeys
. Таким образом, единственное приложение, подключенное к порту, — это ваше приложение / служба, а все остальные приложения будут получать данные так, как они получают данные с клавиатуры.4. @Oliver — Даже тогда я столкнулся бы с тем же препятствием, если бы использовал ActiveX. Как сказано выше, мой экземпляр подключения снова будет ограничен одним клиентом и в конечном итоге окажется в той же ситуации.
5. @RezaAghaei — Не уверен, насколько эффективным будет это решение, но, тем не менее, позвольте мне попробовать. Спасибо, что предложили обходной путь.