Помогите с mscomm и другими контролами...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
zhpaul
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.08.2005 (Вт) 19:37

Помогите с mscomm и другими контролами...

Сообщение zhpaul » 23.08.2005 (Вт) 19:46

Написал программку, которая дает запрос ус-ву через ком-порт и получает ответ (все это по таймеру) через MSComm
В gdi работает отлично, откомпилированная тоже, но только первое время. Затем начинает тормозить. Если посмотреть диспетчер задач - видно как прога начинает жрать больше памяти с каждой секундо и, ессно, все тормознее работать.
может что не так написал??? гляньте плиз...

этот вариант просто шлет по таймеру с интервалом 20, 1байт в ком-порт...
'----------------------------
Option Explicit

Private Sub Form_Load()
MSComm1.PortOpen = True
Timer1.Interval = 20
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
MSComm1.Output = "2"
End Sub
'-----------------------------

причем это происходит не только с mscomm, если например создать прогресс-бар (comctl32.ocx) и просто давать ему разные значения - происходит тоже самое...

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.08.2005 (Ср) 7:55

В gdi или в IDE?
Интервал 20мс слишком маленький. К тому же стандартный таймер не обеспечивает такую точность.
Попробуй задать 150-200 и посмотреть, как будет себя вести программа.
Lasciate ogni speranza, voi ch'entrate.

zhpaul
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.08.2005 (Вт) 19:37

Сообщение zhpaul » 24.08.2005 (Ср) 9:22

ide, конечно.... ошибся
пробовал и 200 и 500, то-же самое, используемая память постепенно увеличивается, но, ессно, медленнее, чем при интервале 20...
но все равно этот вариант не пройдет, т.к. прога должна работать постоянно.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 9:25

попробуй через определенное время сбрасыть переменные в nothing :roll:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

zhpaul
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.08.2005 (Вт) 19:37

Сообщение zhpaul » 25.08.2005 (Чт) 6:55

какие именно переменные??? не объявлена ни одна переменная и они не используются.. у меня такие мысли, что от этого не избавиться, видимо это особенность работы VB с контролами.. имхо

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Сообщение Александр Дмитриев » 28.08.2005 (Вс) 19:17

Скорее всего, у тебя что-то с неопубликованной здесь частью программы, я пробовал - нихрена память не растёт, если к ProgressBar'у постоянно обращаться, хоть с 20 интервалом, хоть с 500. Вообще какая-то ерунда - обращаешься периодически к контролу, и прога начинает больше памяти жрать.

zhpaul
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.08.2005 (Вт) 19:37

Сообщение zhpaul » 28.08.2005 (Вс) 23:10

так это как раз вся программа и есть.... больше в ней нет ничего, вообще... может у меня с виндами чего?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 75

    TopList