Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - генератор прямоугольных импульсов. таймер с фиксированой паузой и продолжительностьтю

Ответить
Настройки темы
VBA - генератор прямоугольных импульсов. таймер с фиксированой паузой и продолжительностьтю

Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток форумчани. Пишу генератор импульсов.
Как зделать так чтобы в таймера было фиксированое время выполнения и паузы?

Нашел вот такой пример таймера.Код Visual Basic
Код: Выделить весь код
    Me.TimerInterval = 1000
End Sub
 
Sub Form_Timer()
    Static intShowPicture As Integer
    If intShowPicture Then
        ' Show icon.
        Me!btnPicture.Picture = "C:\Icons\Flash.ico"
    Else
        ' Don't show icon.
        Me!btnPicture.Picture = ""
    End If
    intShowPicture = Not intShowPicture
End Sub


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

Зарание благодарен

Отправлено: 19:53, 09-08-2012

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Сделать два таймера, каждый работает по секунде

Отправлено: 20:38, 09-08-2012 | #2



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

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


Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 20:49, 09-08-2012 | #3


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


В какой среде программируете?

Отправлено: 21:18, 09-08-2012 | #4


Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


Visual Basic 6

Отправлено: 21:20, 09-08-2012 | #5


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


VB6 нету, вот пример на VB.net

Код: Выделить весь код
Public Partial Class MainForm
	
	Private Dim i As Integer
	
	Public Sub New()
		Me.InitializeComponent()
		timer1.Start()
	End Sub
	
	Sub Timer1Tick(sender As Object, e As EventArgs)
		i=i+1
		textBox1.Text=i.ToString()
		timer1.Stop()
		timer2.Start()
	End Sub
	
	Sub Timer2Tick(sender As Object, e As EventArgs)
		i=i+1
		textBox2.Text=i.ToString()
		timer2.Stop()
		timer1.Start()
	End Sub
End Class

Отправлено: 21:44, 09-08-2012 | #6


Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg visual1.jpg
(80.3 Kb, 10 просмотров)

Вот этим
http://forum.oszone.net/attachment.p...1&d=1344534888

Отправлено: 21:55, 09-08-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата mirasoft:
и все что за это время неуспело выполнится прекращается??? »
Если под «все» понимается содержимое «_Timer()», напрямую — никак.

Отправлено: 06:41, 10-08-2012 | #8


Новый участник


Сообщения: 42
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg timer.JPG
(12.6 Kb, 5 просмотров)
Вложения
Тип файла: rar i.rar
(1.7 Kb, 2 просмотров)

Вот что я имею ввиду:
Есть два цикла, по сути два таймера, один таймер управляет другим.
На прикрепленном рисунке все показано.

в первом цикле зупускается второй цикл и отрабатывает нное количество итераций, сколько неизвестно так как частота его работы(тобишь время работы и паузы) меняется.

Тоесть, стартанул первый цикл (допустим время паузы и работы 1с, в общем получается 2с), на картинке это рисунок 1, t1=t2.

За время t1 работает второй цикл у которого тоже все строго фиксировано, указывается частота.

В результате должно получится то что на рисунке 3.

Второй цикл просто долбит комп порт устанавливая на какой то лапе "0" или "1" и держит паузы.

http://forum.oszone.net/attachment.p...1&d=1344582592


PS: мне скинули пример такой программы, я её немного пределал по свои нужды. Исходники в архиве.

Вот код.

Код: Выделить весь код
Dim I#, P# '
Dim H#, pe#, temp# '
Dim cI, cP, gr


Private Sub Command1_Click()
H = 1 ' Hz
pe = 500 ' period = 1Hz
temp = pe / H
If H > 999 And H < 9999 Then
temp = temp * 100
End If
If H > 9999 And H < 99999 Then
temp = temp * 10
End If

I = temp 'ms
P = temp 'ms

Text1.Text = P
Cl

If TimerP.Enabled = False Then
Cl
TimerP.Enabled = True
Command2.ZOrder 0
End If
End Sub
Sub Cl()
Picture1.Cls
cI = 0: cP = 0
gr = 20 * (I + P)
Picture1.Scale (0, 2)-(gr, -2)
TimerI.Interval = I
TimerP.Interval = P
Picture1.Line (0, 0)-(20 * (I + P), 0), &H808080
End Sub

Private Sub Command2_Click()
TimerP.Enabled = False
TimerI.Enabled = False
Command1.ZOrder 0
End Sub

Private Sub Form_Load()
'For I = 1 To 20
'Combo1.AddItem 50 * I
'Combo2.AddItem 50 * I
'Next I
'Combo1.ListIndex = 9
'Combo2.ListIndex = 9
TimerI.Enabled = False
TimerP.Enabled = False
Picture1.AutoRedraw = True
Command2.ZOrder 1
End Sub

Private Sub TimerI_Timer()
Shape1.Visible = False
TimerP.Enabled = True
TimerI.Enabled = False
If cP < gr Then
Picture1.Line (cI, 0)-(cI, 1), vbGreen
Picture1.Line (cI, 0)-(cI + P, 0), vbBlue
cI = cI + P
Else
Cl
End If
End Sub

Private Sub TimerP_Timer()
Shape1.Visible = True
TimerP.Enabled = False
TimerI.Enabled = True
If cI < gr Then
Picture1.Line (cI, 0)-(cI, 1), vbGreen
Picture1.Line (cI, 1)-(cI + I, 1), vbRed
cI = cI + I
Else
Cl
End If

End Sub
Обясните мне что тут означет переменная gr, дело в том что на частотах выше 19Khz осцилограмма не прорисовывается.

Последний раз редактировалось mirasoft, 10-08-2012 в 11:57.


Отправлено: 11:08, 10-08-2012 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - генератор прямоугольных импульсов. таймер с фиксированой паузой и продолжительностьтю

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Генератор паролей 1.0.0.0 OSZone Software Новости программного обеспечения 0 02-05-2012 13:30
CMD/BAT - генератор ключей lohi1234567 Скриптовые языки администрирования Windows 4 05-06-2011 13:28
Log/Monitoring - генератор пакетов Busla Сетевые технологии 2 25-04-2009 10:58
Алгоритм раскроя прямоугольных листов Serglink Программирование и базы данных 4 10-06-2004 11:06
генератор кода Trojn Мобильные ОС, смартфоны и планшеты 5 04-04-2004 04:06




 
Переход