Разработчик приложений Windows и Android.

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (24)

Лучшие ответы пользователя

Все ответы (17)
  • C# com-порт получение информации, обработка старт-бита, стоп-бита?

    @vitvov
    Если я правильно понял ваш вопрос, то ваше устройство шлёт постоянно данные и вам нужно только читать.
    Все что вам нужно, это создать подключение к порту и подписаться на событие обновления. При возникновении события вы получите массив данных с порта, этот массив вы сохраняете в буфер или разбираете на лету (как вам удобнее). Напишу для вас маленький пример:
    //  Наследуем наш клас от SerialPort для более красивого кода
    public class MySerialPort : SerialPort
    {
            private const int DataSize = 54;    //  я так и не понял, какой размер данных нужен. Укажите правильное число в байтах
            private readonly byte[] _bufer = new byte[DataSize];
            private int _stepIndex;
            private bool _startRead;
    
            public MySerialPort(string port)
                : base()
            {
                //  все папаметры вы должны указать в соответствии с вашим устройством
                //base.PortName = COM1;
                base.BaudRate = 115200;
                base.DataBits = 8;
                base.StopBits = StopBits.Two;
                base.Parity = Parity.None;
                base.ReadTimeout = 1000;
    
                //  тут подписываемся на событие прихода данных в порт
                //  для вашей задачи это должно подойт идеально
                base.DataReceived += SerialPort_DataReceived;
            }
    
            //  открываем порт передав туда имя
            public void Open(string portName)
            {
                if (base.IsOpen)
                {
                    base.Close();
                }
                base.PortName = portName;
                base.Open();
            }
    
            //  эта функция вызвется каждый раз, когда в порт чтото будет передано от вашего устройства
            void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                var port = (SerialPort)sender;
                try
                {
                    //  узнаем сколько байт пришло
                    int buferSize = port.BytesToRead;
                    for (int i = 0; i < buferSize; ++i)
                    {
                        //  читаем по одному байту
                        byte bt = (byte)port.ReadByte();
                        //  если встретили начало кадра (0xFF) - начинаем запись в _bufer
                        if (0xFF == bt)
                        {
                            _stepIndex = 0;
                            _startRead = true;
                            //  раскоментировать если надо сохранять этот байт
                            //_bufer[_stepIndex] = bt;
                            //++_stepIndex;
                        }
                        //  дописываем в буфер все остальное
                        if (_startRead)
                        {
                            _bufer[_stepIndex] = bt;
                            ++_stepIndex;
                        }
                        //  когда буфер наполнлся данными
                        if (_stepIndex == DataSize && _startRead)
                        {
                            //  по идее тут должны быть все ваши данные.
    
                            //  .. что то делаем ...
                            //  var item = _bufer[7];
    
                            _startRead = false;
                        }
                    }
                }
                catch {}
            }
    }

    использовать это нужно так:
    var port = new MySerialPort();
    port.Open("COM5");

    Это код прототипа, всего лишь техника работы которая может помочь вам.
    Ответ написан
    2 комментария
  • Android: PRO версия приложения. Как лучше сделать?

    @vitvov
    Товвр "Про версия" должен быть "не возобновляем", тоесть его тип должен быть "контролируется google". Почитайте про то, какие типы товаров есть.
    Чтоб обойтись без сервера, вы действительно можете просто при старте приложения запросить покупки, которые совершал пользователь, и в случае, если он купил про версию, и не отменил её, сохранить в Preferences нужную информацию.
    Ответ написан
    6 комментариев
  • Оправдан ли переезд в Санкт-Петербург в нынешних реалиях?

    @vitvov
    Ваше финансовое положение будет зависить от места где вы живёте. Переежжая в город, где больше денег, ваши возможности увеличиваются, так, как вы просто попадаете в другую среду. Сам переежжал уже дважды. Село - районный городок - Москва. При этом, переехал из другой страны. Самое главное, что у вас изменится - это психология. Ну и люди всегда перемещались на более выгодные территории, те кто не перемещался - продолжал жить так как раньше и не развивался. Задайте себе вопрос, кем вы хотите себя видеть через 10 лет, какая зп у вас будет, какая жена, какое окружение и где вы будете жить? Если перспективы вашего городка вас не устраивают, то переежжайте.
    Поговорите о повышении зп.
    Ответ написан
    Комментировать
  • Как увеличить скорость сборки android-приложения?

    @vitvov
    Вы можете ускорить сборку, если включите offline режим для gradle: Preferences... -> Compiler -> Gradle -> Offline mode.
    Ответ написан
    1 комментарий
  • Как реализовать мобильное приложение-клиент с сервером и базой данных?

    @vitvov
    Если вы пишете на java, то можете попробовать написать серверную часть так же на java, используя сервер TomCat от Oracle. В частности вам нужно будет изучить такую вещь, как сервлеты. Но если задача маленькая, то и php может подойти.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (8)