![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Санчес_ |
|
|||
Unregistered |
Всем привет.
У меня есть задача рисования осциллограммы сигнала. Данные для этого получаю с ком-порта, от микроконтроллерного устройства. Пока что для отладки передающая линия этого устройства соединена с приемной, а данные для передачи оно получает от компа (а если комп не успевает за время передачи одного байта прислать следующий, то оно передаст байт по умолчанию с кодом, например, 0x55). Т.е. пока что я шлю данные с компа, устройство их передает, принимает их же и возвращает в комп, а я рисую осциллограмму. Осциллограмму я рисую на канве PaintBox'a, а вся работа с ком-портом происходит во вспомогательном потоке. И при отрисовке осциллограммы видно, что на высоких скоростях передачи (300 - 1200 бод) попадаются последовательности символов по умолчанию вплоть до 10 байт подряд, т.е. комп не успевает отсылать данные устройству. Похоже, это именно тормоза с отрисовкой, т.к. если сделать отрисовку 1 раз на 64 байта, то такое видно только вначале (при старте потока?). Пока что рисую с помощью MoveTo, LineTo. Может, как-то ускорить отрисовку? Например, сделать картинки-графики последовательностей бит 00, 01, 10, 11, а дальше из них составлять большой график как из мозаики? А лучше расскажите, как бы вы решили эту задачу, когда надо каждые 6-7 миллисекунд (для 1200 бод) принимать байт с ком-порта, отсылать байт туда же и перерисовывать график побитового представления принятых байт (ну график можно отрисовывать пореже, не после каждого принятого байта). |
|||
|
||||
dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
Можно создать буфер между приемником и Паинт боксом. Самое простое.
-------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 2 Всего: 71 |
Попробуй с DirectX поразбираться, работает в сто раз быстрее
![]() А вобще не понимаю, для чего показывать осциллограмму в реальном времени на таких больших скоростях, практически не ощутимых для человеческого глаза? Может стоит сначала записивать сигнал в отдельном буфере, а потом просматривать его? |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |