![]() |
|
|
![]()
|
|
| gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Возник следующий вопрос.
1) Имеется картинка в формате BMP 8bpp (размеры 8200x8300/70МБ) 2) Имеется COM порт, с которого надо читать поток данных, который туда передает приемник. 3) Имеется основная программа, которая должна выполнять п. 1 и 2 и отрисовывать заданный участок исходного BMP на канве. Все бы хорошо, но хотелось бы уточнить некоторые детали. 1) Как лучше организовать работу с COM портом и передачу полученных данных в обработчик? 2) Как лучше организовать вывод области BMP на канву? Если необходимо использовать потоки, то каким образом лучше разделить их? Свой поток для COM порта и отрисовки карты, либо раздельные? Заранее спасибо за помощь. |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Имхо, конечно, но мне почему-то кажется, что лучше такой большой рисунок разбить на кучу мелких, ибо одномоментно выводить 700мб картинки будет затруднительно и нерационально. А по мере необходимости - подгружать требуемый участок. Отдельный поток на это дело вроде как не требуется (хотя можно и обдумать в плане буферизации рисунков). -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
||||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Ну, 70 метров тоже не сильно увеличат производительность...
Не понял, какой пример? Заводишь у себя на форме собственное сообщение WM_USER+xxx и функцией SendMessage передаешь данные через это сообщение. Либо, если данных много - используешь сообщение WM_COPYDATA. Либо, если не хочешь юзать сообщения - через Synchronize\критические секции напрямую копируешь данные в основной поток. Вариантов много... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
В принципе, то что Вы сказали и требовалось Она один раз подгружается, потом из нее требуемые части 300*300 пикселей отображаются |
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
писал абсолютно похожую программу..
выглядела она примерно так: поток для приема данных, поток для отрисовки состояния, и поток основной программы (интерфейс пользователя) проблемы с которыми столкнулся: рассинхронизация потоков (абсолютно необъяснимые крэши, в случайный момент времени от 15 минут до 8 часов), здесь мне кажется действительно удобным взаимодействие с помощью системных сообщений.. отображение производил в потоке с частотой 100мс через двойной буфер с помощью системной API-функции BitBlt() никаких задержек или проблем с этим не наблюдал.. ps в windows для работы с ком-поротом (и не только) предусмотренна API-функция CreateFile(), результатом которой является handle устройства, дальше используются функции для работы с файлами, куда этот handle должен быть передан.. -------------------- undefined |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |