| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Залипает кнопка запуска VBA скрипта |
| Автор: GrishinUS 19.1.2008, 20:33 | ||
| Здравствуйте. Пишу скрипт к SCADA системе ICONICS Genesis32. Что делает скрипт : следит за набором параметров и записывает их в БД MySQL (через ADODB). Пуск и остановка скрипта осуществляется нажатием кнопки вручную -- запускается цикл слежения за параметрами, обновление значений параметров происходят 1 раз в секунду. В качестве задержки служит процедура Sleep:
Теперь загвоздка. Когда нажимаешь кнопку "Начать слежение за параметрами" кнопка как бы залипает (остается нажатой) и программа не реагирует на нажатия вообще. Проиходит это до тех пор пока не переключишься на другое окно. Прикреплю 3 рисунка : 1) Не нажимали ничего 2) Нажали "Начать слежение за параметрами" (наблюдается залипание) 3) Переключились на другое окно и вернулись обратно (кнопка отлипла) |
| Автор: GrishinUS 19.1.2008, 20:37 |
| 2) Нажали "Начать слежение за параметрами" (наблюдается залипание) |
| Автор: GrishinUS 19.1.2008, 20:39 |
| 3) Переключились на другое окно и вернулись обратно (кнопка отлипла) |
| Автор: Akina 19.1.2008, 22:22 |
| Если бы теперь еще понять, где все это происходитЮ, какое отношение и в какой именно части это имеет к VB6 (раздел) и VBA (название)... |
| Автор: Dexx 19.1.2008, 23:07 |
| TRACE MODE Добавлено @ 23:08 Надо юзать! |
| Автор: GrishinUS 19.1.2008, 23:08 | ||||
при нажатии этой кнопки запускается VBA скрипт :
программа из которой происходит запуск ждет завершения выполнения скрипта. Сейчас ради интереса написал в Start только один оператор
кнопка отвисает через 10 секунд. Может его можно запускать как - нибудь вроде трэда? Добавлено через 1 минуту и 43 секунды Я извиняюсь, а что это? |
| Автор: Dexx 19.1.2008, 23:13 |
| Другая SCADA |
| Автор: GrishinUS 19.1.2008, 23:25 |
Мне думается заказчик неправильно поймет мои советы по выбору SCADA, тем более, что она давно куплена. |
| Автор: Dexx 19.1.2008, 23:32 |
| У ладно если скада выбрана. Мож на таймер повесить на проверку параметров? Добавлено @ 23:35 Мне кажется это логичней. Пусть вызывается раз в секунду и проверяет параметры! Выводит там куда нужно и тд. |
| Автор: Akina 20.1.2008, 00:31 | ||
Так что кнопка и залипает в ожидании следующего события... каковым собсно является получение приложением фокуса после твоих манипуляций. Используй другую функцию... или нет, не так - объясни, нахрена ты вообще сюда WaitMessage вставляешь? |
| Автор: Dexx 20.1.2008, 00:39 | ||
WaitMessage DoEvents Типа цитирую "обеспечивает параллельное выполнение других процессов" по замыслу автора |
| Автор: Dexx 20.1.2008, 01:12 |
| Таймер используй! При нажатии кнопки запускай. И например, при повторном нажатии останавливай. |
| Автор: GrishinUS 20.1.2008, 10:03 | ||||||
WaitMessage был вставлен после того как обнаружили загрузку проца 100%, с ней проц грузится так будто ничего не нажимали (0 - 1 % загрузка ЦП). Если убрать и DoEvents то программа вообще перестает реагировать на что - либо и показывает белый (повисший) экран.
Обеспечивает выполнение других процессов В ПРЕДЕЛАХ САМОЙ GENESIS32 -- отрисовку данных с датчиков там и т.д. Кстати функция SleepVB была взята вот отсюда : http://www.visual.2000.ru/develop/ms-vb/tips/0002-2.htm впоследствии я к ней добавил WaitMessage чтобы разгрузить ЦПУ (автору процедуры SleepVB отписал)
Можно поподробнее что за таймер? |
| Автор: Akina 21.1.2008, 09:55 | ||||||
Вместо WaitMessage разумнее было вставить задержку по таймеру (скакжем, настроенному на 100 мс). Есть такой контрол... суть его - превращение кода
в такой код:
|
| Автор: neProger 21.1.2008, 15:17 |
| следить за параметрами из VBA?!, пардон, тогда в чем смысл скады. Наверняка есть другой выход. Таймера в VBA, по-моему, напрочь отсутствуют |
| Автор: Dexx 21.1.2008, 17:09 |
| Win API |