Вверх ↑
Этот топик читают: Гость
Ответов: 27
Рейтинг: 0
#61: 2022-10-22 18:35:40 ЛС | профиль | цитата
Подскажите как регулировать количество знаков после запятой в значениях осей графика.
карма: 0

0
Ответов: 8888
Рейтинг: 823
#62: 2022-10-22 19:52:52 ЛС | профиль | цитата
andrewproffi, не регулируется
В коде есть строки ".x.:=round(.x.*100)/100;", где .х. число, строка оставляет ДВА знака после запятой, что определяется множителем 100. если положить 1000, будет 3 знака, 10 -- один знак и т. д.
карма: 19

0
Ответов: 27
Рейтинг: 0
#63: 2022-10-22 20:12:58 ЛС | профиль | цитата
Благодарю, мне не надо оперативно регулировать.
карма: 0

0
Ответов: 698
Рейтинг: 143
#64: 2022-10-22 21:56:58 ЛС | профиль | цитата
andrewproffi, Вот сделал пример на dll-ке ScottPlot - https://forum.hiasm.com/getfile/39559
Документация:
https://github.com/ScottPlot/ScottPlot
https://scottplot.net/cookbook/4.1/
Тип отображаемых данных и точность указывать в соответствии с этим - https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings

Редактировалось 2 раз(а), последний 2022-10-22 22:02:34
карма: 15

2
файлы: 1Plotter_dll_PS.zip [235.5KB] [278]
Голосовали:tig-rrr, Pavel
Ответов: 490
Рейтинг: 162
#65: 2022-10-22 22:46:53 ЛС | профиль | цитата
andrewproffi, тоже в одном проекте округление нужно было оси Y, а ещё вторая Y ось и по оси Х временная шкала.
Другого способа не придумал , как отрисовать шкалы самому.
Пример скриншота отрисованных осей из ... проекта
И часть вырезанный схемы из проекта как пример

Add(MainForm,662542,350,280)
{
Width=829
Height=668
}
Add(ChildPanel,6202571,476,266)
{
link(Data1,1061595:Value,[])
}
BEGIN_SDK
Add(EditMulti,8452163,21,21)
{
WorkCount=1
DataCount=1
Width=412
Height=284
VOffset=70
HOffset=140
link(doWork1,15846404:doEvent1,[])
}
Add(Panel,7655291,42,231)
{
Left=7
Top=32
Width=800
Height=590
Color=16777215
Point(Handle)
}
Add(Plotter,8230296,364,49)
{
Width=800
Height=590
Color=16777215
Name="plot"
MinH=-1
MaxH=70
LeftMargin=50
RightMargin=50
BottomMargin=30
MouseControl=1
Point(doMinH)
Point(doMaxH)
Point(MinX)
Point(MaxX)
Point(onMouseDown)
Point(onMouseUp)
Point(doMinW)
Point(doMaxW)
}
Add(ChildPanel,8334680,154,91)
{
@Hint=#13:Шкала время X|
link(Data1,3417767:Text,[])
link(Data2,4750631:Count,[(167,83)(209,83)])
AddHint(-30,50,93,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,4291821,21,21)
{
WorkCount=1
DataCount=2
Width=762
Height=501
VOffset=70
HOffset=70
link(doWork1,7199587:doEvent1,[(56,97)(56,181)])
}
Add(Panel,2118246,42,385)
{
Top=560
Width=860
Height=30
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(PaintBox,10039800,399,182)
{
Width=800
Height=30
Align=5
Color=16777215
Point(onMouseDown)
link(onBeforeDraw,9715670:doWork2,[])
link(onMouseDown,9715670:doWork3,[(438,195)])
}
Add(Img_Line,11688626,399,385)
{
Size=2
Point(Point1)
Point(Point2)
link(onDraw,101909:doOperation,[])
link(Bitmap,9296726:Var2,[])
link(Point1,11662347:Point,[])
link(Point2,13447052:Point,[])
}
Add(For,8914712,189,210)
{
Start=500
End=7500
Step=700
link(onEvent,13701620:doEvent1,[])
link(onStop,10019326:doDraw,[(243,223)(243,391)])
}
Add(PointXY,11662347,406,266)
{
Y=3
link(X,16433030:Var3,[(412,251)])
}
Add(PointXY,13447052,413,336)
{
Y=6
link(X,557971:Var2,[])
}
Add(LineBreak,1892439,28,203)
{
Caption="1"
link(Out,1308356:doCalc,[])
Primary=[3429213,427,-21]
}
Add(Math,9815017,322,210)
{
OpType=3
Op2=10.01
link(onResult,11688626:doDraw,[(376,216)(376,391)])
}
Add(Hub,7199587,350,175)
{
link(onEvent1,10039800:doClear,[(382,181)(382,195)])
link(onEvent2,10039800:doRefresh,[])
}
Add(Img_Text,3152125,553,385)
{
Y=7
Font=[Arial,9,0,0,204]
Text="00:00"
Point(X)
link(Bitmap,5597568:Var3,[(559,229)])
link(Text,5402292:Value,[])
link(X,101909:Result,[(573,373)(599,373)(599,433)(468,433)])
}
Add(GetDataEx,5597568,399,224)
{
link(Data,10039800:Bitmap,[])
}
Add(MathParse,1308356,91,203)
{
MathStr="( %2 - %1 ) / 10"
link(onResult,15685406:doEvent1,[])
link(X1,3849649:Var2,[])
link(X2,4291821:Data2,[])
}
Add(HubEx,9715670,434,182)
{
link(onEvent,3429213:In,[])
}
Add(Math,14977570,399,98)
{
Point(doDefault)
link(onResult,8971610:doEvent1,[(446,104)(446,139)])
link(Op1,14977570:Result,[(405,86)(388,86)(388,139)(405,139)])
link(Op2,1308356:Result,[(412,79)(73,79)(73,253)(97,253)])
}
Add(Hub,13701620,266,210)
{
link(onEvent1,9815017:doOperation,[])
link(onEvent2,14977570:doOperation,[(303,223)(303,104)])
}
Add(Memory,5402292,560,133)
{
Default=String( )
}
Add(DoData,11006955,189,133)
{
link(onEventData,15037146:doEvent1,[])
link(Data,3849649:Var3,[(195,117)])
}
Add(Hub,15685406,140,203)
{
link(onEvent1,11006955:doData,[(163,209)(163,139)])
link(onEvent2,8914712:doFor,[])
}
Add(GetDataEx,3849649,91,112)
{
link(Data,4291821:Data1,[])
}
Add(Hub,8971610,462,133)
{
InCount=2
OutCount=1
link(onEvent1,9595966:doConvert,[])
}
Add(Hub,15037146,350,133)
{
link(onEvent1,14977570:doDefault,[(378,139)(378,111)])
link(onEvent2,8971610:doEvent2,[])
}
Add(GetDataEx,16433030,322,246)
{
link(Data,9815017:Result,[])
}
Add(DateConvertor,9595966,497,133)
{
Mode=16
Format="HH:mm:ss"
link(onResult,5402292:doValue,[])
}
Add(Math,101909,462,385)
{
OpType=1
Op2=25
link(onResult,9710622:doData,[])
link(Op1,557971:Var3,[(468,314)])
}
Add(Img_Line,10019326,266,385)
{
Point(Point1)
Point(Point2)
link(Bitmap,9296726:Var1,[(272,362)])
link(Point1,12737631:Point,[])
link(Point2,16728682:Point,[])
}
Add(PointXY,12737631,273,259)
{
X=50
Y=3
}
Add(PointXY,16728682,280,315)
{
X=750
Y=3
}
Add(GetDataEx,9296726,399,357)
{
link(Data,5597568:Var2,[])
}
Add(GetDataEx,557971,413,309)
{
Angle=3
link(Data,16433030:Var2,[(328,314)])
}
Add(DoData,9710622,504,385)
{
link(onEventData,3152125:doDraw,[])
}
END_SDK
Add(Hub,15846404,56,91)
{
OutCount=4
link(onEvent1,8334680:doWork1,[])
link(onEvent2,7794351:doWork1,[(119,104)(119,181)])
link(onEvent3,8492962:doWork1,[(104,111)(104,244)])
link(onEvent4,4750631:doNext,[(85,118)(85,48)])
}
Add(ChildPanel,7794351,245,175)
{
@Hint=#8:Шкала RY|
link(Data1,7909334:Text,[])
link(Data2,4501370:Text,[(258,167)(293,167)])
link(Data3,8452163:Data1,[(265,36)(167,36)])
AddHint(53,11,66,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,8322098,21,21)
{
EventCount=1
WorkCount=1
DataCount=3
Width=846
Height=494
VOffset=70
HOffset=70
link(doWork1,16216591:doEvent1,[(65,97)(65,167)])
}
Add(Panel,9901053,49,385)
{
Left=750
Width=50
Height=565
Color=15780518
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(PaintBox,11812728,420,168)
{
Width=50
Height=565
Align=5
Color=16777215
Point(onMouseDown)
link(onBeforeDraw,10021834:doWork2,[])
link(onMouseDown,10021834:doWork3,[(459,181)])
}
Add(Img_Line,11644787,420,392)
{
Size=2
Point(Point1)
Point(Point2)
link(onDraw,793777:doOperation,[])
link(Bitmap,10581742:Var2,[])
link(Point1,469164:Point,[])
link(Point2,6768916:Point,[])
}
Add(For,204863,210,210)
{
Start=5600
End=90
Step=-545
link(onEvent,6446009:doEvent1,[])
link(onStop,4281616:doDraw,[(264,223)(264,398)])
}
Add(PointXY,469164,427,273)
{
X=3
link(Y,1892278:Var3,[(440,258)])
}
Add(PointXY,6768916,434,343)
{
X=6
link(Y,8227634:Var2,[])
}
Add(LineBreak,5680182,42,203)
{
Caption="1"
link(Out,12265773:doCalc,[])
Primary=[16707017,434,-35]
}
Add(Math,2300369,343,210)
{
OpType=3
Op2=10
link(onResult,11644787:doDraw,[(397,216)(397,398)])
}
Add(Hub,16216591,371,161)
{
link(onEvent1,11812728:doClear,[(403,167)(403,181)])
link(onEvent2,11812728:doRefresh,[])
}
Add(Img_Text,5564329,630,392)
{
X=12
Font=[Arial,9,0,255,204]
Text="00"
Point(Y)
link(Bitmap,8548766:Var3,[(636,236)])
link(Text,753780:Value,[])
link(Y,793777:Result,[(650,380)(679,380)(679,448)(489,448)])
}
Add(GetDataEx,8548766,420,231)
{
link(Data,11812728:Bitmap,[])
}
Add(MathParse,12265773,91,203)
{
MathStr="( %2 - %1 ) / 10"
link(onResult,15524132:doEvent1,[])
link(X1,15875221:Var2,[])
link(X2,8322098:Data2,[])
}
Add(HubEx,10021834,455,168)
{
link(onEvent,16707017:In,[])
}
Add(Hub,6446009,287,210)
{
link(onEvent1,2300369:doOperation,[])
link(onEvent2,11931450:doOperation,[(314,223)(314,76)])
}
Add(Hub,15524132,161,203)
{
link(onEvent1,2449569:doData,[(193,209)(193,111)])
link(onEvent2,204863:doFor,[])
}
Add(GetDataEx,1892278,343,253)
{
link(Data,2300369:Result,[])
}
Add(Math,793777,483,392)
{
OpType=1
Op2=8
link(onResult,10554152:doData,[])
}
Add(Img_Line,4281616,287,392)
{
Point(Point1)
Point(Point2)
link(Bitmap,10581742:Var1,[(293,369)])
link(Point1,1637837:Point,[])
link(Point2,2139122:Point,[])
}
Add(PointXY,1637837,294,266)
{
X=3
Y=14
}
Add(PointXY,2139122,301,322)
{
X=3
Y=560
}
Add(GetDataEx,10581742,420,364)
{
link(Data,8548766:Var2,[])
}
Add(GetDataEx,8227634,441,316)
{
Angle=3
link(Data,1892278:Var2,[(349,321)])
}
Add(DoData,10554152,525,392)
{
link(onEventData,5564329:doDraw,[])
}
Add(Math,11931450,476,70)
{
Point(doDefault)
link(onResult,5588566:doEvent1,[(523,76)(523,111)])
link(Op1,11931450:Result,[(482,58)(465,58)(465,111)(482,111)])
link(Op2,12265773:Result,[(489,44)(140,44)(140,255)(97,255)])
}
Add(Hub,5588566,539,105)
{
InCount=2
OutCount=1
link(onEvent1,5264981:doOperation,[])
}
Add(Hub,10382704,427,105)
{
link(onEvent1,11931450:doDefault,[(455,111)(455,83)])
link(onEvent2,5588566:doEvent2,[])
}
Add(Memory,753780,637,105)
{
}
Add(DoData,2449569,217,105)
{
link(onEventData,10382704:doEvent1,[])
link(Data,15875221:Var3,[(223,75)])
}
Add(GetDataEx,15875221,91,70)
{
link(Data,8322098:Data1,[])
}
Add(Math,5264981,581,105)
{
OpType=35
Op2=0.01
link(onResult,753780:doValue,[])
link(Op2,8322098:Data3,[(594,32)(111,32)])
}
END_SDK
Add(ChildPanel,8492962,140,238)
{
@Hint=#8:Шкала LY|
link(Data1,1538783:Text,[])
link(Data2,5812581:Text,[(153,222)(181,222)])
AddHint(57,10,64,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,2233548,21,21)
{
WorkCount=1
DataCount=2
Width=713
Height=480
VOffset=70
HOffset=70
link(doWork1,7018817:doEvent1,[(265,97)(265,167)])
}
Add(Panel,12272954,49,378)
{
Width=50
Height=565
Color=15780518
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(PaintBox,505042,420,168)
{
Width=50
Height=565
Align=5
Color=16777215
Point(onMouseDown)
link(onBeforeDraw,5562234:doWork2,[])
link(onMouseDown,5562234:doWork3,[(466,181)])
}
Add(Img_Line,6170130,420,385)
{
Size=2
Point(Point1)
Point(Point2)
link(onDraw,1120601:doOperation,[])
link(Bitmap,11993115:Var2,[])
link(Point1,2547486:Point,[])
link(Point2,8000438:Point,[])
}
Add(For,1490083,210,203)
{
Start=5600
End=90
Step=-545
link(onEvent,6534780:doEvent1,[])
link(onStop,12702408:doDraw,[(264,216)(264,391)])
}
Add(PointXY,2547486,427,266)
{
X=46
link(Y,16184967:Var3,[(440,251)])
}
Add(PointXY,8000438,434,336)
{
X=43
link(Y,16184967:Var2,[(447,314)(349,314)])
}
Add(LineBreak,8030261,49,196)
{
Caption="1"
link(Out,8559460:doCalc,[])
Primary=[4100906,434,-28]
}
Add(Math,505442,343,203)
{
OpType=3
Op2=10
link(onResult,6170130:doDraw,[(397,209)(397,391)])
}
Add(Hub,7018817,371,161)
{
link(onEvent1,505042:doClear,[(403,167)(403,181)])
link(onEvent2,505042:doRefresh,[])
}
Add(Img_Text,16094575,574,385)
{
X=15
Font=[Arial,9,0,16711680,204]
Text="00"
Point(Y)
link(Bitmap,7018362:Var3,[(580,215)])
link(Text,15141588:Value,[])
link(Y,1120601:Result,[(594,373)(634,373)(634,438)(489,438)])
}
Add(GetDataEx,7018362,420,210)
{
link(Data,505042:Bitmap,[])
}
Add(MathParse,8559460,91,196)
{
MathStr="( %2 - %1 ) / 10"
link(onResult,6538859:doEvent1,[])
link(X1,1487832:Var2,[])
link(X2,2233548:Data2,[])
}
Add(HubEx,5562234,462,168)
{
link(onEvent,4100906:In,[])
}
Add(Hub,6534780,287,203)
{
link(onEvent1,505442:doOperation,[])
link(onEvent2,6534797:doOperation,[(326,216)(326,97)])
}
Add(Hub,6538859,161,196)
{
link(onEvent1,5547060:doData,[(196,202)(196,132)])
link(onEvent2,1490083:doFor,[])
}
Add(GetDataEx,16184967,343,246)
{
link(Data,505442:Result,[])
}
Add(Math,1120601,483,385)
{
OpType=1
Op2=8
link(onResult,14330589:doData,[])
}
Add(Img_Line,12702408,287,385)
{
Point(Point1)
Point(Point2)
link(Bitmap,11993115:Var1,[(293,362)])
link(Point1,9632407:Point,[])
link(Point2,1113303:Point,[])
}
Add(PointXY,9632407,294,259)
{
X=46
Y=15
}
Add(PointXY,1113303,301,315)
{
X=46
Y=560
}
Add(GetDataEx,11993115,420,357)
{
link(Data,7018362:Var2,[])
}
Add(DoData,14330589,525,385)
{
link(onEventData,16094575:doDraw,[])
}
Add(Math,6534797,399,91)
{
Point(doDefault)
link(onResult,4444007:doEvent1,[(446,97)(446,132)])
link(Op1,6534797:Result,[(405,79)(388,79)(388,132)(405,132)])
link(Op2,8559460:Result,[(412,54)(142,54)(142,251)(97,251)])
}
Add(Hub,4444007,462,126)
{
InCount=2
OutCount=1
link(onEvent1,8154361:doOperation,[])
}
Add(Hub,7204542,350,126)
{
link(onEvent1,6534797:doDefault,[(378,132)(378,104)])
link(onEvent2,4444007:doEvent2,[])
}
Add(Memory,15141588,581,126)
{
}
Add(DoData,5547060,210,126)
{
link(onEventData,7204542:doEvent1,[])
link(Data,1487832:Var3,[(216,75)])
}
Add(GetDataEx,1487832,91,70)
{
link(Data,2233548:Data1,[])
}
Add(Math,8154361,518,126)
{
OpType=35
Op2=0.01
link(onResult,15141588:doValue,[])
AddHint(-10,-39,36,13,Op2)
}
END_SDK
Add(VisualStrings,7909334,245,126)
{
Lines=#1:1|
}
Add(VisualStrings,1538783,140,196)
{
Lines=#1:0|
}
Add(VisualStrings,5812581,175,196)
{
Lines=#1:9|
}
Add(VisualStrings,3417767,154,56)
{
Lines=#1:0|
}
Add(VisualStrings,4501370,287,126)
{
Lines=#6:33.333|
Width=67
}
Add(CounterEx,4750631,203,42)
{
Max=10000000
}
END_SDK
Add(ScrollBar,173203,357,203)
{
Left=705
Top=10
Hint="Кол. знаков после запятой"
Max=3
Page=1
link(onPosition,14846278:doGetString,[])
}
Add(StrList,14846278,420,175)
{
Strings=#1:1|3:0.1|4:0.01|5:0.001|
Point(doGetString)
Point(onGetString)
link(onGetString,1061595:doValue,[])
}
Add(Memory,1061595,476,182)
{
Default=Real(1)
}
Add(Timer,16071841,420,266)
{
Interval=100
link(onTimer,6202571:doWork1,[])
}


Gunta писал(а):
Вот сделал пример на dll-ке ScottPlot

Gunta, а как используя Ваш пример передать БОЛЬШОЙ(1000000) массив с данными для построения графика,?

Редактировалось 4 раз(а), последний 2022-10-23 13:14:26
карма: 4

0
Ответов: 698
Рейтинг: 143
#66: 2022-10-23 16:35:31 ЛС | профиль | цитата
tig-rrr писал(а):
как используя Ваш пример передать БОЛЬШОЙ(1000000) массив с данными для построения графика,?

Можешь привести небольшой пример данных по которому ты хочешь построить график?
Вот пример построения графика на случайных числах.

Add(MainForm,7714850,294,189)
{
Width=535
Height=417
Caption="Управление , комбинации клавиш"
Point(onClose)
link(onCreate,12356033:doString,[])
link(onClose,7014996:doConsoleTerminate,[])
}
Add(FormatStr,12356033,357,203)
{
DataCount=1
Mask="[Reflection.Assembly]::UnsafeLoadFrom('c:\Users\asdf\ownCloud\My HiAsm\scottplot\ScottPlot.dll') | Out-Null\r\n[Reflection.Assembly]::UnsafeLoadFrom('c:\Users\asdf\ownCloud\My HiAsm\scottplot\ScottPlot.WinForms.dll') | Out-Null\r\n\r\n$plt = [ScottPlot.Plot]::new(600, 400)\r\n \r\n$plt.PlotSignal((1..10000 | % {Get-Random -Minimum -10 -Maximum 10 }))\r\n# $plt.PlotSignal((1..1000000 | % {[math]::Sin($_) }))\r\n\r\n$plt.XLabel('Horizontal Axis')\r\n$plt.YLabel('Vertical Axis')\r\n\r\n[Void] $plt.SaveFig('.\quicktest.png')\r\n\r\n$piotviewer = [ScottPlot.FormsPlotViewer]::new($plt)\r\n$piotviewer.Text = '??????'\r\n$piotviewer.Height = 400\r\n$piotviewer.Width = 1200\r\n$piotviewer.Handle\r\n$piotviewer.ShowDialog()"
link(onFString,7014996:doConsoleExec,[])
link(Str1,10742432:Text,[])
}
Add(WinExec,7014996,420,189)
{
FileName="POWERSHELL"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(doConsoleTerminate)
Point(onConsoleTerminate)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,9194188:doNormal,[])
}
Add(WinTools,9194188,483,182)
{
Point(doNormal)
}
Add(Memo,13999287,147,182)
{
Width=519
Height=378
Align=5
Font=[MS Sans Serif,12,0,0,1]
Strings=#0:|20:Left-click-drag: pan|22:Right-click-drag: zoom|30:Middle-click-drag: zoom region|32:ALT+Left-click-drag: zoom region|28:Scroll wheel: zoom to cursor|0:|22:Right-click: show menu|23:Middle-click: auto-axis|28:Double-click: show benchmark|0:|40:CTRL+Left-click-drag to pan horizontally|39:SHIFT+Left-click-drag to pan vertically|42:CTRL+Right-click-drag to zoom horizontally|41:SHIFT+Right-click-drag to zoom vertically|42:CTRL+SHIFT+Right-click-drag to zoom evenly|51:SHIFT+click-drag draggables for fixed-size dragging|
ScrollBars=3
}
Add(VisualStrings,10742432,357,161)
{
@Hint=#27:Количество точек на графике|
Lines=#5:10000|
Width=95
AddHint(17,-73,166,13,@Hint)
}

Подставь 1000000 точек. Получается практически не читаемый график.
Dll-ки из предыдущего поста должны быть рядом со схемой.
карма: 15

0
Ответов: 490
Рейтинг: 162
#67: 2022-10-23 19:53:04 ЛС | профиль | цитата
Gunta писал(а):
Можешь привести небольшой пример данных по которому ты хочешь построить график?

Gunta, данные разные , зависит от колонки, 0...1000000, -65000...65000, INT,REAL, для примера и случайно сгенерёные вполне сойдут, тут главное понять принцип как из Хиасм массив передать (каким способом) ,а не сгенерить циклом внутри кода.
К примеру эти данные

Add(MainForm,2953706,98,105)
{
Width=510
Height=409
link(onCreate,7229501:doEvent1,[])
}
Add(For,6871536,259,119)
{
End=1000000
link(onEvent,15991546:doRandom,[])
link(onStop,9588492:doSave,[(303,132)(303,167)])
AddHint(-42,47,57,13,End)
}
Add(Random,15991546,315,119)
{
Max=8640
Point(doRandomWithoutRepeats)
link(onRandom,13321979:doOperation,[])
}
Add(Math,13321979,364,119)
{
OpType=3
Op2=1000
link(onResult,9588492:doAdd,[(412,125)(412,139)])
}
Add(TimeCounter,11116776,196,119)
{
link(onStart,6871536:doFor,[])
link(onStop,2953706:doCaption,[(240,132)(240,97)(85,97)(85,111)])
}
Add(Hub,7229501,154,119)
{
link(onEvent1,11116776:doStart,[])
link(onEvent2,11116776:doStop,[])
}
Add(StrList,9588492,427,133)
{
FileName="test.txt"
Point(doSave)
}


Редактировалось 1 раз(а), последний 2022-10-23 20:00:03
карма: 4

0
Ответов: 8888
Рейтинг: 823
#68: 2022-10-23 20:48:35 ЛС | профиль | цитата
tig-rrr писал(а):
как из Хиасм массив передать

Куда передать
карма: 19

0
Ответов: 490
Рейтинг: 162
#69: 2022-10-23 21:02:32 ЛС | профиль | цитата
Леонид писал(а):
Куда передать

Леонид,вопрос к этому примеру
Gunta писал(а):
Вот сделал пример на dll-ке ScottPlot - https://forum.hiasm.com/getfile/39559

карма: 4

0
Ответов: 698
Рейтинг: 143
#70: 2022-10-23 21:07:16 ЛС | профиль | цитата
tig-rrr писал(а):
главное понять принцип как из Хиасм массив передать (каким способом)


Передавать можно разными способами.
Сделал 2 примера.
Первый как текст (но не 1000000 точек)
Add(MainForm,7714850,140,189)
{
Width=535
Height=417
Caption="Управление , комбинации клавиш"
Point(onClose)
link(onCreate,6871536:doFor,[(179,209)(179,146)])
link(onClose,7014996:doConsoleTerminate,[])
}
Add(FormatStr,12356033,364,203)
{
DataCount=1
Mask="[Reflection.Assembly]::UnsafeLoadFrom('.\ScottPlot.dll') | Out-Null\r\n[Reflection.Assembly]::UnsafeLoadFrom('.\ScottPlot.WinForms.dll') | Out-Null\r\n\r\n$plt = [ScottPlot.Plot]::new(600, 400)\r\n$data = @'\r\n%1\r\n'@\r\n# $array = @() \r\n\r\n[double[]]$array = $data.split([Environment]::NewLine) -ne ''\r\n\r\n$plt.PlotSignal($array)\r\n\r\n$plt.XLabel('Название горизонтальной оси');\r\n$plt.YLabel('Название вертикальной оси');\r\n\r\n$piotviewer = [ScottPlot.FormsPlotViewer]::new($plt)\r\n$piotviewer.Text = 'График 1000000 точек'\r\n$piotviewer.Height = 400\r\n$piotviewer.Width = 1200\r\n$piotviewer.Handle\r\n$piotviewer.ShowDialog()"
link(onFString,7014996:doConsoleExec,[])
link(Str1,9588492:Text,[])
}
Add(WinExec,7014996,427,189)
{
FileName="POWERSHELL"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(doConsoleTerminate)
Point(onConsoleTerminate)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,9194188:doNormal,[])
link(onConsoleError,15431191:doCharset,[(480,223)(480,237)])
}
Add(WinTools,9194188,490,182)
{
Point(doNormal)
}
Add(Memo,13999287,553,231)
{
Width=519
Height=378
Align=5
Font=[MS Sans Serif,12,0,0,1]
Strings=#0:|20:Left-click-drag: pan|22:Right-click-drag: zoom|30:Middle-click-drag: zoom region|32:ALT+Left-click-drag: zoom region|28:Scroll wheel: zoom to cursor|0:|22:Right-click: show menu|23:Middle-click: auto-axis|28:Double-click: show benchmark|0:|40:CTRL+Left-click-drag to pan horizontally|39:SHIFT+Left-click-drag to pan vertically|42:CTRL+Right-click-drag to zoom horizontally|41:SHIFT+Right-click-drag to zoom vertically|42:CTRL+SHIFT+Right-click-drag to zoom evenly|51:SHIFT+click-drag draggables for fixed-size dragging|
ScrollBars=3
}
Add(For,6871536,196,140)
{
End=1000
link(onEvent,15991546:doRandom,[])
link(onStop,12356033:doString,[(242,153)(242,209)])
AddHint(50,-98,39,13,End)
}
Add(Random,15991546,252,140)
{
Max=8640
Point(doRandomWithoutRepeats)
link(onRandom,13321979:doOperation,[])
}
Add(StrList,9588492,364,140)
{
FileName="test.txt"
Point(doSave)
}
Add(Charset,15431191,490,231)
{
link(onCharset,13999287:doAdd,[])
}
Add(Math,13321979,301,140)
{
OpType=3
Op2=1000
link(onResult,9588492:doAdd,[])
}

Второй через промежуточный файл
Add(MainForm,1104467,259,105)
{
Width=510
Height=409
link(onCreate,7229501:doEvent1,[])
}
Add(For,6871536,420,119)
{
End=1000000
link(onEvent,15991546:doRandom,[])
link(onStop,568821:doEvent1,[(464,132)(464,167)])
AddHint(-42,47,57,13,End)
}
Add(Random,15991546,476,119)
{
Max=8640
Point(doRandomWithoutRepeats)
link(onRandom,13321979:doOperation,[])
}
Add(Math,13321979,525,119)
{
OpType=3
Op2=1000
link(onResult,9588492:doAdd,[(573,125)(573,139)])
}
Add(TimeCounter,11116776,357,119)
{
link(onStart,6871536:doFor,[])
link(onStop,1104467:doCaption,[(401,132)(401,97)(246,97)(246,111)])
}
Add(Hub,7229501,315,119)
{
link(onEvent1,11116776:doStart,[])
link(onEvent2,11116776:doStop,[])
}
Add(StrList,9588492,588,133)
{
FileName="test.txt"
Point(doSave)
}
Add(FormatStr,12356033,588,196)
{
DataCount=1
Mask="[Reflection.Assembly]::UnsafeLoadFrom('.\ScottPlot.dll') | Out-Null\r\n[Reflection.Assembly]::UnsafeLoadFrom('.\ScottPlot.WinForms.dll') | Out-Null\r\n\r\n$plt = [ScottPlot.Plot]::new(600, 400)\r\n\r\n[double[]]$array = Get-Content -Path '.\\test.txt'\r\n\r\n$plt.PlotSignal($array)\r\n\r\n$plt.XLabel('Название горизонтальной оси');\r\n$plt.YLabel('Название вертикальной оси');\r\n\r\n$piotviewer = [ScottPlot.FormsPlotViewer]::new($plt)\r\n$piotviewer.Text = 'График 1000000 точек'\r\n$piotviewer.Height = 400\r\n$piotviewer.Width = 1200\r\n$piotviewer.Handle\r\n$piotviewer.ShowDialog()\r\n"
link(onFString,7014996:doConsoleExec,[])
}
Add(WinExec,7014996,651,182)
{
FileName="POWERSHELL"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(doConsoleTerminate)
Point(onConsoleTerminate)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,9194188:doNormal,[])
link(onConsoleError,15431191:doCharset,[(704,216)(704,230)])
}
Add(WinTools,9194188,714,175)
{
Point(doNormal)
}
Add(Memo,13999287,777,224)
{
Width=519
Height=378
Align=5
Font=[MS Sans Serif,12,0,0,1]
Strings=#0:|20:Left-click-drag: pan|22:Right-click-drag: zoom|30:Middle-click-drag: zoom region|32:ALT+Left-click-drag: zoom region|28:Scroll wheel: zoom to cursor|0:|22:Right-click: show menu|23:Middle-click: auto-axis|28:Double-click: show benchmark|0:|40:CTRL+Left-click-drag to pan horizontally|39:SHIFT+Left-click-drag to pan vertically|42:CTRL+Right-click-drag to zoom horizontally|41:SHIFT+Right-click-drag to zoom vertically|42:CTRL+SHIFT+Right-click-drag to zoom evenly|51:SHIFT+click-drag draggables for fixed-size dragging|
ScrollBars=3
}
Add(Charset,15431191,714,224)
{
link(onCharset,13999287:doAdd,[])
}
Add(Hub,568821,518,161)
{
link(onEvent1,9588492:doSave,[])
link(onEvent2,12356033:doString,[(564,174)(564,202)])
}

!!! Файлы: ScottPlot.dll и ScottPlot.WinForms.dll должны лежать в одной папке с примерами.

Редактировалось 3 раз(а), последний 2022-10-23 21:11:58
карма: 15

1
Голосовали:tig-rrr
Ответов: 698
Рейтинг: 143
#71: 2022-11-13 18:16:08 ЛС | профиль | цитата
Попробовал отрисовать "live"- график на WebBrowser, получилось.
В архиве 2 схемы и DDL-ка – https://forum.hiasm.com/getfile/39561
В первой использован буфера обмена.
Во второй использованы два компонента от NetSpirit:
PipeServer - https://forum.hiasm.com/topic/66399
DataAccumulator - https://forum.hiasm.com/topic/65137
карма: 15

0
файлы: 1plots of live data.zip [224.2KB] [276]
Ответов: 698
Рейтинг: 143
#72: 2023-02-05 20:27:15 ЛС | профиль | цитата
faniss писал(а):
получается, из-за таблицы тормозило

В таком варианте задержка менее миллисекунды(у меня - 837 мк. сек.)
https://forum.hiasm.com/getfile/39576

Редактировалось 1 раз(а), последний 2023-02-06 05:03:16
карма: 15

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