|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - генератор прямоугольных импульсов. таймер с фиксированой паузой и продолжительностьтю |
|
VBA - генератор прямоугольных импульсов. таймер с фиксированой паузой и продолжительностьтю
|
Новый участник Сообщения: 42 |
Профиль | Отправить 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 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Сделать два таймера, каждый работает по секунде
|
Отправлено: 20:38, 09-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать чтото не могу вкурить. немогли бы вы показать пример?
Также не могу правельно сделать таймер. когда он запускается программа виснет |
Отправлено: 20:49, 09-08-2012 | #3 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать В какой среде программируете?
|
Отправлено: 21:18, 09-08-2012 | #4 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Visual Basic 6
|
|
Отправлено: 21:20, 09-08-2012 | #5 |
Разный Сообщения: 1294
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:55, 09-08-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mirasoft:
|
|
Отправлено: 06:41, 10-08-2012 | #8 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Вот что я имею ввиду:
Есть два цикла, по сути два таймера, один таймер управляет другим. На прикрепленном рисунке все показано. в первом цикле зупускается второй цикл и отрабатывает нное количество итераций, сколько неизвестно так как частота его работы(тобишь время работы и паузы) меняется. Тоесть, стартанул первый цикл (допустим время паузы и работы 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 |
Последний раз редактировалось mirasoft, 10-08-2012 в 11:57. Отправлено: 11:08, 10-08-2012 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Генератор паролей 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 |
|