Перейти к содержанию

Вопросы

Привет всем.
Сделал маленькую апликацию для Андроида. Апликация принимает данные
через BlueToothLE и на на двух TLabel показывает цифорки ...
Обём данных маленькии, одна посылка около 20 баитов.
Если данны приходит с интервалом 100 мс, то TLabel-а ешё успевают отобразить информацию,
а если интервал уменьшить, то приходит копец :(
Данные заливаются в буффер BlueTooth-а и TLabel-а неуспевают их показать, тоесть,
можем послать данные, скажем, пол минуты, потом даже отрубить BlueTooth посылаюшее их и
данные на TLabel-а ешё минуту мигают - отображаются ...

Поставил ешё Gauge от TMS Components - там тормоза вообше ужас, если 2 цифри за секунду
отобразить на циферблате, то ето уже предел ...

Шас немогу понять - телефон у меня тормознутыи какои то (CAT-S30, новыи, незагруженыи) или
всётаки FMX контролы работают так ужасно медленно ...

WBR
Janex

Отредактировал Janex72

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Делать так:

TThread.Synchronize(TThread.CurrentThread, procedure
begin
  Label1.Text:=Значение;
end);

А Label лучше заменить на TText

Отредактировал Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
31 минуту назад, Janex72 сказал:

а если интервал уменьшить, то приходит копец

Вы обладатель великолепнейшего зрения, реакции и т.п. если в состоянии распознать и проанализировать за 100мс содержимое экрана :)

На самом деле эта проблема аналогична "хочу, чтобы показывалось все 100500 записей" - пользователь физически не сможет оценить всё то, что вы ему отображаете + получается, что сильно нагружается система абсолютно ненужными действиями.

Логируйте значения, сохраняйте их в БД, проводите внутренние манипуляции в реальном времени.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
18 минут назад, kami сказал:

Вы обладатель великолепнейшего зрения, реакции и т.п. если в состоянии распознать и проанализировать за 100мс содержимое экрана :)

На самом деле эта проблема аналогична "хочу, чтобы показывалось все 100500 записей" - пользователь физически не сможет оценить всё то, что вы ему отображаете + получается, что сильно нагружается система абсолютно ненужными действиями.

Логируйте значения, сохраняйте их в БД, проводите внутренние манипуляции в реальном времени.

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

Да, вы правы, 10 раз в секунду менять значение излышно, но смушает скорость отображения ... Если мне на форме будет, на пример, 50 лабелов и каждыи меняет

текст раз в секунду, то каждому лабелу свои поток делать, что ли ? А то обновить за секунду 50 лабелов качется невозможно ...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, Janex72 сказал:

то каждому лабелу свои поток делать, что ли

нет. Вся работа с визуальными компонентами - только в основном потоке. Только. Если вы пытаетесь работать в доп.потоке, то как сказал @Rusland - нужно оборачивать в Synchronize. Или Queue. Обязательно. Любой из этих двух методов производит переключение в основной поток. и изменение текста+отображение будет идти именно в нем.

Надо учитывать, что эти два метода синхронизации с основным потоком дают накладные расходы по времени работы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

тут же все уже написано выше

все данные складывайте в переменные

и без всяких потоков. одним простым таймером выводите значения переменных на экран раз в 300-500 мсек

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...