Вверх ↑
Этот топик читают: Гость
Ответов: 1267
Рейтинг: 47
#16: 2023-03-27 14:13:37 ЛС | профиль | цитата
Gunta, вы гений!) Благодарю! Да, через отрицательный шаг тоже отлично меняется направление и схема упрощается и лучше работает, тк заменил 2 счетчика целых, вот мой постковидный код)):

Add(Math,6865152,238,497)
{
OpType=33
link(onResult,3620403:doCompare,[])
}
Add(If_else,3620403,280,497)
{
Type=2
Op2=Integer(0)
link(onTrue,14246424:doCompare,[(324,503)(324,524)(268,524)(268,545)])
}
Add(If_else,14246424,280,539)
{
Type=1
Op2=Integer(10)
link(onTrue,9295344:doEvent1,[])
}
Add(Switch,4397705,490,497)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(onOn)
Point(onOff)
Point(doOn)
Point(State)
link(onSwitch,8869183:doEvent1,[])
}
Add(Hub,9295344,322,539)
{
link(onEvent2,8869183:doEvent2,[(438,552)(438,510)])
}
Add(CounterEx,1286796,350,483)
{
Min=1
Max=3000
Default=1
Point(onThroughMax)
Point(onThroughMin)
Point(doReset)
}
Add(CounterEx,14590244,350,532)
{
Min=1
Max=3000
Default=1
Point(onThroughMax)
Point(onThroughMin)
Point(doReset)
}
Add(Hub,8819902,315,574)
{
OutCount=4
link(onEvent1,3837172:doCompare,[(371,580)(371,517)])
link(onEvent2,1286796:doReset,[(339,587)(339,496)])
link(onEvent3,14590244:doReset,[(341,594)(341,545)])
}
Add(If_else,3837172,413,511)
{
Type=3
link(onTrue,4397705:doReset,[(467,517)(467,510)])
link(onFalse,9471157:doWork2,[(467,524)(467,517)])
link(Op1,5880437:Var3,[(419,499)(387,499)])
link(Op2,6502204:Var3,[(426,499)(403,499)(403,576)])
}
Add(GetDataEx,6502204,371,571)
{
Angle=3
link(Data,14590244:Count,[(356,576)])
}
Add(GetDataEx,5880437,378,522)
{
Angle=3
link(Data,1286796:Count,[(356,527)])
}
Add(Hub,8869183,539,497)
{
InCount=3
OutCount=3
}
Add(HubEx,9471157,476,511)
{
link(onEvent,4397705:doOn,[])
}


Заменил его одним таким теперь:

Add(MultiElementEx,14944517,700,1141)
{
}
BEGIN_SDK
Add(EditMultiEx,1536624,21,21)
{
WorkCount=#9:doCompare|
EventCount=#6:onTrue|
DataCount=#4:Data|5:Data1|
link(doCompare,16196495:doCompare,[(35,27)(35,76)])
}
Add(SampleDelta,11289676,133,49)
{
link(onCalcDelta,8867587:doWork1,[(181,55)])
link(Data,1536624:Data,[(139,35)(27,35)])
}
Add(SampleDelta,9897615,133,98)
{
link(onCalcDelta,8867587:doWork3,[(181,104)])
link(Data,1536624:Data1,[(139,60)(34,60)])
}
Add(Hub,16248483,98,70)
{
link(onEvent1,11289676:doCalcDelta,[(122,76)(122,55)])
}
Add(If_else,13178583,252,77)
{
Type=5
Op2=Integer(0)
link(onTrue,1536624:onTrue,[(292,83)(292,27)])
}
Add(HubEx,8867587,177,77)
{
link(onEvent,3462727:doOperation,[(189,83)(189,146)])
}
Add(If_else,16196495,49,70)
{
Op2=Integer(0)
link(onTrue,16248483:doEvent1,[])
}
Add(Math,3462727,196,140)
{
OpType=3
Op2=10
link(onResult,13178583:doCompare,[(240,146)(240,83)])
}
END_SDK

Делю там на 10 чтоб бешено не крутился)

--- Добавлено в 2023-03-27 14:39:09

Добавил инерцию - шаг уменьшается со временем. Добавить свою картинку.

Add(CounterEx,9911111,77,154)
{
Max=359
Point(onThroughMax)
Point(onThroughMin)
Point(doPrev)
Point(doStep)
Point(doMax)
Point(doDirect)
link(onNext,12465343:doRefresh,[])
}
Add(MainForm,12061819,203,28)
{
@Hint=#8:3.3.2023|
Width=500
Height=499
Color=16777215
Ctl3D=0
Caption="Img"
BorderStyle=0
DragForm=0
Point(Handle)
Point(onKeyDown)
link(onCreate,11240625:doColor,[])
link(onKeyDown,3448284:doCase,[(242,55)(242,20)(151,20)(151,48)])
}
Add(Timer,4020990,7,154)
{
Interval=33
Point(doInterval)
link(onTimer,9911111:doNext,[])
}
Add(WinTools,8023775,301,14)
{
Point(doTransparentColor)
link(Handle,9629725:Var2,[])
}
Add(SelectColor,11240625,259,42)
{
Color=16777215
link(onColor,8023775:doTransparentColor,[])
}
Add(MoveWindow,945688,336,189)
{
link(Handle,9629725:Var3,[(342,5)])
}
Add(GetDataEx,9629725,301,0)
{
Angle=3
link(Data,12061819:Handle,[(252,5)(252,70)(209,70)])
}
Add(Case,3448284,161,42)
{
Value=Integer(27)
link(onTrue,12061819:doClose,[])
}
Add(PaintBox,12465343,133,154)
{
Left=615
Top=245
Align=5
Color=16777215
ClearBeforeDraw=0
Point(onMouseDown)
Point(onMouseMove)
Point(MouseX)
link(onBeforeDraw,4757424:doDraw,[])
link(onMouseDown,945688:doMove,[(246,167)(246,195)])
link(onMouseMove,14944517:doCompare,[(177,174)(177,226)(128,226)(128,279)])
}
Add(Img_Bmp,4757424,252,154)
{
TransparentColor=16777215
Point(Transform)
link(Bitmap,12465343:Bitmap,[(258,143)(241,143)(241,198)(139,198)])
link(SourceBitmap,359550:Bitmap,[])
link(Transform,3452604:Transform,[(272,146)(300,146)])
}
Add(Img_UseRotate,3452604,294,98)
{
link(Angle,9911111:Count,[(307,89)(-6,89)(-6,207)(83,207)])
}
Add(SampleDelta,15574220,224,238)
{
}
Add(Bitmap,359550,259,105)
{
@Hint=#18:Вставить картинку!|
FillColor=16777215
AddHint(-141,10,114,13,@Hint)
}
Add(MultiElementEx,14944517,140,273)
{
link(onTrue,9911111:doStep,[(184,279)(184,227)(65,227)(65,174)])
link(Data,12465343:MouseX,[])
}
BEGIN_SDK
Add(EditMultiEx,1536624,21,21)
{
WorkCount=#9:doCompare|
EventCount=#6:onTrue|
DataCount=#4:Data|5:Data1|
Width=468
Height=298
link(doCompare,16196495:doCompare,[(35,27)(35,76)])
}
Add(SampleDelta,11289676,133,49)
{
link(onCalcDelta,8867587:doWork1,[(181,55)])
link(Data,1536624:Data,[(139,35)(27,35)])
}
Add(SampleDelta,9897615,133,98)
{
link(onCalcDelta,8867587:doWork3,[(181,104)])
link(Data,1536624:Data1,[(139,60)(34,60)])
}
Add(Hub,16248483,98,70)
{
OutCount=3
link(onEvent1,11289676:doCalcDelta,[(122,76)(122,55)])
link(onEvent3,4534483:doTimer,[(133,90)(133,167)])
}
Add(If_else,13178583,420,77)
{
Type=5
Op2=Integer(0)
link(onTrue,1536624:onTrue,[(470,83)(470,27)])
}
Add(HubEx,8867587,177,77)
{
link(onEvent,1741126:doWork2,[])
}
Add(If_else,16196495,49,70)
{
Op2=Integer(0)
link(onTrue,16248483:doEvent1,[])
}
Add(Math,3462727,217,161)
{
OpType=3
Op2=1.5
link(onResult,8299281:doCompare,[])
link(Op1,11906766:Value,[])
}
Add(Timer,4534483,154,161)
{
Enable=1
link(onTimer,3462727:doOperation,[])
}
Add(Memory,11906766,217,77)
{
link(onData,13178583:doCompare,[])
}
Add(HubEx,1741126,196,77)
{
link(onEvent,11906766:doValue,[])
}
Add(If_else,8299281,287,161)
{
Type=5
Op2=Integer(0)
link(onTrue,1741126:doWork3,[(331,167)(331,127)(200,127)])
link(onFalse,4534483:doStop,[(331,174)(331,162)(142,162)(142,174)])
}
END_SDK


Редактировалось 3 раз(а), последний 2023-03-27 14:40:33
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1267
Рейтинг: 47
#17: 2023-03-27 15:39:54 ЛС | профиль | цитата
Я понял в чем дело. Не только в моем дважды покусанном коронавирусом мозге)), просто я в прошлом электроникой увлекался, за что и полюбил еще Хиасм - что компоненты напоминали микросхемы) Так вот, хаб я до сих пор подсознательно воспринимаю как микросхему ДЕШИФРАТОРА К155ИД3 вроде так называлась моя любимая большая советская микросхемка. А в дешифраторе события будучи раз запущены логическим сигналом с его выходов - развиваются дальше параллельно с другими уже запущенными на других его выходах. Хаб же, без применения компонента для создания отдельного потока, как бы ждет пока не завершится работа компонентов на каждом его выходе. Все это есть в справке, просто забываешь и глядя на схему, возникает иллюзия параллелизма событий. На самом деле это конечно всегда последовательный список из строк кода.. Но если в одном из компонентов используются потоки, то очевидно что он сразу вернет управление хабу и будет действовать как дешифратор.

Редактировалось 1 раз(а), последний 2023-03-27 15:40:42
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
17
Сообщение
...
Прикрепленные файлы
(файлы не залиты)