Вверх ↑
Этот топик читают: Гость
Ответов: 1536
Рейтинг: 176
#16: 2014-10-15 11:53:54 ЛС | профиль | цитата
Gunnman, выкладывай схемы аккуратными, иначе это выглядит как неуважение к остальным. Я не изучал твою схему, а только лишь причесал. Будет время, помогу с примером.
Add(Edit,13065359,497,21)
{
Left=16
Top=18
Width=94
Text="07:00"
}
Add(DateConvertor,10362442,497,70)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(onResult,11809447:doValue,[])
link(Data,13065359:Text,[])
}
Add(Edit,13912355,595,21)
{
Left=150
Top=18
Width=94
Text="15:00"
}
Add(DateConvertor,4177431,595,70)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(onResult,6721867:doValue,[])
link(Data,13912355:Text,[])
}
Add(Edit,12267643,497,133)
{
Left=16
Top=56
Width=94
Text="16:00"
}
Add(DateConvertor,2606845,497,175)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(onResult,15917840:doValue,[])
link(Data,12267643:Text,[])
}
Add(Edit,10267384,602,133)
{
Left=150
Top=56
Width=94
Text="01:00"
}
Add(DateConvertor,16639133,602,175)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(onResult,13575888:doValue,[])
link(Data,10267384:Text,[])
}
Add(MathParse,6523429,567,441)
{
DataCount=5
MathStr="(((%5>%2)and(%5<%3))*1)+
(((%5>%4)and(%5<%1))*2)+
(((%5>=%1)and(%5<%2))*3)+
(((%5>=%3)and(%5<%4))*4)


"
link(onResult,11739803:doGetString,[])
link(X1,4310511:Var,[(573,409)(531,409)])
link(X2,175636:reCalc,[])
link(X3,4375672:reCalc,[(587,419)(636,419)])
link(X4,7359596:reCalc,[(594,428)(685,428)])
}
Add(Time,3131878,448,385)
{
Format="h:m"
}
Add(DateConvertor,4916889,448,441)
{
Mode=8
Format="HH:mm"
Point(Data)
link(onResult,6523429:doCalc,[])
link(Data,3131878:FormatTime,[])
}
Add(Hub,9343867,399,434)
{
link(onEvent1,10362442:doConvert,[(431,440)(431,76)])
link(onEvent2,4916889:doConvert,[])
}
Add(MMTimer,3375980,343,434)
{
link(onTimer,9343867:doEvent1,[])
}
Add(Label,12563328,763,406)
{
Left=16
Top=114
Width=94
}
Add(MathParse,6905888,567,294)
{
MathStr="%1>=%2"
Point(reCalc)
link(X1,12511681:Var2,[])
link(X2,14325511:Var,[])
}
Add(MathParse,175636,567,364)
{
MathStr="%1+%2"
Point(reCalc)
link(X1,7589830:Var,[])
link(X2,6905888:reCalc,[])
}
Add(MathParse,8386136,623,294)
{
MathStr="%1>=%2"
Point(reCalc)
link(X1,14699346:Var2,[])
link(X2,5164620:Var,[])
}
Add(MathParse,4375672,623,364)
{
MathStr="%1+%2"
Point(reCalc)
link(X1,12140722:Var,[])
link(X2,8386136:reCalc,[])
}
Add(MathParse,11120805,672,294)
{
MathStr="%1>=%2"
Point(reCalc)
link(X1,14699346:Var3,[(678,257)])
link(X2,3446033:Var,[])
}
Add(MathParse,7359596,672,364)
{
MathStr="%1+%2"
Point(reCalc)
link(X1,3275087:Var,[])
link(X2,11120805:reCalc,[])
}
Add(StrList,11739803,721,399)
{
Strings=#1:0|47:Смена 1 закончилась. Ожидается начало 2й смены.|47:Смена 2 закончилась. Ожидается начало 1й смены.|16:Текущая смена 1.|16:Текущая смена 2.|
Point(onGetString)
Point(doGetString)
link(onGetString,12563328:doText,[])
}
Add(GlobalVar,11809447,546,70)
{
Name="1"
link(onValue,4177431:doConvert,[])
}
Add(GlobalVar,6721867,644,70)
{
Name="2"
link(onValue,2606845:doConvert,[(690,76)(690,115)(485,115)(485,181)])
}
Add(GlobalVar,15917840,546,175)
{
Name="3"
link(onValue,16639133:doConvert,[])
}
Add(GlobalVar,13575888,651,175)
{
Name="4"
}
Add(GlobalVar,15949828,567,231)
{
Name="1"
}
Add(GlobalVar,5164620,630,266)
{
Name="3"
}
Add(GlobalVar,14325511,574,266)
{
Name="2"
}
Add(GlobalVar,3275087,672,336)
{
Name="4"
}
Add(GlobalVar,4310511,525,385)
{
Name="1"
}
Add(GlobalVar,7589830,567,336)
{
Name="2"
}
Add(GlobalVar,12140722,623,336)
{
Name="3"
}
Add(GlobalVar,3446033,679,266)
{
Name="4"
}
Add(GetDataEx,12511681,567,252)
{
link(Data,15949828:Var,[])
}
Add(GetDataEx,14699346,623,252)
{
Angle=3
link(Data,12511681:Var3,[])
}
Далее, не используй элемент глобальной переменной, как хранилище данных, для этого есть Memory. Или же в данном случае используй точку Result элемента DateConvertor. Я же использовал элемент глобальной переменной для удобства читабельности схемы, чтобы не создавать путаницы в связях, как у тебя.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 655
Рейтинг: 18
#17: 2014-10-15 18:56:16 ЛС | профиль | цитата
ser_davkin, понял..спасибо буду разбираться и учиться
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#18: 2014-10-15 19:41:28 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 18:38:53
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#19: 2014-10-15 19:47:50 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 18:38:55
карма: 0

0
Ответов: 655
Рейтинг: 18
#20: 2014-10-16 04:07:11 ЛС | профиль | цитата
За "причесывания" все спасибо, я уже принял к сведению и буду стараться схемы делать аккуратнее.

Схема которую я выложил вчера и которую причесали ser_davkin и 109.64.7.37, работает не совсем верно.

Например указываем первую смену с 07:10 по 15:00, вторую смену с 16:00 по 02:30.
Текущее время допустим 00:27, запускаем схему и видим что мы не попали во вторую смену.

А если указать первую смену 00:26 - 00:30, а вторую с 00:31 по 00:35 - то при запуске схема отработает правильно...первая смена, переход во вторую, вторая смена переход в первую смену.

Если обе смены в пределах 1 суток, то схема работает...если есть переход в другие сутки то не работает. Проверки как советовал Tad, я сделал.

Если начало первой смены>конца первой смены то к концу первой смены +1 сутки
Если начало первой смены>начала второй смены то к началу второй смены +1 сутки
Если начало первой смены>конца второй смены то к концу второй смены +1 сутки

Если текущее время>начала смены 1 и < конца смены1 - то сейчас первая смена
Если текущее время>начала смены2 и < конца смены2 - то сейчас вторая смена
Если текущее время>конца первой смены и < начала второй смены - то сейчас пересменка (ожидаем вторую смену)
Если текущее время>конца второй смены и <начала первой смены - то сейчас пересменка (ожидаем вторую смену).

Где я смотрю в книгу и фижу фигу? я хочу разобраться, но не получается.


карма: 0

0
Ответов: 8928
Рейтинг: 823
#21: 2014-10-16 13:52:49 ЛС | профиль | цитата
Gunnman, каков вопрос, таков и ответ!
Когда вы обозначаете "1-ая, 2-ая, ..... n-ая смена", да ещё с изменяемыми интервалами, необходимо давать определение, что такое 1-ая смена и как отличить её от остальных, например, такое: "1-ая смена та, которая первая начинается или продолжается от 00:00 часов".
Без такого определения вы ещё испишите десяток страниц форума без результата.
------------ Дoбавленo в 13.52:
А вот схемка по определению: "1-ая смена обозначена в верхних Edit-ах, в левой начало, в правой окончание смены"

Add(MainForm,2953706,154,126)
{
link(onCreate,7810450:doEvent1,[])
}
Add(Edit,13065359,266,182)
{
Left=16
Top=18
Width=94
Text="22:59"
link(onChange,5884055:doWork2,[])
}
Add(DateConvertor,10362442,322,182)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(Data,13065359:Text,[(328,173)(314,173)(314,222)(272,222)])
}
Add(Edit,13912355,364,182)
{
Left=150
Top=18
Width=94
Text="7:59"
link(onChange,13069093:doWork2,[])
}
Add(DateConvertor,4177431,420,182)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(Data,13912355:Text,[(426,173)(412,173)(412,222)(370,222)])
}
Add(Edit,12267643,462,182)
{
Left=16
Top=56
Width=94
Text="9:59"
link(onChange,11956528:doWork2,[])
}
Add(DateConvertor,2606845,518,182)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(Data,12267643:Text,[(524,173)(510,173)(510,222)(468,222)])
}
Add(Edit,10267384,560,182)
{
Left=150
Top=56
Width=94
Text="18:59"
link(onChange,8314299:doWork2,[])
}
Add(DateConvertor,16639133,616,182)
{
Mode=8
Format="HH:mm"
Point(Data)
Point(Result)
link(Data,10267384:Text,[(622,173)(608,173)(608,222)(566,222)])
}
Add(Time,3131878,217,182)
{
Format="h:m"
Point(DateTime)
}
Add(Label,12563328,434,266)
{
Left=16
Top=114
Width=94
}
Add(StrList,11739803,392,259)
{
Strings=#1:0|47:Смена 1 закончилась. Ожидается начало 2й смены.|47:Смена 2 закончилась. Ожидается начало 1й смены.|16:Текущая смена 1.|16:Текущая смена 2.|
Point(onGetString)
Point(doGetString)
link(onGetString,12563328:doText,[])
}
Add(Timer,8454916,175,259)
{
link(onTimer,5506918:doOperation,[])
}
Add(Math,5506918,224,259)
{
OpType=36
Op2=1
link(Op1,3131878:DateTime,[])
}
Add(MathParse,5265174,315,259)
{
DataCount=5
MathStr="(%2>%3)*((%1>%3)*(%1<%4)+(%1>%5)*(%1<%2)*2+((%1>%2)+(%1<%3))*3+(%1>%4)*(%1<%5)*4)+
(%3>%2)*(%5>%4)*(%4>%3)*((%1>%3)*(%1<%4)+((%1>%5)+(%1<%2))*2+(%1>%2)*(%1<%3)*3+(%1>%4)*(%1<%5)*4)+
(%3>%2)*(%5>%4)*(%2>%5)*(((%1>%3)+(%1<%4))+(%1>%5)*(%1<%2)*2+(%1>%2)*(%1<%3)*3+(%1>%4)*(%1<%5)*4)+
(%4>%5)*((%1>%3)*(%1<%4)+(%1>%5)*(%1<%2)*2+(%1>%2)*(%1<%3)*3+((%1>%4)+(%1<%5))*4)"
link(onResult,11739803:doGetString,[(365,265)(365,307)])
link(X2,10362442:Result,[])
link(X3,4177431:Result,[(335,230)(426,230)])
link(X4,2606845:Result,[(342,237)(524,237)])
link(X5,16639133:Result,[(349,243)(622,243)])
}
Add(Hub,7810450,196,140)
{
OutCount=4
link(onEvent1,8314299:doWork1,[(599,146)])
link(onEvent2,11956528:doWork1,[(501,153)])
link(onEvent3,13069093:doWork1,[(403,160)])
link(onEvent4,5884055:doWork1,[(305,167)])
}
Add(HubEx,5884055,301,182)
{
link(onEvent,10362442:doConvert,[])
}
Add(HubEx,13069093,399,182)
{
link(onEvent,4177431:doConvert,[])
}
Add(HubEx,11956528,497,182)
{
link(onEvent,2606845:doConvert,[])
}
Add(HubEx,8314299,595,182)
{
link(onEvent,16639133:doConvert,[])
}
Add(Button,7434786,98,343)
{
Left=35
Top=165
link(onClick,548576:doNext,[])
}
Add(Counter,548576,147,343)
{
Max=24
link(onNext,14776308:doEvent1,[])
}
Add(Hub,14776308,189,343)
{
link(onEvent1,7584835:doOperation,[])
link(onEvent2,2953706:doCaption,[(214,356)(214,335)(144,335)(144,132)])
}
Add(Math,7584835,224,343)
{
OpType=3
Op2=24
link(onResult,2231264:doWork3,[(270,349)])
}
Add(HubEx,2231264,266,259)
{
link(onEvent,5265174:doCalc,[])
}
Add(InfoTip,10499597,77,308)
{
Info=#22:Удалить после проверки|
Width=232
Height=81
}
карма: 19

1
Голосовали:Gunnman
Ответов: 1536
Рейтинг: 176
#22: 2014-10-16 14:06:32 ЛС | профиль | цитата
Gunnman, вот схема, где можно на лету, меняя время колёсиком мыши, проверять работу программы.
Add(MainForm,7764541,70,196)
{
Width=636
Height=273
link(onCreate,7556037:doEvent1,[])
}
Add(DateConvertor,10925915,301,161)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,8943334:doValue,[])
link(Data,1385911:Var2,[])
}
Add(Edit,9008527,301,105)
{
Left=110
Top=60
Width=205
Height=30
Font=[Consolas,14,0,0,0]
Text="2014-10-11 07:00:00"
Point(onMouseWheel)
Point(Position)
link(onMouseWheel,16039733:doWork1,[(356,125)(356,79)(207,79)(207,111)])
}
Add(Edit,3804103,637,105)
{
Left=110
Top=100
Width=205
Height=30
Font=[Consolas,14,0,0,0]
Text="2014-10-12 03:00:00"
Point(Position)
Point(onMouseWheel)
link(onMouseWheel,12305518:doWork1,[(687,125)(687,79)(533,79)(533,111)])
}
Add(Edit,3698074,469,105)
{
Left=340
Top=60
Width=205
Height=30
Font=[Consolas,14,0,0,0]
Text="2014-10-12 00:00:00"
Point(Position)
Point(onMouseWheel)
link(onMouseWheel,8511667:doWork1,[(522,125)(522,78)(374,78)(374,111)])
}
Add(Edit,7439302,805,105)
{
Left=340
Top=100
Width=205
Height=30
Font=[Consolas,14,0,0,0]
Text="2014-10-12 05:50:00"
Point(Position)
Point(onMouseWheel)
link(onMouseWheel,11733101:doWork1,[(854,125)(854,79)(702,79)(702,111)])
}
Add(MathParse,6523429,245,350)
{
DataCount=5
MathStr="(((%5>%2)and(%5<%3))*1)+
(((%5>%4)and(%5<(%1+86400)))*2)+
(((%5>=%1)and(%5<=%2))*3)+
(((%5>=%3)and(%5<=%4))*4)+
((%5>(%1+86400))*5)"
link(onResult,2618875:doCompare,[])
link(X1,7186291:Var,[])
link(X2,14928589:Var,[])
link(X3,11631333:Var,[])
link(X4,6098928:Var,[])
link(X5,8758393:Var1,[(279,341)])
}
Add(DateConvertor,13518142,469,161)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,1804631:doValue,[])
link(Data,12035375:Var2,[])
}
Add(DateConvertor,10362442,637,161)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,13720332:doValue,[])
link(Data,12374633:Var2,[])
}
Add(DateConvertor,12857620,805,161)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,9302451:doValue,[])
link(Data,8621251:Var2,[])
}
Add(Hub,10501248,203,252)
{
OutCount=3
link(onEvent1,10925915:doConvert,[(241,258)(241,167)])
link(onEvent2,14888266:doWork2,[])
link(onEvent3,6523429:doCalc,[(231,272)(231,356)])
}
Add(StrList,16646576,413,350)
{
Strings=#50:Текущее время меньше, чем установлено в графике!;0|51:"ПЕРЕСМЕНКА" - 1-ая смена сменяется 2-ой.;(%3-1)-%5|55:"ПЕРЕСМЕНКА" - 2-ая смена сменяется 1-ой.;(%1+86399)-%5|46:Период рабочего времени: 1-ая смена.;(%2-1)-%5|46:Период рабочего времени: 2-ая смена.;(%4-1)-%5|
Point(doGetString)
Point(onGetString)
link(onGetString,9179008:doSplit,[])
}
Add(Label,2657564,511,357)
{
Left=15
Top=145
Width=148
Height=28
Font=[Consolas,16,1,0,204]
Caption=" "
}
Add(DateConvertor,537955,567,504)
{
Mode=16
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,7538393:doEvent,[])
}
Add(If_else,2618875,308,350)
{
Type=1
Op2=Integer(5)
link(onTrue,16646576:doGetString,[(376,356)(376,398)])
link(onFalse,12735089:doCalc,[(355,363)(355,510)])
}
Add(Math,8451864,525,504)
{
PColor(Op2,16711850)
link(onResult,537955:doConvert,[])
link(Op1,1994995:Var,[(531,492)(512,492)(512,548)(475,548)])
link(Op2,12735089:Result,[(538,486)(411,486)(411,548)(370,548)])
}
Add(GetIndexData,1994995,469,504)
{
Count=4
link(onIndex,8451864:doOperation,[])
link(Data1,13413776:Var2,[])
link(Data2,3735568:Var,[])
link(Data3,7969276:Var,[])
link(Data4,7593320:Var,[])
}
Add(For,10633371,420,504)
{
End=3
link(onEvent,1994995:doIndex,[])
}
Add(IndexToChanel,7538393,616,504)
{
Count=4
Point(Index)
link(onEvent1,14239842:In,[])
link(onEvent2,16155886:In,[])
link(onEvent3,11006013:In,[])
link(onEvent4,10589484:In,[])
link(Index,10633371:Position,[(622,492)(607,492)(607,555)(426,555)])
}
Add(GetDataEx,8758393,364,336)
{
link(Data,14888266:Var1,[])
}
Add(HubEx,15266554,147,252)
{
link(onEvent,10501248:doEvent1,[])
}
Add(GlobalVar,8943334,350,161)
{
Name="1"
link(onValue,13518142:doConvert,[])
}
Add(GlobalVar,13720332,686,161)
{
Name="3"
link(onValue,12857620:doConvert,[])
}
Add(GlobalVar,1804631,518,161)
{
Name="2"
link(onValue,10362442:doConvert,[])
}
Add(GlobalVar,9302451,854,161)
{
Name="4"
}
Add(GlobalVar,6098928,266,322)
{
Name="4"
}
Add(GlobalVar,7593320,490,462)
{
Name="4"
}
Add(GlobalVar,3735568,476,434)
{
Name="2"
}
Add(GlobalVar,7969276,483,448)
{
Name="3"
}
Add(GlobalVar,14928589,252,294)
{
Name="2"
}
Add(GlobalVar,11631333,259,308)
{
Name="3"
}
Add(GlobalVar,7186291,245,280)
{
Name="1"
}
Add(GlobalVar,4948637,469,420)
{
Name="1"
}
Add(LineBreak,6151920,259,112)
{
Caption="1"
link(Out,9008527:doText2,[])
Primary=[14239842,406,392]
}
Add(LineBreak,12212267,427,112)
{
Caption="2"
link(Out,3698074:doText2,[])
Primary=[16155886,266,399]
}
Add(LineBreak,10921139,595,112)
{
Caption="3"
link(Out,3804103:doText2,[])
Primary=[11006013,70,406]
}
Add(LineBreak,15031121,763,112)
{
Caption="4"
link(Out,7439302:doText2,[])
Primary=[10589484,-70,413]
}
Add(Hub,1055105,567,364)
{
link(onEvent1,9427663:doMathStr,[])
link(onEvent2,9427663:doCalc,[(591,377)(591,363)])
}
Add(MathParse,9427663,602,357)
{
DataCount=5
MathStr=""
Point(doMathStr)
link(onResult,7685883:doConvert,[])
link(X1,2223920:Var,[])
link(X2,9789118:Var,[])
link(X3,7023187:Var,[])
link(X4,3050062:Var,[])
link(X5,8758393:Var3,[(636,341)])
}
Add(DateConvertor,7685883,658,357)
{
Mode=16
Format="Осталось времени: HH:mm:ss"
Point(Data)
link(onResult,8007688:doText,[])
}
Add(Label,8007688,707,357)
{
Left=15
Top=185
Width=148
Height=28
Font=[Consolas,16,1,0,204]
Caption=" "
}
Add(GlobalVar,3050062,623,315)
{
Name="4"
}
Add(GlobalVar,9789118,609,287)
{
Name="2"
}
Add(GlobalVar,7023187,616,301)
{
Name="3"
}
Add(GlobalVar,2223920,602,273)
{
Name="1"
}
Add(GetDataEx,13413776,469,469)
{
link(Data,4948637:Var,[])
}
Add(MathParse,12735089,364,504)
{
MathStr="trunc(%1-%2,86400)"
link(onResult,10633371:doFor,[])
link(X1,8758393:Var2,[])
link(X2,13413776:Var1,[(377,474)])
}
Add(GetDataEx,1385911,301,140)
{
link(Data,9008527:Text,[])
}
Add(MultiElement,16039733,217,105)
{
@Hint=#101:установи курсор в нужное место Edit-а и крути колёсиком мыши. И так везде. На год и месяц я не делал.|
link(onEvent1,9008527:doText,[])
link(Data1,9008527:Position,[(223,86)(348,86)(348,147)(314,147)])
link(Data2,1385911:Var1,[(230,92)(256,92)(256,145)])
AddHint(-49,-80,196,39,@Hint)
}
BEGIN_SDK
Add(EditMulti,13922277,21,21)
{
EventCount=1
WorkCount=1
DataCount=2
Width=265
Height=116
link(doWork1,13686583:doCalc,[(45,27)(45,76)])
}
Add(DateConvertor,15045434,224,70)
{
Mode=16
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,13922277:onEvent1,[(271,76)(271,27)])
}
Add(DateConvertor,10349720,119,70)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,14927298:doOperation,[])
link(Data,13922277:Data2,[(125,39)(34,39)])
}
Add(Math,14927298,175,70)
{
link(onResult,15045434:doConvert,[])
link(Op2,13686583:Result,[(188,58)(161,58)(161,117)(76,117)])
}
Add(MathParse,13686583,70,70)
{
MathStr="(((%1>=0)and(%1<=10)and(%2=120))*86400)+
(((%1>=0)and(%1<=10)and(%2=(-120)))*(-86400))+
(((%1>=11)and(%1<=13)and(%2=120))*3600)+
(((%1>=11)and(%1<=13)and(%2=(-120)))*(-3600))+
(((%1>=14)and(%1<=16)and(%2=120))*60)+
(((%1>=14)and(%1<=16)and(%2=(-120)))*(-60))+
(((%1>=17)and(%2=120))*1)+
(((%1>=17)and(%2=(-120)))*(-1))"
link(onResult,10349720:doConvert,[])
link(X1,13922277:Data1,[(76,46)(27,46)])
}
END_SDK
Add(MultiElement,8511667,385,105)
{
link(onEvent1,3698074:doText,[])
link(Data1,3698074:Position,[(391,88)(511,88)(511,149)(482,149)])
link(Data2,12035375:Var1,[(398,95)(424,95)(424,145)])
}
BEGIN_SDK
Add(EditMulti,870010,21,21)
{
EventCount=1
WorkCount=1
DataCount=2
Width=265
Height=116
link(doWork1,4639866:doCalc,[(45,27)(45,76)])
}
Add(DateConvertor,2282113,224,70)
{
Mode=16
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,870010:onEvent1,[(271,76)(271,27)])
}
Add(DateConvertor,14606230,119,70)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,8029635:doOperation,[])
link(Data,870010:Data2,[(125,39)(34,39)])
}
Add(Math,8029635,175,70)
{
link(onResult,2282113:doConvert,[])
link(Op2,4639866:Result,[(188,58)(161,58)(161,117)(76,117)])
}
Add(MathParse,4639866,70,70)
{
MathStr="(((%1>=0)and(%1<=10)and(%2=120))*86400)+
(((%1>=0)and(%1<=10)and(%2=(-120)))*(-86400))+
(((%1>=11)and(%1<=13)and(%2=120))*3600)+
(((%1>=11)and(%1<=13)and(%2=(-120)))*(-3600))+
(((%1>=14)and(%1<=16)and(%2=120))*60)+
(((%1>=14)and(%1<=16)and(%2=(-120)))*(-60))+
(((%1>=17)and(%2=120))*1)+
(((%1>=17)and(%2=(-120)))*(-1))"
link(onResult,14606230:doConvert,[])
link(X1,870010:Data1,[(76,46)(27,46)])
}
END_SDK
Add(GetDataEx,12035375,469,140)
{
link(Data,3698074:Text,[])
}
Add(MultiElement,12305518,546,105)
{
link(onEvent1,3804103:doText,[])
link(Data1,3804103:Position,[(552,88)(678,88)(678,149)(650,149)])
link(Data2,12374633:Var1,[(559,94)(588,94)(588,145)])
}
BEGIN_SDK
Add(EditMulti,11426157,21,21)
{
EventCount=1
WorkCount=1
DataCount=2
Width=265
Height=116
link(doWork1,9290303:doCalc,[(45,27)(45,76)])
}
Add(DateConvertor,6424478,224,70)
{
Mode=16
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,11426157:onEvent1,[(271,76)(271,27)])
}
Add(DateConvertor,2464007,119,70)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,12653655:doOperation,[])
link(Data,11426157:Data2,[(125,39)(34,39)])
}
Add(Math,12653655,175,70)
{
link(onResult,6424478:doConvert,[])
link(Op2,9290303:Result,[(188,58)(159,58)(159,116)(76,116)])
}
Add(MathParse,9290303,70,70)
{
MathStr="(((%1>=0)and(%1<=10)and(%2=120))*86400)+
(((%1>=0)and(%1<=10)and(%2=(-120)))*(-86400))+
(((%1>=11)and(%1<=13)and(%2=120))*3600)+
(((%1>=11)and(%1<=13)and(%2=(-120)))*(-3600))+
(((%1>=14)and(%1<=16)and(%2=120))*60)+
(((%1>=14)and(%1<=16)and(%2=(-120)))*(-60))+
(((%1>=17)and(%2=120))*1)+
(((%1>=17)and(%2=(-120)))*(-1))"
link(onResult,2464007:doConvert,[])
link(X1,11426157:Data1,[(76,46)(27,46)])
}
END_SDK
Add(GetDataEx,12374633,637,140)
{
link(Data,3804103:Text,[])
}
Add(MultiElement,11733101,714,105)
{
link(onEvent1,7439302:doText,[])
link(Data1,7439302:Position,[(720,90)(845,90)(845,149)(818,149)])
link(Data2,8621251:Var1,[(727,95)(755,95)(755,145)])
}
BEGIN_SDK
Add(EditMulti,1153820,21,21)
{
EventCount=1
WorkCount=1
DataCount=2
Width=265
Height=116
link(doWork1,10445681:doCalc,[(45,27)(45,76)])
}
Add(DateConvertor,7182956,224,70)
{
Mode=16
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,1153820:onEvent1,[(271,76)(271,27)])
}
Add(DateConvertor,4287213,119,70)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,7696693:doOperation,[])
link(Data,1153820:Data2,[(125,39)(34,39)])
}
Add(Math,7696693,175,70)
{
link(onResult,7182956:doConvert,[])
link(Op2,10445681:Result,[(188,58)(160,58)(160,116)(76,116)])
}
Add(MathParse,10445681,70,70)
{
MathStr="(((%1>=0)and(%1<=10)and(%2=120))*86400)+
(((%1>=0)and(%1<=10)and(%2=(-120)))*(-86400))+
(((%1>=11)and(%1<=13)and(%2=120))*3600)+
(((%1>=11)and(%1<=13)and(%2=(-120)))*(-3600))+
(((%1>=14)and(%1<=16)and(%2=120))*60)+
(((%1>=14)and(%1<=16)and(%2=(-120)))*(-60))+
(((%1>=17)and(%2=120))*1)+
(((%1>=17)and(%2=(-120)))*(-1))"
link(onResult,4287213:doConvert,[])
link(X1,1153820:Data1,[(76,46)(27,46)])
}
END_SDK
Add(GetDataEx,8621251,805,140)
{
link(Data,7439302:Text,[])
}
Add(Edit,1878423,427,252)
{
Left=230
Top=10
Width=185
Height=25
Font=[Consolas,12,0,0,0]
Text="2014-10-11 06:59:55"
Point(onMouseWheel)
Point(Position)
PColor(onMouseWheel,16755200)
link(onMouseWheel,14888266:doWork1,[(472,272)(472,228)(352,228)(352,258)])
}
Add(MultiElement,14888266,364,252)
{
link(onEvent1,1453289:doWork2,[])
link(Data1,1878423:Position,[(370,235)(477,235)(477,291)(440,291)])
link(Data2,1878423:Text,[(377,240)(407,240)(407,291)(433,291)])
}
BEGIN_SDK
Add(EditMulti,13857883,21,21)
{
EventCount=1
WorkCount=2
DataCount=2
VarCount=1
Width=363
Height=221
link(doWork1,8804284:doCalc,[(45,27)(45,125)])
link(doWork2,6260750:doConvert,[(37,34)(37,188)])
link(Var1,6260750:Result,[(27,228)(160,228)])
}
Add(DateConvertor,7892937,287,119)
{
Mode=16
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,13857883:onEvent1,[(327,125)(327,27)])
}
Add(DateConvertor,13506931,119,119)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
Point(Result)
link(onResult,7224409:doOperation,[])
link(Data,9537174:Var2,[])
}
Add(Math,7224409,210,119)
{
PColor(Op2,16755285)
link(onResult,12219036:doWork2,[])
link(Op2,8804284:Result,[(223,105)(185,105)(185,162)(76,162)])
}
Add(MathParse,8804284,70,119)
{
MathStr="(((%1>=0)and(%1<=10)and(%2=120))*86400)+
(((%1>=0)and(%1<=10)and(%2=(-120)))*(-86400))+
(((%1>=11)and(%1<=13)and(%2=120))*3600)+
(((%1>=11)and(%1<=13)and(%2=(-120)))*(-3600))+
(((%1>=14)and(%1<=16)and(%2=120))*60)+
(((%1>=14)and(%1<=16)and(%2=(-120)))*(-60))+
(((%1>=17)and(%2=120))*1)+
(((%1>=17)and(%2=(-120)))*(-1))"
link(onResult,13506931:doConvert,[])
link(X1,13857883:Data1,[(76,46)(27,46)])
}
Add(Math,5935448,210,182)
{
Op2=1
link(onResult,12219036:doWork3,[(263,188)])
}
Add(HubEx,12219036,259,119)
{
link(onEvent,7892937:doConvert,[])
}
Add(DateConvertor,6260750,154,182)
{
Mode=17
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
Point(Result)
link(onResult,5935448:doOperation,[])
link(Data,9537174:Var3,[(160,103)])
}
Add(GetDataEx,9537174,119,98)
{
link(Data,13857883:Data2,[(125,39)(34,39)])
}
END_SDK
Add(Label,9720067,70,98)
{
Left=325
Top=60
Width=10
Height=28
Font=[MS Sans Serif,14,0,0,1]
Caption="-"
}
Add(Label,1535483,77,105)
{
Left=325
Top=100
Width=10
Height=28
Font=[MS Sans Serif,14,0,0,1]
Caption="-"
}
Add(Label,3924639,84,112)
{
Left=10
Top=70
Width=97
Height=17
Font=[Consolas,9,0,0,0]
Caption="Первая смена:"
}
Add(Label,11076403,91,119)
{
Left=10
Top=110
Width=100
Height=17
Font=[Consolas,9,0,0,0]
Caption="Вторая смена:"
}
Add(Label,10361591,98,126)
{
Left=120
Top=15
Width=102
Height=19
Font=[Consolas,10,0,0,0]
Caption="Текущее время:"
}
Add(Time,436736,168,161)
{
Time_Date=1
Point(DateTime)
}
Add(DateConvertor,12261307,175,210)
{
Mode=9
Format="yyyy-MM-dd HH:mm:ss"
Point(Data)
link(onResult,1453289:doWork1,[(417,216)])
link(Data,436736:DateTime,[])
}
Add(Hub,7556037,119,210)
{
link(onEvent1,12261307:doConvert,[])
link(onEvent2,15266554:doWork1,[(151,223)])
}
Add(HubEx,1453289,413,252)
{
link(onEvent,1878423:doText,[])
}
Add(MultiStrData,9179008,462,357)
{
link(onPart1,2657564:doText,[])
link(onPart2,1055105:doEvent1,[])
}
Add(Timer,12507629,70,252)
{
link(onTimer,15266554:doWork2,[])
}
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#23: 2014-10-16 15:19:31 ЛС | профиль | цитата
Gunnman, т.к. ты ночью не спишь, то потести
Перезалил
routine.rar



карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1routine.rar [33.9KB] [156]
Ответов: 655
Рейтинг: 18
#24: 2014-10-16 17:22:48 ЛС | профиль | цитата
Леонид, ser_davkin, спасибо! По схеме ser_davkin, я понял что упустил) а вот с схемой Леонид, еще ознакамливаюсь (в плане формул).

п.с.Tad, протестирую, сегодня опять в ночь работать..
карма: 0

0
Ответов: 8928
Рейтинг: 823
#25: 2014-10-16 18:55:08 ЛС | профиль | цитата
Gunnman писал(а):
..схемой Леонид, еще ознакамливаюсь (в плане формул).
Как всегда советует мудрый Tad, алгоритм надо сначала нарисовать на бумажке. Вот я и нарисовал, правда не в цвете, простым карандашиком. А вот и в цвете для ясности:
smena.jpg
Осталось в MathParse отобразить
карма: 19

0
файлы: 1smena.jpg [33.5KB] [427]
Ответов: 16884
Рейтинг: 1239
#26: 2014-10-16 19:02:09 ЛС | профиль | цитата
В схеме routine.rar применён следующий алгоритм:
Шкала времен, заданная в Edit-ах, "сдвигается" на величину "Начала Первой смены".
Т.е. графически: Начало первой смены всегда 0 и всё расписание смен помещается в 24-часовой отрезок времени.
Данные Edit-ов сохраняютсясчитываются виз ini-файл(а).
Применен один IC. Всего 15 компонент.
Леонид, я тоже сначала думал на бумажке, а компьютер включил потом.
Но говорить об этом современным программистам - бесполезно.
Леонид писал(а):
Осталось в MathParse отобразить
От него отказался - добавляет 25 кб кода.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8928
Рейтинг: 823
#27: 2014-10-16 19:34:51 ЛС | профиль | цитата
Tad, вы мыслите в категориях Z80 (K580...), а на борту 1.5 Тб диска и 8 Гб ОЗУ при 3500 МГц Хотя стремление экономить и то, и то вызывает уважение
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#28: 2014-10-16 21:54:22 ЛС | профиль | цитата

Начинал с "Аскоты". Там инструменты программиста - мозги, бумага, карандаш, тиски, зубило, молоток, напильник, надфиль.
Потом чудо от СЭВ - с 32 кб памяти и диском на 10 мб.
С тех пор и привык экономить.
------------ Дoбавленo в 21.21:
Блин! Потестил и пришлось перезалить.
см. выше.
------------ Дoбавленo в 21.54:
может ещё что-то вылезет
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 655
Рейтинг: 18
#29: 2014-10-16 22:42:30 ЛС | профиль | цитата
Ок глянем)
карма: 0

0
Ответов: 1536
Рейтинг: 176
#30: 2014-10-17 09:39:09 ЛС | профиль | цитата
Gunnman писал(а):
Первая 2014-10-11 07:00:00 - 2014:10:12: 00:00:00
Вторая 2014:10:12 03:00:00 - 2014:10:12 05:50:00

Gunnman, а если тебе потребуется график с дежурством больше, чем 24 часа. Вопрос ты поставил правильно и понятно, но не понятно, почему тебе подошёл суточный алгоритм. Тогда нужно было рисовать ориентировку вопроса так:
Gunnman писал(а):
Первая 07:00:00 - 00:00:00
Вторая 03:00:00 - 05:50:00

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)