purebasic.info

PureBasic forum
Текущее время: Ср ноя 21, 2018 10:00 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Рассчёт LC фильтра
СообщениеДобавлено: Чт май 24, 2007 5:34 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11325
Благодарил (а): 4 раз.
Поблагодарили: 441 раз.
В журнале "Радио" 2006 №6, была опубликована статья, в которой рекламировали прогу Borland C++ Builder Enterprise 6.0 . И там в качестве примера, была программа рассчитывающая параметры LC фильтра (был только исходник). Тогда я установил эту прогу, потом много раз жалел что зделал это. Мало того что установка заняла около получаса, удалить прогу я так и не смог, два часа удалялась, а индикатор показывал только 10% :( . Пришлось винду сносить! :( :(
Когда я начал изучать пурик, я этот исходник на C++ переделал.
Может кому и пригодится. :)

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
; Программа рассчёта сглажевающего LC фильтра (написана по материалам журнала "Радио" 2006, № 6, №7, стр.55-56
; Форум:         http://pbasic.spb.ru/phpBB2/index.php
; Автор:         Пётр
; OS:            Windows
; Компилятор     PureBasic 4.0
 
 
 
; Объявляем тип переменных.
a.f : b.f : p.f : f.d : m.d : io.d : uo.d : u1.d : u2.d
v.d : r.d : uo.d : io.d : q.d : lc.d : ff.d : l.d : c.d : s.d
 
; Открываем окно и создаём гаджеты.
  If OpenWindow(0, 90, 98, 406, 385, "Расcчёт сглажевающего LC фильтра",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_Invisible)
    If CreateGadgetList(WindowID(0))
      HideWindow(0,1)
      TextGadget(1, 15, 22, 237, 15, "Частота выпрамляемого напряжения,  Гц")
      TextGadget(2, 15, 52, 135, 15, " Число фаз выпрямителя")
      TextGadget(3, 15, 82, 172, 15, "Выпрямленное напряжение,  В")
      TextGadget(4, 16, 111, 93, 15, "Ток нагрузки,   А")
      TextGadget(5, 15, 142, 162, 15, "Размах пульсаций на входе,  В")
      TextGadget(6, 15, 173, 165, 14, "Размахпульсаций на выоде,  В")
      TextGadget(7, 15, 203, 157, 14, "Ёмкость конденсатора   мкф.")
      StringGadget(8, 273, 20, 120, 20, "")
      StringGadget(9, 273, 51, 120, 20, "")
      StringGadget(20, 273, 82, 120, 20, "")
      StringGadget(21, 273, 112, 120, 20, "")
      StringGadget(22, 273, 141, 120, 20, "")
      StringGadget(23, 273, 170, 120, 20, "")
      StringGadget(24, 273, 200, 120, 20, "")
      ButtonGadget(25, 135, 241, 118, 28, "Рассчитать")
      TextGadget(26, 12, 289, 490, 20, "Индуктивность дросселя,  мГн ")
      TextGadget(27, 12, 318, 390, 20, "Резонансная частота,  Гц  ")
      TextGadget(28, 12, 346, 390, 20, "Коэффициент сглаживания  ")
      HideWindow(0,0)
    EndIf
 
Repeat
 
A= WaitWindowEvent()
If A= #PB_Event_Gadget
e$="???" : SetGadgetText(26,"Индуктивность дросселя,  мГн                                    "+e$)
SetGadgetText(27,"Резонансная частота,  Гц                                             "+e$)
SetGadgetText(28,"Коэффициент сглаживания                                          "+e$)
d =EventGadget()
If d=25 ; Кнопка "Рассчитать" была нажата?
; Если да, тогда считываем информацию с гаджетов.
S1$ = GetGadgetText(8)
S2$ = GetGadgetText(9)
S3$ = GetGadgetText(20)  
S4$ = GetGadgetText(21)  
S5$ = GetGadgetText(22)  
S6$ = GetGadgetText(23)  
S7$ = GetGadgetText(24)  
 
f = ValD(S1$)
m = ValD(S2$)
io = ValD(S3$)
uo = ValD(S4$)
u1 = ValD(S5$)
u2 = ValD(S6$)
s = Val(S7$)
If f>0 And m>0 And io>0 And uo>0 And u1>0 And u2>0 And s>0
c=s/1000000
w=m*2*3.14159265*f
r=uo/io
q=u1/u2
lc=(q+1)/(w*w)
ff=1/(2*3.14159265*|!REG3XP3!>Sqr(lc))
l=lc/c
If l<(2*r/((q*q-1)*w))
MessageRequester("Предупреждение", "Нужно уменьшить ёмкость конденсатора!", #MB_ICONWARNING)
Else
a=l*1000
b=ff
p=q
SetGadgetText(26,"Индуктивность дросселя,  мГн                                    "+StrF(a.f,2) )
SetGadgetText(27,"Резонансная частота,  Гц                                             "+StrF(b.f,2) )
SetGadgetText(28,"Коэффициент сглаживания                                          "+StrF(p.f,2))
EndIf
Else
MessageRequester("Ошибка", "Заданны некорректные значения !", #MB_ICONERROR)
EndIf
EndIf
EndIf
If A=#PB_Event_CloseWindow
Quit=1
EndIf
Until  Quit=1
EndIf
End



Последний раз редактировалось Пётр Чт май 24, 2007 9:23 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 24, 2007 5:56 pm 
Не в сети
BackupUser
Аватар пользователя

Зарегистрирован: Ср ноя 29, 2006 9:29 pm
Сообщений: 1492
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Цитата:
Borland C++ Builder Enterprise 6.0

Это не прога, это целый мир.
Я ставил её, обалдел от её величия и потом снёс её вместе с Виндой.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 24, 2007 6:30 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6399
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
А у меня Мелкомягкий С++ 6.0( так иногда надо, в основном тоже для переделки исходников), и ещё вся Visual Studio .NET, пытался изучить VB.NET, но что то мутно, как в C++, да и что бы приложение работало нужно чтоб у клиента был установлен MS.NET Framework v1.1, а это штука весит ~22 Мб(!), в общем, для корпоративных программеров, конечно имеет смысл, кода работа ведётся в команде над одним проектом. А для собственных нужд лучше PureBasic пока я не вижу альтернативы. Ну не считая конечно, узкоспециального рограммирования к примеру для MS Office нужен VBA, а для инета PHP, и т.п. Ещё не плох FreeBasic, и если бы для него было бы столько же много исходников, информации и поддержки как у Пурика, то в силу его бесплатности можно и его изучить, но чего нет того нет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Рассчёт LC фильтра
СообщениеДобавлено: Чт май 24, 2007 8:19 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6399
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
Пётр писал(а):
Когда я начал изучать пурик, я этот исходник на C++ переделал.
Может кому и пригодится. :)


В PB прописная буква в переменной равна заглавной. У тебя есть переменная Q для выхода и q=u1/u2 - таким образом программа работает не корректно как только маленькая q=1 то программа завершает свою работу! Переименуй Q в Quit и всё станет нормально.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 24, 2007 9:55 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11325
Благодарил (а): 4 раз.
Поблагодарили: 441 раз.
Цитата:
Переименуй Q в Quit и всё станет нормально.
Заменил.
Только программа не глючила, видимо переменная при рассчётах не равнялась еденице. :)
Я эту программу делал когда только начинал осваивать Пурик, это была вторая моя программа. Написал её только ради тренировки, написал и забыл про неё. Сегодня, случайно её нашёл, немного подправил, и здесь выложил.
Интересно, сколько весила бы эта программка если она была написана, скажем на том же Borland C++ Builder или VB6? Слышал, что VB6 добавляет ешё ДЛЛку больше мегабайта. :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 24, 2007 10:30 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6399
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
Пётр писал(а):
Цитата:
Интересно, сколько весила бы эта программка если она была написана, скажем на том же Borland C++ Builder или VB6? Слышал, что VB6 добавляет ешё ДЛЛку больше мегабайта. :(


В С++ около 120 кб, если использовать оконную библиотеку, а если руками окошко создать, то и того меньше. А в VB6 около 20 кб, там все контролы(гаджеты в PB) стандартные. А библиотека действительно нужна, весит 1200 кб, но она есть в стандартной поставке всех современных ОС типа WIN, и думать о ней не надо. Гораздо хуже дело обстоит с Делфи - тут потянет кило на 400, в зависимости от версии. Это потому, что все библиотеки таскает с собой. Хотя тоже можно при помощи АПИ все окна создать, или вообще в консоли писать, но это уже на любителя.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 23, 2007 10:17 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11325
Благодарил (а): 4 раз.
Поблагодарили: 441 раз.
Цитата:
В PB прописная буква в переменной равна заглавной

А как же тогда
Цитата:
Синтаксис
Начнем изучение синтаксиса с переменных.
Переменные - это такие "ячейки" для хранения информации, они обозначаются буквой латинского алфавита или словом, которое может содержать буквы, цифры и символ _ , например:
a1 или A1 - это разные переменные ;
(учебник. Глава 5) :shock: :(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 24, 2007 1:13 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 933
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
Да это я попутал, исправлю :oops:


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB