Add(MainForm,14372191,357,119)
{
Left=21
Top=105
Width=1450
Height=871
Color=-16777194
Font=[Arial,8,0,0,1]
Ctl3D=0
Caption="тест SCD40"
BorderStyle=1
}
Add(Plotter,13668624,1295,77)
{
Left=140
Width=1000
Height=400
Name="1"
GridX=20
GridY=20
MaxH=1600
LeftMargin=40
TopMargin=30
Point(MinY)
Point(MaxY)
Point(doMinH)
Point(doMaxH)
Point(doEnabled)
Point(doMinW)
Point(doMaxW)
Point(MinX)
Point(MaxX)
}
Add(Button,3649645,1211,119)
{
Left=5
Top=740
Width=120
Height=35
Caption="Очистить график"
Data=Integer(0)
link(onClick,5720659:doEvent1,[])
}
Add(Hub,5720659,1260,119)
{
OutCount=3
link(onEvent1,13668624:doClear,[(1284,125)(1284,83)])
link(onEvent2,14196124:doClear,[(1284,132)(1284,139)])
link(onEvent3,16236745:doClear,[(1284,139)(1284,216)])
}
Add(Plotter,14196124,1295,133)
{
Left=140
Top=405
Width=1000
Height=210
Name="2"
GridX=5
MinH=1
MaxH=100
LeftMargin=40
TopMargin=30
Point(MinY)
Point(MaxY)
Point(doMinH)
Point(doMaxH)
Point(doEnabled)
Point(doMinW)
Point(doMaxW)
Point(MinX)
Point(MaxX)
}
Add(Plotter,16236745,1295,210)
{
Left=140
Top=625
Width=1000
Height=210
Name="3"
GridX=5
MinH=20
MaxH=40
LeftMargin=40
TopMargin=30
Point(MinY)
Point(MaxY)
Point(doMinH)
Point(doMaxH)
Point(doEnabled)
Point(doMinW)
Point(doMaxW)
Point(MinX)
Point(MaxX)
}
Add(CounterEx,6717573,567,364)
{
link(onNext,8481559:doEvent1,[(607,370)(607,286)])
}
Add(PlotPoints,16575108,973,350)
{
Grapher="2"
Color=0
Size=3
Step=1
Shape=2
Point(doColor)
link(ValueY,11133996:GetData,[])
}
Add(EventFromData,11133996,973,294)
{
}
Add(Hub,13794139,931,294)
{
link(onEvent1,11133996:doData,[])
link(onEvent2,16575108:doAdd,[(959,307)(959,356)])
}
Add(Timer,15344409,511,364)
{
Interval=5
link(onTimer,6717573:doNext,[])
}
Add(PlotPoints,15831482,1015,483)
{
Grapher="3"
Size=3
Step=1
Shape=2
Point(doColor)
link(ValueY,9797081:GetData,[])
}
Add(EventFromData,9797081,1015,427)
{
}
Add(Hub,2529222,973,427)
{
link(onEvent1,9797081:doData,[])
link(onEvent2,15831482:doAdd,[(1001,440)(1001,489)])
}
Add(PlotPoints,7507624,1015,210)
{
Grapher="1"
Color=0
Size=3
Step=1
Shape=2
Point(doColor)
link(ValueY,5746096:GetData,[])
}
Add(EventFromData,5746096,1015,154)
{
}
Add(Hub,3703532,973,154)
{
link(onEvent1,5746096:doData,[])
link(onEvent2,7507624:doAdd,[(1001,167)(1001,216)])
}
Add(Button,3350393,392,371)
{
Left=55
Top=325
Caption="выкл"
Data=Integer(1)
link(onClick,15344409:doStop,[])
}
Add(Memo,1824552,756,364)
{
Left=1145
Top=40
Width=310
Height=645
ScrollBars=2
link(onChange,10324091:doData,[(800,370)(800,412)(751,412)(751,454)])
}
Add(DoData,10324091,763,448)
{
Data=Integer(0)
link(onEventData,11676252:doText,[])
link(Data,1824552:Count,[])
}
Add(Edit,11676252,812,448)
{
Left=1195
Top=700
Width=110
}
Add(Button,9926212,396,340)
{
Left=50
Top=300
Caption="вкл"
Data=Integer(1)
link(onClick,15344409:doTimer,[(470,346)(470,370)])
}
Add(StrCat,13187429,658,322)
{
Str2=" тестовая с тестовая строкатрока"
link(onStrCat,1824552:doAdd,[(723,328)(723,370)])
link(Str1,5358733:GetData,[])
}
Add(EventFromData,5358733,658,280)
{
}
Add(Hub,8481559,616,280)
{
InCount=2
OutCount=3
link(onEvent1,5358733:doData,[])
link(onEvent2,13187429:doStrCat,[(644,293)(644,328)])
link(onEvent3,13794139:doEvent1,[])
}
Add(CounterEx,10884692,581,448)
{
link(onNext,8481559:doEvent2,[(615,454)(615,293)])
}
Add(Timer,1052605,525,448)
{
Interval=50
Enable=1
link(onTimer,10884692:doNext,[])
}
Add(Button,13428654,406,455)
{
Left=50
Top=390
Caption="выкл низ"
Data=Integer(1)
link(onClick,1052605:doStop,[])
}
Add(Button,4819930,410,424)
{
Left=50
Top=360
Caption="вкл низ"
Data=Integer(1)
link(onClick,1052605:doTimer,[(484,430)(484,454)])
}
Этот топик читают: Гость
Ответов: 39
Рейтинг: 0
|
|||
Здравствуйте. В приложении пример программы, если при данной скорости отправки данных (чем быстрее тем раньше) на графике наберется более 3000 точек то загрузка одного ядра процессора доходит до 100% и дальше вплоть до вылета программы. Если отправлять одновременно на 3 графика, то соответственно примерно после 1000 точек на каждом графике загрузка ядра 100%. Если какой способ вывода на график большого количества точек? немного помогает уменьшение частоты отправки данных, но ждать несколько часов не лучший вариант.
|
|||
карма: 0 |
|
Ответов: 805
Рейтинг: 174
|
|||
andrewproffi, Никогда не применяй EventFromData как Memory. Он предназначен не для этого.
Твоя схема тормозит от того, что ты пытаешься выводить всё в Memo и из-за использования таймеров с визуальными компонентами. 10 тысяч точек, 3 графика – задержка около секунды
|
|||
карма: 16 |
|
Ответов: 39
Рейтинг: 0
|
|||
А как тогда добавлять точку с координатами на график? формировать строку Х,У ? Почему это так критично?
я показал пример с таймером чтобы наглядно было видно рост нагрузки на процессор, мне сейчас важен именно этот момент. как правильно выводить поток данных на график чтобы уменьшить нагрузку на процессор. текстовые поля можно убрать, смысл от этого не изменится. |
|||
карма: 0 |
|
Ответов: 805
Рейтинг: 174
|
|||
andrewproffi писал(а): А как тогда добавлять точку с координатами на график? формировать строку Х,У ? Почему это так критично?
я показал пример с таймером чтобы наглядно было видно рост нагрузки на процессор, мне сейчас важен именно этот момент. как правильно выводить поток данных на график чтобы уменьшить нагрузку на процессор. текстовые поля можно убрать, смысл от этого не изменится. У меня нагрузка не более 4%
|
|||
карма: 16 |
|
Ответов: 8930
Рейтинг: 823
|
|||
andrewproffi, следить за графиком в реальном времени, да ещё при отображении более 2^14 точек это извращение
Проще собрать информацию и затем рассматривать в каком угодно разрешении.
|
|||
карма: 19 |
|
5