Задать вопрос
  • Обработать поток байт от USB CDC C#?

    igolets
    @igolets
    Программист C#, MSSQL
    1. Хорошо бы код, который работает с оборудованием (читает данные) вынести в отдельный класс и сделать под него интерфейс. Для чего нужно — если нужно будет разделить работу "железячника" и программиста интерфейса, второму можно будет дать возможность запускать программу с "заглушкой", чтобы он пилил интерфейс без доступа к железу. Ну, или для демонстрации программы запустить без доступа к железу.
    2. Соответственно, По событию на форме (старт/стоп) вызываются некие методы класса работы с железом и происходит получение/накопление данных. В зависимости от логики этого класса вызываются события (по получении байта, или полного пакета)
    3. По событию (код формы навесил обработчики событий при инициализации кода, работающего с железом) форма уже обращается к экземпляру класса, который работает с железом и получает от него данные (скорее всего, в сыром бинарном виде) и что-то с ними делает. Например, преобразует в класс-модельку, которая добавляется в биндингсорс (List), который используется как DataSource для ListView
    4. Код трансляции бинарных данных в модельку лучше тоже в отдельный класс вынести. Могу предположить, что могут быть разные формы представления данных.


    Вкратце так.

    Ну, а код класса имитации будет имитировать работу настоящего класса, вызывать нужные события и отдавать заранее записанные данные, или генерить по какому-то алгоритму. Переключение между заглушкой и настоящим классом реализуется, например, при помощи Dependency Injection, для C# можно использовать что-то типа https://habr.com/ru/post/50845/. В конфиг-файле прописывается, какой класс используется и всё, один и тот же код в рантайме использует разные классы. Лично я, например, так реализую работу с Фискальными аппаратами и терминалами оплаты пластиковыми картами.
    Ответ написан
    Комментировать
  • Какие есть качественные голосовые читалки?

    igolets
    @igolets
    Программист C#, MSSQL
    Недавно Яндекс выкатил интересное демо своей технологии TTS (https://yandex.ru/promo/browser/video_translation/m/03), мне озвучка очень понравилась. Планирую в отпуске поиграться, попробовать озвучивать книги.
    Ответ написан
  • Как сделать личный кабинет для user?

    igolets
    @igolets
    Программист C#, MSSQL
    Учитывая, что нет указания на язык разработки, попробую уточнить предыдущий ответ в максимально абстрактных терминах.

    По-хорошему, в БД у каждого пользователя есть список ролей, к которым он привязан, а в используемом языке есть механизм аутентификации (ввести логин и пароль, так, что потом в последующих запросах система пользователя узнавала). А на сервере есть возможность узнать логин юзера, сбегать в БД и посмотреть его роли. Это простой способ.

    Чуть менее "в лоб", но более правильно делать так:
    В коде определяются разделы сайта, которые доступны разным ролям, например, выделяется админский раздел, куда можно только админам. Как в неуказанном языке это делается не знаю, в C# — контроллерами и атрибутами доступа. Дальше средствами языка/среды выполнения проверяется, есть ли у юсера указанная роль и выдается/не выдается доступ. А дальше в админском разделе находится набор админской логики. Например, можно всё видеть, удалять и т.п.
    Ответ написан
    Комментировать
  • Как встроить embedded webserver в .NET Winforms приложение?

    igolets
    @igolets
    Программист C#, MSSQL
    Для .Net я бы посоветовал OWIN — https://docs.microsoft.com/en-us/aspnet/core/funda...

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

    Кстати, ASP.NET шаблоны сейчас активно используют owin.
    Ответ написан
    1 комментарий
  • Возможна ли публикации автономного ASP.NET Core приложения (сайта)?

    igolets
    @igolets
    Программист C#, MSSQL
    В диалоге паблиша на вкладке Settings указать "Target runtime = Portable" - не оно?
    Ответ написан
    Комментировать