Вверх ↑
Этот топик читают: Гость
Ответов: 85
Рейтинг: 0
#1: 2018-12-04 07:23:16 ЛС | профиль | цитата
Решил научиться работать с данным видом компонентов. Для меня это "учебный" проект.Задача с ком-порта каждые 15 мин будут прилетать значения температуры в помещении. Хочется, что бы строился месячный график температуры в помещении. Если есть примеры или ссылки подскажите. Хочется "поиграться". Попробовал сам разобраться, пока не получается, прошу "пинка" в нужном направлении...
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8886
Рейтинг: 823
#2: 2018-12-04 11:00:05 ЛС | профиль | цитата
RT9U, есть программка на датчики DS17720, если надо выложу комплект для работы с ними. На картинке чуть подогрел дотчик рукой
ТемператураDS18820.jpg
карма: 19

0
Ответов: 85
Рейтинг: 0
#3: 2018-12-05 04:42:55 ЛС | профиль | цитата
Леонид, у меня в наличии другие датчики DS1820. Написать программу для ардудинки для них не проблема. Мне пример в HIASM нужен, я просто не умею применять блоки графопостроителя. Может где есть ссылки на примеры, что бы я "поигрался"
карма: 0

0
Ответов: 85
Рейтинг: 0
#4: 2018-12-05 08:38:31 ЛС | профиль | цитата
Вот что у меня получилось.

Add(MainForm,2953706,21,105)
{
Width=635
Height=525
link(onCreate,7366341:doEvent1,[(111,125)(111,188)])
}
Add(If_else,14926331,539,308)
{
Type=5
Op2=String()
link(onTrue,16418445:doSearch,[])
}
Add(Image,1372838,504,101)
{
Left=20
Top=10
Width=150
Height=145
Color=-16777216
Ctl3D=0
WinStyle=4
}
Add(Button,13788814,210,108)
{
Left=90
Top=115
Width=60
Height=30
Font=[MS Sans Serif,8,1,0,1]
WinStyle=4
Caption="закрыт"
Point(doCaption)
link(onClick,3440661:doSwitch,[(258,114)(258,125)])
}
Add(ComboBox,15701961,462,199)
{
Left=90
Top=85
Width=60
Height=21
Color=-16777194
WinStyle=4
Strings=#3:300|3:600|4:1200|4:2400|4:4800|4:9600|5:14400|5:19200|5:28800|5:38400|5:57600|6:115200|
Text=""
Point(doSelect)
Point(doEnabled)
}
Add(ComboBox,12845684,413,171)
{
Left=90
Top=60
Width=40
Height=21
Color=-16777194
WinStyle=4
Text=""
DataType=1
Point(doSelect)
Point(doEnabled)
}
Add(Label,6975071,462,101)
{
Left=45
Top=65
Width=38
Height=17
Color=-16777216
WinStyle=4
Caption="Номер"
}
Add(Label,7375579,504,143)
{
Left=50
Top=35
Width=84
Height=20
Color=-16777216
Font=[MS Sans Serif,10,1,0,1]
WinStyle=4
Caption="СОМ-ПОРТ"
}
Add(Label,175544,462,143)
{
Left=30
Top=90
Width=52
Height=17
Color=-16777216
WinStyle=4
Caption="Скорость"
}
Add(LED,4919888,413,101)
{
Left=40
Top=115
Width=30
Height=30
Color=-16777216
WinStyle=4
Blick=1
ColorOn=32768
ColorOff=65280
Value=0
link(onChange,7757098:doEvent1,[(450,107)(450,175)(324,175)(324,237)])
}
Add(Hub,16033944,336,147)
{
link(onEvent1,4919888:doOff,[(374,153)(374,114)])
link(onEvent2,16655693:doOpen,[(392,160)(392,307)])
}
Add(Hub,4850852,336,126)
{
link(onEvent1,4919888:doOn,[(382,132)(382,121)])
link(onEvent2,16655693:doClose,[(399,139)(399,314)])
}
Add(Switch,3440661,273,119)
{
DataOn=String(открыт)
DataOff=String(закрыт)
Point(State)
Point(onOff)
Point(onOn)
link(onSwitch,13788814:doCaption,[(317,125)(318,126)(318,111)(204,111)(204,114)])
link(onOff,4850852:doEvent1,[])
link(onOn,16033944:doEvent1,[(324,139)(324,153)])
}
Add(COM,16655693,462,301)
{
link(onRead,14926331:doCompare,[])
link(Port,12845684:String,[(468,283)(426,283)])
link(BaudRate,15701961:String,[])
}
Add(DoData,695163,273,252)
{
Data=Integer(7)
link(onEventData,15701961:doSelect,[(383,258)(383,247)])
}
Add(EnumCOM,1016600,273,182)
{
OutType=0
link(onEnumPorts,12845684:doAdd,[(359,188)(359,177)])
}
Add(Hub,7366341,168,182)
{
OutCount=3
link(onEvent1,1016600:doEnumPorts,[])
link(onEvent2,695163:doData,[(248,195)(248,258)])
link(onEvent3,4404277:doTimer,[(210,202)(210,314)])
}
Add(Hub,7757098,336,231)
{
link(onEvent1,12845684:doEnabled,[(382,237)(382,226)])
link(onEvent2,15701961:doEnabled,[(361,244)(361,254)])
}
Add(Timer,4404277,238,308)
{
Interval=200
link(onTimer,13091773:doData,[])
}
Add(DoData,13091773,294,308)
{
Data=Integer(48)
link(onEventData,16655693:doRead,[(394,314)(394,335)])
}
Add(BlockFind,16418445,651,308)
{
IncludeBlock=1
StartBlock="T="
EndBlock="C"
link(onSearch,9453662:doEvent1,[])
}
Add(Label,6604675,504,189)
{
Left=250
Top=15
Width=212
Height=41
Font=[MS Sans Serif,24,0,0,1]
Caption="Температура "
}
Add(PlotLines,11145754,826,364)
{
Grapher="температура в КИПе КТСМ"
Size=5
Step=1
Name="A1"
link(ValueY,12123648:GetData,[])
}
Add(Hub,9453662,735,308)
{
OutCount=3
link(onEvent1,6991285:doText,[(773,314)(773,272)])
link(onEvent2,12123648:doData,[])
link(onEvent3,11145754:doAdd,[(787,328)(787,370)])
}
Add(Plotter,6761042,826,217)
{
Left=20
Top=195
Width=600
Height=290
Name="температура в КИПе КТСМ"
MaxH=40
}
Add(Edit,6991285,826,266)
{
Left=300
Top=75
Width=105
Height=40
Font=[MS Sans Serif,24,1,0,1]
Text=""
}
Add(EventFromData,12123648,826,315)
{
}

Как по оси Х сделать, что бы график начинался с нуля, а не с первого значения

--- Добавлено в 2018-12-05 08:39:28

смотреть тут сории

Add(MainForm,2953706,21,105)
{
Width=635
Height=525
link(onCreate,7366341:doEvent1,[(111,125)(111,188)])
}
Add(If_else,14926331,539,308)
{
Type=5
Op2=String()
link(onTrue,16418445:doSearch,[])
}
Add(Image,1372838,504,101)
{
Left=20
Top=10
Width=150
Height=145
Color=-16777216
Ctl3D=0
WinStyle=4
}
Add(Button,13788814,210,108)
{
Left=90
Top=115
Width=60
Height=30
Font=[MS Sans Serif,8,1,0,1]
WinStyle=4
Caption="закрыт"
Point(doCaption)
link(onClick,3440661:doSwitch,[(258,114)(258,125)])
}
Add(ComboBox,15701961,462,199)
{
Left=90
Top=85
Width=60
Height=21
Color=-16777194
WinStyle=4
Strings=#3:300|3:600|4:1200|4:2400|4:4800|4:9600|5:14400|5:19200|5:28800|5:38400|5:57600|6:115200|
Text=""
Point(doSelect)
Point(doEnabled)
}
Add(ComboBox,12845684,413,171)
{
Left=90
Top=60
Width=40
Height=21
Color=-16777194
WinStyle=4
Text=""
DataType=1
Point(doSelect)
Point(doEnabled)
}
Add(Label,6975071,462,101)
{
Left=45
Top=65
Width=38
Height=17
Color=-16777216
WinStyle=4
Caption="Номер"
}
Add(Label,7375579,504,143)
{
Left=50
Top=35
Width=84
Height=20
Color=-16777216
Font=[MS Sans Serif,10,1,0,1]
WinStyle=4
Caption="СОМ-ПОРТ"
}
Add(Label,175544,462,143)
{
Left=30
Top=90
Width=52
Height=17
Color=-16777216
WinStyle=4
Caption="Скорость"
}
Add(LED,4919888,413,101)
{
Left=40
Top=115
Width=30
Height=30
Color=-16777216
WinStyle=4
Blick=1
ColorOn=32768
ColorOff=65280
Value=0
link(onChange,7757098:doEvent1,[(450,107)(450,175)(324,175)(324,237)])
}
Add(Hub,16033944,336,147)
{
link(onEvent1,4919888:doOff,[(374,153)(374,114)])
link(onEvent2,16655693:doOpen,[(392,160)(392,307)])
}
Add(Hub,4850852,336,126)
{
link(onEvent1,4919888:doOn,[(382,132)(382,121)])
link(onEvent2,16655693:doClose,[(399,139)(399,314)])
}
Add(Switch,3440661,273,119)
{
DataOn=String(открыт)
DataOff=String(закрыт)
Point(State)
Point(onOff)
Point(onOn)
link(onSwitch,13788814:doCaption,[(317,125)(318,126)(318,111)(204,111)(204,114)])
link(onOff,4850852:doEvent1,[])
link(onOn,16033944:doEvent1,[(324,139)(324,153)])
}
Add(COM,16655693,462,301)
{
link(onRead,14926331:doCompare,[])
link(Port,12845684:String,[(468,283)(426,283)])
link(BaudRate,15701961:String,[])
}
Add(DoData,695163,273,252)
{
Data=Integer(7)
link(onEventData,15701961:doSelect,[(383,258)(383,247)])
}
Add(EnumCOM,1016600,273,182)
{
OutType=0
link(onEnumPorts,12845684:doAdd,[(359,188)(359,177)])
}
Add(Hub,7366341,168,182)
{
OutCount=3
link(onEvent1,1016600:doEnumPorts,[])
link(onEvent2,695163:doData,[(248,195)(248,258)])
link(onEvent3,4404277:doTimer,[(210,202)(210,314)])
}
Add(Hub,7757098,336,231)
{
link(onEvent1,12845684:doEnabled,[(382,237)(382,226)])
link(onEvent2,15701961:doEnabled,[(361,244)(361,254)])
}
Add(Timer,4404277,238,308)
{
Interval=200
link(onTimer,13091773:doData,[])
}
Add(DoData,13091773,294,308)
{
Data=Integer(48)
link(onEventData,16655693:doRead,[(394,314)(394,335)])
}
Add(BlockFind,16418445,651,308)
{
IncludeBlock=1
StartBlock="T="
EndBlock="C"
link(onSearch,9453662:doEvent1,[])
}
Add(Label,6604675,504,189)
{
Left=250
Top=15
Width=212
Height=41
Font=[MS Sans Serif,24,0,0,1]
Caption="Температура "
}
Add(PlotLines,11145754,826,364)
{
Grapher="температура в КИПе КТСМ"
Size=5
Step=1
Name="A1"
link(ValueY,12123648:GetData,[])
}
Add(Hub,9453662,735,308)
{
OutCount=3
link(onEvent1,6991285:doText,[(773,314)(773,272)])
link(onEvent2,12123648:doData,[])
link(onEvent3,11145754:doAdd,[(787,328)(787,370)])
}
Add(Plotter,6761042,826,217)
{
Left=20
Top=195
Width=600
Height=290
Name="температура в КИПе КТСМ"
MaxH=40
}
Add(Edit,6991285,826,266)
{
Left=300
Top=75
Width=105
Height=40
Font=[MS Sans Serif,24,1,0,1]
Text=""
}
Add(EventFromData,12123648,826,315)
{
}


Редактировалось 1 раз(а), последний 2018-12-05 08:39:28
карма: 0

0
Ответов: 8886
Рейтинг: 823
#5: 2018-12-06 00:39:28 ЛС | профиль | цитата
RT9U, при установленных свойствах графика MaxH и MinH отличных от "0" верхняя и нижняя границы изменяться не будут. Поставьте MinH=5 или 10, или -10, скорректируйте сетку.
(Применять элемент EventFromData для передачи данных на нижнюю точку не надо, он предназначен совсем для другого, используйте Memory! А в вашей схеме это вообще лишнее: данные у вас в потоке, а все элементы читают данные сначала из Верхней точки, далее если она не подключена, то из Свойста, а если поле свойства не заполнено (или отсутствует), то из потока. (Эти основы записаны в инструкции к HiAsm, которую вы не прочитали )
карма: 19

0
Ответов: 85
Рейтинг: 0
#6: 2018-12-06 06:10:01 ЛС | профиль | цитата
Леонид, спасибо исправил. всё работает. Единственное что не нравиться, это значения по оси Х. они фактически в секундах. это крайне неудобно. хотелось бы часы и минуты. И еще как добавить температурные константы, например ВЕРХНЯЯ НОРМА 24 С, НИЖНЯЯ НОРМА 19С?
карма: 0

0
Ответов: 85
Рейтинг: 0
#7: 2018-12-06 07:47:44 ЛС | профиль | цитата
блин поторопился не ось Х а ось Y. с константами разобрался.
карма: 0

0
Ответов: 8886
Рейтинг: 823
#8: 2018-12-06 10:12:02 ЛС | профиль | цитата
RT9U, часы/минуты -- свой график надо разрабатывать
карма: 19

0
Ответов: 85
Рейтинг: 0
#9: 2018-12-06 11:34:19 ЛС | профиль | цитата
Более менее стало понятно с этим графопостроителем. В самом элементе Plotter есть точка записи в файл. Можно сделать следующее, что имя файла менялось? Ведь если я жестко напишу График.bmp Он будет переписываться, а хотелось бы чтобы название менялось. Допустим 07122018.bmp 08122018.bmp и т.д. и расширение тоже не нравиться jpg можно как-то применить?
карма: 0

0
Ответов: 8886
Рейтинг: 823
#10: 2018-12-06 13:22:08 ЛС | профиль | цитата


Add(Plotter,8548246,217,203)
{
Left=5
Top=40
Width=375
Height=220
Name="MyPl"
Point(doSaveToFile)
link(FileName,862256:FString,[])
}
Add(PlotLines,7940234,154,196)
{
Grapher="MyPl"
}
Add(FormatStr,862256,217,154)
{
DataCount=1
Mask="MyPloterTemp_%1.bmp"
Point(FString)
link(onFString,8548246:doSaveToFile,[(256,160)(256,195)(207,195)(207,216)])
link(Str1,7783925:FormatTime,[])
}
Add(Button,14329058,154,154)
{
Left=10
Top=10
link(onClick,862256:doString,[])
}
Add(Time,7783925,217,98)
{
Format="D_M_Y"
}

карма: 19

0
Ответов: 85
Рейтинг: 0
#11: 2018-12-07 09:52:40 ЛС | профиль | цитата
Леонид, спасибо. Я реализовал как думал сам. Сделал через соединение строк. Но Ваш вариант оказался проще. Фактически программа готова. Однако возникла проблема. ЕЕ надо запускать в начало суток, т.е. в 00.00.00. Сами понимаете это часто невозможно.
Вот, что получилось.

Add(MainForm,15663453,175,189)
{
Width=1024
Height=768
Color=15780518
Caption="Температура в помещении"
link(onCreate,7366341:doEvent1,[])
}
Add(If_else,14926331,609,329)
{
Type=5
Op2=String()
link(onTrue,16418445:doSearch,[])
}
Add(Image,1372838,602,119)
{
Left=25
Top=25
Width=150
Height=145
Color=15780518
Ctl3D=0
WinStyle=4
}
Add(Button,13788814,315,140)
{
Left=90
Top=115
Width=60
Height=30
Font=[MS Sans Serif,8,1,0,1]
WinStyle=4
Caption="закрыт"
Point(doCaption)
link(onClick,3440661:doSwitch,[])
}
Add(ComboBox,15701961,560,217)
{
Left=90
Top=85
Width=60
Height=21
Color=15780518
WinStyle=4
Strings=#3:300|3:600|4:1200|4:2400|4:4800|4:9600|5:14400|5:19200|5:28800|5:38400|5:57600|6:115200|
Text=""
Point(doSelect)
Point(doEnabled)
}
Add(ComboBox,12845684,511,189)
{
Left=90
Top=60
Width=40
Height=21
Color=15780518
WinStyle=4
Text=""
DataType=1
Point(doSelect)
Point(doEnabled)
}
Add(Label,6975071,560,119)
{
Left=45
Top=65
Width=38
Height=17
Color=15780518
WinStyle=4
Caption="Номер"
}
Add(Label,7375579,602,161)
{
Left=50
Top=35
Width=84
Height=20
Color=15780518
Font=[MS Sans Serif,10,1,0,1]
WinStyle=4
Caption="СОМ-ПОРТ"
}
Add(Label,175544,560,161)
{
Left=30
Top=90
Width=52
Height=17
Color=15780518
WinStyle=4
Caption="Скорость"
}
Add(LED,4919888,511,119)
{
Left=40
Top=115
Width=30
Height=30
Color=15780518
WinStyle=4
Blick=1
ColorOn=32768
ColorOff=65280
Value=0
link(onChange,7757098:doEvent1,[(548,125)(548,196)(422,196)(422,258)])
}
Add(Hub,16033944,434,168)
{
OutCount=3
link(onEvent1,4919888:doOff,[(472,174)(472,132)])
link(onEvent2,16655693:doOpen,[(490,181)(490,328)])
link(onEvent3,10644372:doTimer,[(612,188)(612,391)])
}
Add(Hub,4850852,434,147)
{
link(onEvent1,4919888:doOn,[(480,153)(480,139)])
link(onEvent2,16655693:doClose,[(497,160)(497,335)])
}
Add(Switch,3440661,371,140)
{
DataOn=String(открыт)
DataOff=String(закрыт)
Point(State)
Point(onOff)
Point(onOn)
link(onSwitch,13788814:doCaption,[(415,146)(415,121)(296,121)(296,146)])
link(onOff,4850852:doEvent1,[])
link(onOn,16033944:doEvent1,[(422,160)(422,174)])
}
Add(COM,16655693,560,322)
{
link(onRead,14926331:doCompare,[])
link(Port,12845684:String,[(566,304)(524,304)])
link(BaudRate,15701961:String,[])
}
Add(DoData,695163,371,273)
{
Data=Integer(7)
link(onEventData,15701961:doSelect,[(481,279)(481,265)])
}
Add(EnumCOM,1016600,371,203)
{
OutType=0
link(onEnumPorts,12845684:doAdd,[(457,209)(457,195)])
}
Add(Hub,7366341,287,203)
{
OutCount=4
link(onEvent1,1016600:doEnumPorts,[])
link(onEvent2,695163:doData,[(346,216)(346,279)])
link(onEvent3,4404277:doTimer,[(308,223)(308,335)])
link(onEvent4,11257824:doTimer,[(574,230)(574,321)])
}
Add(Hub,7757098,434,252)
{
link(onEvent1,12845684:doEnabled,[(480,258)(480,244)])
link(onEvent2,15701961:doEnabled,[(459,265)(459,272)])
}
Add(Timer,4404277,336,329)
{
Interval=200
link(onTimer,13091773:doData,[])
}
Add(DoData,13091773,392,329)
{
Data=Integer(128)
link(onEventData,16655693:doRead,[(492,335)(492,356)])
}
Add(BlockFind,16418445,658,329)
{
IncludeBlock=1
StartBlock="T="
EndBlock="C"
link(onSearch,9453662:doEvent1,[])
}
Add(Label,6604675,602,203)
{
Left=245
Top=5
Width=592
Height=41
Color=15780518
Font=[MS Sans Serif,24,5,0,1]
Caption="Температура в помещении "
}
Add(Plotter,6761042,1155,623)
{
Left=10
Top=195
Width=1000
Height=485
Color=12639424
Name="температура в помещении"
GridX=24
GridY=25
MinH=-10
MaxH=40
Point(doSaveToFile)
link(FileName,862256:FString,[])
}
Add(PlotAxis,16137541,707,119)
{
Grapher="температура в помещении"
Name="ноль"
Color=16711680
Style=3
}
Add(PlotAxis,4916857,763,119)
{
Grapher="температура в помещении"
Name="19"
Color=32768
Style=1
Y=19
}
Add(PlotAxis,5954945,819,119)
{
Grapher="температура в помещении"
Name="24"
Color=8388608
Style=1
Y=24
}
Add(Label,7506625,658,119)
{
Left=55
Top=340
Width=165
Color=12639424
Caption="Верхняя температурная норма"
}
Add(Label,5273543,658,161)
{
Left=55
Top=405
Width=160
Color=12639424
Caption="Нижняя температурная норма"
}
Add(Label,1390953,658,203)
{
Left=55
Top=555
Width=150
Color=12639424
Caption="Ноль градусов по Цельсию"
}
Add(Time,6222630,1099,203)
{
Format="h:m:s"
Point(Second)
}
Add(Label,6356553,1099,266)
{
Left=535
Top=115
Width=144
Height=59
Color=15780518
Font=[MS Sans Serif,24,0,16711680,1]
Caption=""
link(Text,6222630:FormatTime,[])
}
Add(Timer,11257824,847,315)
{
Enable=1
link(onTimer,3737453:doEvent1,[(891,321)(891,258)])
}
Add(Label,5165588,700,252)
{
Left=690
Top=75
Width=169
Height=28
Color=15780518
Font=[MS Sans Serif,14,0,0,1]
Caption="Градусов Цельсия"
}
Add(Label,694381,469,133)
{
Left=690
Top=125
Width=143
Height=28
Color=15780518
Font=[MS Sans Serif,14,0,0,1]
Caption="Время местное"
}
Add(Time,764110,1099,56)
{
Format="D:M:Y"
Point(Second)
}
Add(Hub,3737453,903,252)
{
OutCount=4
link(onEvent1,13346588:doText,[(938,258)(938,118)])
link(onEvent2,12579305:doText,[(952,265)(952,160)])
link(onEvent3,6356553:doText,[])
}
Add(Label,13346588,1099,112)
{
Left=225
Top=115
Width=204
Height=54
Color=15780518
Font=[MS Sans Serif,24,0,16711680,1]
Caption=""
link(Text,764110:FormatTime,[])
}
Add(Label,4113899,658,252)
{
Left=230
Top=75
Width=152
Height=28
Color=15780518
Font=[MS Sans Serif,14,0,0,1]
Caption="Дата измерения"
}
Add(Label,12579305,1099,154)
{
Left=415
Top=215
Width=109
Height=24
Color=12639424
Font=[MS Sans Serif,8,1,0,1]
Caption=""
link(Text,13346588:Caption,[])
}
Add(Label,7305125,602,252)
{
Left=595
Top=215
Width=233
Height=17
Color=12639424
Font=[MS Sans Serif,8,1,0,1]
Caption="Температура в помещении"
}
Add(Hub,9453662,707,329)
{
link(onEvent1,6991285:doText,[(759,335)(759,286)])
link(onEvent2,11989124:doAdd,[(763,342)(763,559)])
}
Add(Edit,6991285,798,280)
{
Left=535
Top=65
Width=145
Height=40
Font=[MS Sans Serif,24,1,0,1]
Text=""
}
Add(PlotPoints,11989124,854,553)
{
Grapher="температура в помещении"
Size=2
Step=1
Name="A1"
Shape=2
link(ValueX,2358678:Caption,[(867,457)(930,457)])
}
Add(Timer,10644372,777,385)
{
Enable=1
link(onTimer,15309925:doEvent1,[])
}
Add(Label,2358678,924,385)
{
Left=945
Top=165
link(Text,5115802:FormatTime,[])
}
Add(CounterEx,9060066,1022,553)
{
Default=1
Point(doReset)
Point(onThroughMax)
link(onThroughMax,2333727:doEvent1,[])
}
Add(Hub,15309925,840,385)
{
OutCount=3
link(onEvent1,2358678:doText,[])
link(onEvent2,9060066:doNext,[(938,398)(938,559)])
link(onEvent3,9932732:doText,[(903,405)(903,615)])
}
Add(Hub,2333727,1078,560)
{
OutCount=5
link(onEvent1,862256:doString,[])
link(onEvent2,11989124:doClear,[(1098,573)(1098,652)(842,652)(842,566)])
link(onEvent3,9060066:doReset,[(1102,580)(1102,528)(1010,528)(1010,566)])
}
Add(Edit,9932732,1022,609)
{
Left=900
Top=75
Width=100
Height=45
Font=[MS Sans Serif,24,0,0,1]
Text=""
link(Str,9060066:Count,[])
}
Add(Time,5115802,924,322)
{
Format="h:m:s"
}
Add(FormatStr,862256,1155,560)
{
DataCount=1
Mask="c:\Documents and Settings\КИП КТСМ\Мои документы\температура\MyPloterTemp_%1.bmp"
Point(FString)
link(onFString,6761042:doSaveToFile,[(1199,566)(1199,601)(1143,601)(1143,636)])
link(Str1,7783925:FormatTime,[])
}
Add(Time,7783925,1155,504)
{
Format="D_M_Y_h_m"
}

программа на стадии отладки поэтому в счётчике всего 100 отчётов, для суток нужно 86400 отчётов.
Что телось бы:
1. Ну не нравится мне ось Y. хочу, что бы часы и минуты были;
2. Надписи на графике не сохраняются в файл ( не знаю как сделать)
3. Хочу критики... много

--- Добавлено в 2018-12-07 10:03:32

Вот еще, что пока в проекте съём температуры реализован 1 раз в секунду, что конечно чрезмерно. Потом исправлю.

Редактировалось 1 раз(а), последний 2018-12-07 10:03:32
карма: 0

0
Ответов: 8886
Рейтинг: 823
#12: 2018-12-08 00:35:34 ЛС | профиль | цитата
RT9U, вот рисуем на картинке, поэтому без корректировки арифметики нельзя менять размеры. А сохранять данные, конечно надо в текстовом виде.
На картинке


Add(MainForm,2953706,91,210)
{
Width=1003
Height=690
link(onCreate,3746522:doWork1,[(172,230)(172,258)(361,258)(361,300)])
}
Add(If_else,14926331,231,217)
{
Type=5
Op2=String()
link(onTrue,16418445:doSearch,[])
}
Add(COM,16655693,182,210)
{
link(onRead,14926331:doCompare,[])
}
Add(BlockFind,16418445,280,217)
{
IncludeBlock=1
StartBlock="T="
EndBlock="C"
link(onSearch,12143084:doString,[])
}
Add(StrList,5120985,504,217)
{
AddType=1
}
Add(Time,12263037,329,168)
{
Format="h:m:s"
Point(DateTime)
}
Add(FormatStr,12143084,329,217)
{
Mask="%1;%2"
link(onFString,16056977:doEvent1,[])
link(Str1,12263037:FormatTime,[])
}
Add(Hub,5300600,420,217)
{
link(onEvent1,5120985:doAdd,[])
link(onEvent2,11935530:doData,[(445,230)(445,237)])
}
Add(DoData,11935530,455,231)
{
Data=Integer(86400)
link(onEventData,5120985:doDelete,[])
}
Add(InfoTip,9866087,413,182)
{
Info=#24:Последние 86400 отсчётов|
Font=[MS Sans Serif,8,1,255,1]
Width=141
Height=88
}
Add(MultiElement,2353023,322,301)
{
link(onEvent1,12125055:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,7931011,21,21)
{
EventCount=1
WorkCount=2
Width=356
link(doWork1,2156829:doOperation,[(151,27)(151,76)])
link(doWork2,1359222:doNext,[(88,34)(88,139)])
}
Add(MathParse,6975282,175,133)
{
DataCount=1
MathStr="round(sin(0.01*%1)*5,0.001) + 22"
link(onResult,11553943:doCalc,[])
}
Add(MathParse,11553943,238,133)
{
MathStr="%1/86400+%2"
link(onResult,4631172:doConvert,[])
link(X1,1359222:Count,[(244,124)(230,124)(230,180)(132,180)])
link(X2,2156829:Result,[(251,110)(174,110)])
}
Add(DateConvertor,4631172,280,133)
{
Mode=9
Format="hh:mm:ss"
link(onResult,10061548:doString,[])
}
Add(FormatStr,10061548,322,133)
{
Mask="%1;%2"
link(onFString,7931011:onEvent1,[(361,139)(361,27)])
link(Str2,6975282:Result,[(335,116)(216,116)(216,173)(181,173)])
}
Add(Time,7944161,161,28)
{
Point(DateTime)
}
Add(Math,2156829,168,70)
{
OpType=1
Op2=1
link(onResult,1359222:doReset,[(207,76)(207,125)(95,125)(95,153)])
link(Op1,7944161:DateTime,[])
}
Add(Counter,1359222,126,133)
{
Max=86399
link(onNext,6975282:doCalc,[])
}
END_SDK
Add(Hub,16056977,378,217)
{
link(onEvent1,5300600:doEvent1,[])
link(onEvent2,12125055:doWork1,[(410,230)])
}
Add(InfoTip,9603159,70,273)
{
Info=#32:Иммитация ежесекундных измерений|
Font=[MS Sans Serif,8,1,255,1]
Width=316
Height=81
}
Add(ChildPanel,3746522,441,294)
{
}
BEGIN_SDK
Add(EditMulti,11810949,21,21)
{
EventCount=1
WorkCount=2
Width=566
Height=382
link(doWork1,5058209:doEvent1,[(46,27)(46,76)])
link(doWork2,1701529:doSplit,[(39,34)(39,167)])
}
Add(Panel,12986965,35,203)
{
Left=1
Top=195
Width=985
Height=458
}
Add(Bitmap,7234232,112,63)
{
HWidth=955
HHeight=455
FillColor=12639424
Point(doCreate)
}
Add(Bitmap,14586978,301,119)
{
Picture=[ZIP5207000078DA73F20D626700033320D6006246203ECE08A225C0E232507914D000C107EE1C201B53AA9FDAE60C363751238C47C37A34AC47C37A34AC47C39A7E610D00791FF87D]
HWidth=1
HHeight=455
FillColor=12639424
Point(doCreate)
}
Add(ChildPanel,14793498,112,28)
{
}
BEGIN_SDK
Add(EditMulti,6884947,21,21)
{
WorkCount=1
Width=153
Height=102
link(doWork1,16204598:doLoad,[(102,27)(102,83)])
}
Add(Panel,13811526,49,77)
{
Width=30
Height=457
Align=1
Color=12639424
}
Add(Bitmap,7051681,112,28)
{
Picture=[ZIPBAA3000078DAED9D318E1B391045DBB7D8C41B1B50A6C007D86883D97C823D828EA0601770A2434C64CC251610D089E5C89122011328D2395C336573CB245B228B9FB634FD071A40D6184F543559BF497E15FFF8EBBF8FC3CBCF7BF97D27BFBFCBEFE737C3F066F8EDE5F50FDFFE6E7FC6A7F1E263F867F03C7E267BBF1D4FC3E2340CF2383CFF75232F1E1E467D657CB8AB6848A6DDBBA7F1B45CED97F2A747F9E797A7F138DC8DDB95BCED6158E8BB15B34FF71B6DD697FB21654BA3F503E847BAD8F49A761FD78F96BD5B2F6E83DD33266DD7D23E84741AEEE4BA0636B40F363E5E373B8C293BFE71ED96CEADECA3FCCFEDAA8D1D8DFFE74E72BFD1CE3D3EACD0F1965EB95BAFBA5D4BF930C3DF586DD06844C314D4EE301CA3610AED27E59D84639E6CB26F9BAD892AE4F22B655BD1B162298F8BB76A35ED96042BBC6E3139AC1F77DB95B2D1731269F47129EC459F6BA9B7877DD81AF86E6C8E79B2C9BE2676B88F2D4FDE65EC30C396274779D27A1F6B75279AC6437547EFBCA5DD1A9992D9760D5B6EE94518AA260D35F10E991BAD691A96F219B14BD3D0F7101CF364933D2FB6CE18A275315CFE86EA8ED53461AB2474D0347DABFD5A12ECA2C39A927E0C05437547255842A1F200D562616B8BBBC5BB767190639E6CB26F8F9DDDAE43B0EDE2D773FEAEC75FDAE7D68CAAD3927255B8C4B633A7309D02EDCF075E0776B6DD37106FED27AA60E87ED2B37F339F904DF6B5B27D4E88CA75B6DA4DEEF275CD4A27440DDB3A213AF8D924F038DD69714214B25D4E88CA7E02D54B8E79B2E7C2766CA0FF62B6DB545096AB7CA682C23525632AE8B0AE694D0568DD71980A6AFA77ADA980639E6CB2C94619160AD86EC34299EEF8368E0AD86EC34219DB6758288EB75505A8A6F90C0B3573C05AC302C73CD964938D322C94E5EF9EBAE3332C94C5DB67582866DB35259CEEB80D0B65F7103EC3424D4CFAACE171CC934DF67976B8A18C46A17BF7356977484EEDEE824BEC96DDEE4BEC965DFA84AD80C04EDD050DDF498DD869BB716C68BC23768BBBC0B0ED6D8ED52E5CFF663E219BEC79B1D3722D6EDB42AEDDE98EB9CFB650C6F6D9168AD9C1B6D036DF997211D4DA160AD86EDB4209DB6B5B48D85905F3D91638E6C926FBDAD9D91A61383F4436DFF56143BD1669828DBC160DBA93C604E7B548D9BE020EC5D712E1B538336DA2D7826CB2E732DF1991351CA27405ADE170BE1463DBF72FD31292B81A0E29DB5A22A073A9D412D161EEDAECE59F921ED670209BECB9E80EB4CE426309E04A36AECE429A63717516B26C509D85EC5A18A8CE42CA06D559C8EA0EEB2C904DF6AF63472B488DB68589BDE854771CB6855C4C04AFC94E775CDCDBE813F1DEAF3751FD76876D618ABD1DF7CB4534DF91E79FFE1C3CD6822135376BAAB6ED6E601F24D22FB1549E95E0E678DB9B93E83404876D61C27F12756550FF663E219BECEB63A72E02A8AF207511E07C05591701C85730E68E81A83D1862BC70A645A48BFA4AC37C277511E07C05A98B00E72BC8BA08E82B209BEC19E98E7BFBBF4C7746E4D9105665D067435895E9703684D51DD0D9105995019D0D31A532A0B321A654866743904D36D9B5ECACAC396C0B13ED8E64CD675B385317D4C89ACFB670F6ACC7206B3EDBC2D96B1964CDDA16FE7DDBB27794CA9ACFB69065E764CD615B38DB4F2259ABB52D70CC934DF64DCEA5A09E854874D0674358D1419F0D11ADD8A1CF86B07329906721B38607F32C64D7F0706743A4A243CF02D964BF42B6752BA0BFE32E892FDC02CBFBD84D6E500D8731576606545320A459FD0CB85A0856D2537345739D85E8B3836A4FE8FA65E0E9F503C5DB06247443500D071BEF763304F309D97363078508B91CE72B08B7C6321C0F7247FC5D2A70BE8230D4FFDF2A81F90A4228021BE42B985ADF41D42B88765CA2594ACB7CE7BB42846CDDC15760834D5F01D964930DD1349CAF20AB6950CF82D534B467C16A1AD4B3906A1AC8B3907511E03C0BD91908D4B3904EC9E859209BECB9E80EA81642AA3BD05A0891EE406B2144BA03AD8510E98EFB788802DD894C05D0B914AE16C294EEB01602D964CF457770BE825477D0BE02AB3B685F41B48687F315A4E9343AC201B886F7A3AFA061EF28BB8687F61558DDA1AF80ECD7C38ECAFE43F7182D1BB4876EF7FEC30C04B4A72B98DDFA2E6A37EE1C04FD6EBE65A77BE85EB644F7B014F6A643BB5361E8E35998DA436F5E67134CB67F7BC0CFECAF125C84AC]
Point(doCreate)
}
Add(Image,16204598,112,77)
{
Width=30
Height=456
Color=12639424
ViewStyle=4
link(Bitmap,7051681:Bitmap,[])
}
END_SDK
Add(Image,14182370,350,231)
{
Left=30
Top=2
Width=955
Height=455
Color=65535
Point(doRefresh)
}
Add(Img_Shift,16731319,294,231)
{
DirectShift=1
link(onResult,5298885:doWork2,[])
link(Bitmap,3301286:Var3,[(300,222)(335,222)])
link(ToShiftBmp,6782828:Var1,[(307,201)])
}
Add(Bitmap,9906303,350,161)
{
}
Add(DoData,6868875,301,161)
{
link(onEventData,9906303:doLoad,[])
link(Data,14586978:Bitmap,[])
}
Add(Hub,6778745,224,161)
{
OutCount=5
link(onEvent1,6868875:doData,[])
link(onEvent2,11338816:doDraw,[(291,174)(291,216)])
link(onEvent3,16731319:doLoad,[(284,181)(284,237)])
link(onEvent4,16731319:doShift,[(277,188)(277,244)])
link(onEvent5,7228694:doCalc,[(249,195)(249,216)(137,216)(137,321)])
}
Add(Hub,5058209,63,70)
{
OutCount=4
link(onEvent1,14793498:doWork1,[(88,76)(88,34)])
link(onEvent2,7234232:doCreate,[])
link(onEvent3,13178881:doData,[(87,90)(87,111)])
link(onEvent4,7234232:doClear,[(95,97)(95,76)])
}
Add(DoData,13178881,112,105)
{
link(onEventData,5298885:doWork1,[(340,111)])
link(Data,7234232:Bitmap,[])
}
Add(HubEx,5298885,336,231)
{
link(onEvent,14182370:doLoad,[])
}
Add(MultiStrPart,1701529,84,161)
{
link(onSplit,840461:doSplit,[])
}
Add(MultiStrPart,840461,140,161)
{
Char=":"
Count=3
link(onSplit,1354993:doCalc,[])
link(Str,1701529:Part1,[(146,152)(132,152)(132,208)(90,208)])
}
Add(MathParse,1354993,182,161)
{
DataCount=1
MathStr="(40 - %1)/50*455"
ResultType=0
link(onResult,6778745:doEvent1,[])
link(X1,1701529:Part2,[(188,145)(125,145)(125,201)(97,201)])
}
Add(Img_Point,11338816,399,210)
{
Color=255
Point(Y)
Point(X)
link(Bitmap,6782828:Var3,[(405,201)])
link(Y,1354993:Result,[(412,194)(391,194)(391,208)(188,208)])
link(X,6051968:Value,[])
}
Add(GetDataEx,6782828,350,196)
{
link(Data,9906303:Bitmap,[])
}
Add(Memory,6051968,413,154)
{
Default=Integer(0)
}
Add(MathParse,7228694,147,315)
{
MathStr="((%1*60 + %2) mod 120)=0"
link(onResult,15341018:doCompare,[])
link(X1,7176037:Var2,[])
link(X2,534081:Var2,[])
}
Add(If_else,15341018,196,315)
{
Op2=Integer(1)
link(onTrue,12127298:doDraw,[])
}
Add(Img_Text,4000719,364,336)
{
X=905
Y=438
Font=[MS Sans Serif,10,0,16711680,1]
link(onDraw,12292124:doWork1,[(403,342)(403,321)])
link(Bitmap,12491852:Var2,[(370,327)(356,327)])
}
Add(GetDataEx,12491852,350,266)
{
link(Data,14182370:ImageBitmap,[])
}
Add(Img_Line,12127298,238,315)
{
Point1=29754298
Point2=954
Color=32768
link(onDraw,7537274:doEvent1,[])
link(Bitmap,3301286:Var1,[(244,271)])
}
Add(GetDataEx,3301286,329,266)
{
Angle=1
link(Data,12491852:Var1,[])
}
Add(Hub,7537274,280,315)
{
link(onEvent1,12292124:doWork2,[])
link(onEvent2,3787286:doString,[(305,328)(305,342)])
}
Add(FormatStr,3787286,315,336)
{
DataCount=3
Mask="%1:%2:%3"
link(onFString,4000719:doDraw,[])
link(Str1,840461:Part1,[(321,306)(146,306)])
link(Str2,7176037:Var3,[(328,299)])
link(Str3,534081:Var3,[(335,292)])
}
Add(GetDataEx,7176037,147,294)
{
link(Data,840461:Part2,[])
}
Add(GetDataEx,534081,154,287)
{
link(Data,840461:Part3,[])
}
Add(HubEx,12292124,336,315)
{
Angle=3
link(onEvent,14182370:doRefresh,[(340,251)])
}
END_SDK
Add(Button,6700041,84,308)
{
Left=20
Top=95
Caption="On/Off"
link(onClick,10605474:doNext,[])
}
Add(Counter,10605474,133,308)
{
Max=1
Default=1
link(onNext,6705138:doEvent,[])
}
Add(IndexToChanel,6705138,175,308)
{
link(onEvent1,9508340:doEvent1,[(214,314)(214,300)])
link(onEvent2,2403626:doStop,[])
}
Add(Timer,2403626,259,308)
{
Interval=10
Enable=1
link(onTimer,2353023:doWork2,[])
}
Add(Hub,9508340,224,294)
{
link(onEvent1,2403626:doTimer,[(249,300)(249,314)])
link(onEvent2,2353023:doWork1,[])
}
Add(HubEx,12125055,406,301)
{
link(onEvent,3746522:doWork2,[])
}

карма: 19

0
Ответов: 85
Рейтинг: 0
#13: 2018-12-08 07:59:42 ЛС | профиль | цитата
Леонид, для меня это просто космос. Я так еще не умею делать . Однако интересно.
не понятно следующее.
а имеено вопрос по формулам (40 - %1)/50*455 и ((%1*60 + %2) mod 120)=0 Что они делают??
карма: 0

0
Ответов: 8886
Рейтинг: 823
#14: 2018-12-08 10:01:09 ЛС | профиль | цитата
RT9U, (40 - %1)/50*455: перевод температуры в точку на рисунке, 40 -- верхний предел, 50 -- размах шкалы, 455 --размах шкалы в пикселях (на рисунках отсчёт начинается с левого верхнего угла, этот пиксель имеет координаты [0, 0].
((%1*60 + %2) mod 120)=0: определение времени вывода даты и вертикальной сетки на рисунок, суммируются в секундах минуты и секунды, операция mod -- остаток от деления, через каждые 120 сек он равен "0" и выдаётся ИСТИНА ("1"), сигнал на отрисовку.
Если менять размеры и скорость графика, то эти формулы надо корректировать.
карма: 19

0
Ответов: 85
Рейтинг: 0
#15: 2018-12-08 10:40:05 ЛС | профиль | цитата
Леонид, спасибо за объяснение. Пока трудновато это для меня, да и контроллер с датчиком на работе остался. поразбираюсь еще. может свою таблицу по вашему методу сделаю.
карма: 0

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