Roma писал(а):
Программа хорошая, но схема немного хромаетRavilr писал(а):
не сильно. почти сойдет!Ну, а если по честному, то схема демонстрирует отсутствие четкого алгоритма и полное незнание возможностей компонент.
![](/img/smilies/icon_redface.gif)
![](/img/icon_plus.gif)
Add(Time,12522007,602,196)
{
Point(Hours)
}
![](/img/icon_plus.gif)
Add(MultiElementEx,14630130,679,315)
{
}
BEGIN_SDK
Add(EditMultiEx,4121786,21,21)
{
WorkCount=#22:doCont=нет интернета 0|18:doEvent1=зеленый 1|18:doEvent11=желтый 2|19:doEvent12=Красный 3|
EventCount=#29:onEventData=Установить иконку|22:onEventData1=подсказка|16:onEvent1=уровень|
DataCount=#21:Data1=нет связи с ФТП|13:Data2=Зеленая|12:Data3=Желтая|13:Data4=Красная|
Width=444
Height=219
VOffset=28
HOffset=273
link(doCont,7350173:doEvent1,[])
link(doEvent1,3980152:doEvent1,[(70,62)(70,104)])
link(doEvent11,1023445:doEvent1,[(62,69)(62,160)])
link(doEvent12,11920410:doEvent1,[(53,76)(53,216)])
}
Add(GetIndexData,13190910,294,49)
{
Count=4
link(onIndex,8919199:doData,[])
link(Data1,4121786:Data1,[])
link(Data2,4121786:Data2,[])
link(Data3,4121786:Data3,[])
link(Data4,4121786:Data4,[])
}
Add(DoData,8919199,378,49)
{
Data=Integer(0)
link(onEventData,4121786:onEventData,[])
link(Data,13190910:Var,[(384,37)(342,37)(342,93)(300,93)])
}
Add(Hub,3980152,84,98)
{
link(onEvent1,1524061:doWork2,[(145,104)(145,62)])
link(onEvent2,10567316:doEvent1,[(192,111)(192,160)])
}
Add(Hub,1023445,84,154)
{
link(onEvent1,1524061:doWork3,[(154,160)(154,69)])
link(onEvent2,10567316:doEvent2,[])
}
Add(Hub,11920410,84,210)
{
link(onEvent1,1524061:doWork4,[(169,216)(169,76)])
link(onEvent2,10567316:doEvent3,[(181,223)(181,174)])
}
Add(StrCat,6895468,294,161)
{
Str1="Kp:"
link(onStrCat,1690547:doWork3,[(433,167)])
}
Add(Hub,7350173,84,49)
{
link(onEvent1,1524061:doWork1,[])
link(onEvent2,9023957:doData,[(137,62)(137,100)])
}
Add(DoData,9023957,378,94)
{
Data=String(Ошибка чтения)
link(onEventData,1690547:doWork2,[])
}
Add(HubEx,1690547,429,94)
{
Angle=3
link(onEvent,4121786:onEventData1,[(433,62)])
}
Add(Hub,10567316,217,154)
{
InCount=3
link(onEvent1,4121786:onEvent1,[(444,160)(444,69)])
link(onEvent2,6895468:doStrCat,[])
}
Add(ChanelToIndex,1524061,231,49)
{
Count=4
link(onIndex,13190910:doIndex,[])
}
END_SDK
Jek, если расскажешь,алгоритм работы мультика "Определение значения Кр", то оптимизируем и его. Уж очень он некрасивый (А если некрасивый - значит алгоритм нужно реализовать по другому.)
------------ Дoбавленo в 08.57:
4. А так "Таймер запуска программы"
Add(MultiElementEx,1960512,217,245)
{
}
BEGIN_SDK
Add(EditMultiEx,7990779,21,21)
{
WorkCount=#16:doCompare=запуск|0:|
EventCount=#15:onEvent2=запуск|17:onEventData=время|
DataCount=#12:Op1=интернет|
Width=853
Height=382
VOffset=133
HOffset=679
link(doCompare,4666305:doEvent1,[(45,160)(45,328)])
}
Add(InfoTip,4595260,46,151)
{
Info=#17:1200 000 - 20 мин|
Font=[Arial,8,0,0,1]
Frame=1
HAlign=0
Width=92
Height=18
}
Add(IndexToChanel,11161837,567,154)
{
Count=24
Point(Data)
link(onEvent1,5344632:doWork2,[])
link(onEvent4,14277531:doWork2,[])
link(onEvent7,16159223:doWork2,[])
link(onEvent10,6647322:doWork2,[])
link(onEvent13,14618810:doWork2,[])
link(onEvent16,3523270:doWork2,[])
link(onEvent19,4806938:doWork2,[])
link(onEvent22,6383658:doWork2,[])
link(Data,9846774:Value,[(573,142)(507,142)(507,198)(440,198)])
}
Add(Timer,7796715,63,112)
{
Interval=1200000
Point(doInterval)
Point(onStop)
link(onTimer,9042426:doWork2,[])
}
Add(HubEx,5344632,630,154)
{
link(onEvent,2446994:doEvent1,[])
}
Add(HubEx,4806938,630,280)
{
Angle=3
link(onEvent,3523270:doWork3,[])
}
Add(HubEx,3523270,630,259)
{
Angle=3
link(onEvent,14618810:doWork3,[])
}
Add(HubEx,14618810,630,238)
{
Angle=3
link(onEvent,6647322:doWork3,[])
}
Add(HubEx,6647322,630,217)
{
Angle=3
link(onEvent,16159223:doWork3,[])
}
Add(HubEx,16159223,630,196)
{
Angle=3
link(onEvent,14277531:doWork3,[])
}
Add(HubEx,14277531,630,175)
{
Angle=3
link(onEvent,5344632:doWork3,[])
}
Add(Time,11635575,238,63)
{
Point(DateTime)
Point(Hours)
}
Add(Hub,4666305,70,322)
{
InCount=2
link(onEvent1,9042426:doWork3,[(116,328)])
link(onEvent2,6383658:doWork3,[(634,335)])
}
Add(HubEx,6383658,630,301)
{
Angle=3
link(onEvent,4806938:doWork3,[])
}
Add(Hub,2446994,651,154)
{
link(onEvent1,7990779:onEvent2,[])
link(onEvent2,12935997:doCompare,[(683,167)(683,188)])
}
Add(HubEx,9042426,112,112)
{
link(onEvent,14454241:doRead,[])
}
Add(Registry,14454241,154,112)
{
HKey=2
Key="SYSTEMCurrentControlSetControlTimeZoneInformation"
Value="Bias"
DataType=0
link(onRead,780013:doOperation,[])
}
Add(Math,780013,203,112)
{
OpType=3
Op2=60
ResultType=0
link(onResult,326791:doOperation,[])
}
Add(If_else,9396944,301,112)
{
Type=1
Op1=Integer(0)
Op2=Integer(0)
link(onTrue,8329073:doOperation,[])
link(onFalse,2738253:doData,[(344,125)(344,160)])
}
Add(Math,8329073,371,112)
{
Op1=24
ResultType=0
link(onResult,6301579:doWork1,[(417,118)])
link(Op2,2549014:Var3,[(384,96)])
}
Add(Math,326791,252,112)
{
ResultType=0
link(onResult,9396944:doCompare,[])
link(Op1,11635575:Hours,[])
}
Add(DoData,2738253,357,154)
{
Data=Integer(0)
link(onEventData,6301579:doWork2,[])
link(Data,2549014:Var2,[])
}
Add(GetDataEx,2549014,357,91)
{
Angle=3
link(Data,326791:Result,[(291,96)(291,158)(258,158)])
}
Add(HubEx,6301579,413,154)
{
link(onEvent,9846774:doValue,[])
}
Add(Memory,9846774,434,154)
{
Default=Integer(0)
link(onData,11161837:doEvent,[])
}
Add(InfoTip,8846841,131,235)
{
Info=#60:Перезапуск каждые 20 мин. Опрос по Гринвичу каждые три часа:|19:0,3,6,9,12,15,18,21|26:по местному времени (СПб):|17:3,6,9,12,15,18,21|0:|
Font=[Arial,8,0,0,1]
Frame=1
HAlign=0
Width=365
Height=60
}
Add(InfoTip,10371902,138,46)
{
Info=#27:Вычисляем время по Гринвичу|
Font=[Arial,8,0,0,1]
VAlign=2
HAlign=0
Width=351
Height=144
}
Add(If_else,12935997,700,182)
{
Op2=Integer(1)
link(onTrue,14215598:doEvent1,[])
link(onFalse,16706285:doTimer,[(744,195)(744,209)])
link(Op1,7990779:Op1,[])
}
Add(Timer,16706285,798,203)
{
Interval=60000
Enable=1
Point(doInterval)
link(onTimer,4666305:doEvent2,[(861,209)(861,385)(29,385)(29,335)])
}
Add(Hub,14215598,749,182)
{
link(onEvent1,7990779:onEventData,[(819,188)(819,167)])
link(onEvent2,16706285:doStop,[(781,195)(781,216)])
}
Add(InfoTip,8016720,684,228)
{
Info=#24:Если ошибка чтения файла|27:перезапускаем каждую минуту|
Font=[Arial,8,0,0,1]
Frame=1
HAlign=0
Width=92
Height=60
}
END_SDK
Add(InfoTip,16164125,215,207)
{
Info=#24:Таймер запуска программы|
Font=[Arial,8,0,0,1]
HAlign=0
Height=88
}