Вверх ↑
Ответов: 85
Рейтинг: 0
#1: 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 раз в секунду, что конечно чрезмерно. Потом исправлю.
карма: 0

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