code_30241.txt
Читает, собака, 50--60 раз/сек

------------ Дoбавленo в 15.30:
wss60, не удержался, на IC сделал обработку строки по 256 из СОМ

Add(MainForm,10623790,196,140)
{
Width=619
Height=324
BorderStyle=1
link(onCreate,474771:doEvent1,[])
}
Add(COM,6353273,273,175)
{
BaudRate=19
TimeOut=1
link(onRead,2111790:doRecData,[])
}
Add(DoData,5233936,224,238)
{
Data=Integer(256)
link(onEventData,6353273:doRead,[(264,244)(264,209)])
}
Add(Thread,10878508,133,238)
{
Delay=0
link(onExec,5233936:doData,[])
}
Add(Button,14315189,35,217)
{
Left=20
Top=20
Caption=">>"
link(onClick,5035321:doEvent1,[])
}
Add(Button,16120133,35,252)
{
Left=20
Top=70
Caption="II"
link(onClick,6175985:doEvent1,[])
}
Add(PlotLines,2037800,392,182)
{
Grapher="MyDevice"
Point(ValuesX)
link(ValueX,5265381:Value,[])
}
Add(Plotter,6283154,392,98)
{
Left=135
Top=10
Width=465
Height=270
Color=12639424
Name="MyDevice"
GridX=16
GridY=16
MinH=-128
MaxH=128
}
Add(MultiElement,15592299,133,189)
{
@Hint=#34:Формирование строки (Sin) 256 байт|
link(onEvent1,4811701:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,3044716,21,21)
{
EventCount=1
WorkCount=2
Width=426
Height=144
link(doWork1,5126659:doTimer,[(72,27)(72,62)])
link(doWork2,5126659:doStop,[(59,34)(59,69)])
}
Add(Convertor,14746393,287,56)
{
Mode=4
link(onResult,15692242:doStrCat,[])
}
Add(Timer,5126659,98,56)
{
Interval=40
Enable=1
link(onTimer,3743529:doFor,[])
}
Add(For,3743529,147,56)
{
End=255
link(onEvent,15730124:doNext,[])
link(onStop,15224708:doEvent1,[(188,69)(188,118)])
}
Add(Counter,15730124,196,56)
{
Max=999999999
link(onNext,6961004:doCalc,[])
}
Add(MathParse,6961004,245,56)
{
DataCount=1
MathStr="sin(%1)*127 + 128"
AngleMode=1
link(onResult,14746393:doConvert,[])
}
Add(StrCat,15692242,329,56)
{
link(onStrCat,8384805:doValue,[])
link(Str1,1145836:Var1,[(335,44)(367,44)(367,98)])
}
Add(Memory,8384805,378,56)
{
Default=String()
}
Add(DoData,14255720,378,112)
{
link(onEventData,3044716:onEvent1,[(428,118)(428,27)])
link(Data,1145836:Var2,[])
}
Add(GetDataEx,1145836,378,93)
{
link(Data,8384805:Value,[])
}
Add(Hub,15224708,343,112)
{
link(onEvent1,14255720:doData,[])
link(onEvent2,8384805:doClear,[(371,125)(371,69)])
}
END_SDK
Add(InlineCode,2111790,322,175)
{
WorkPoints=#34:doStart=Расчёт начальных установок|26:doRecData=Потоковые данные|
EventPoints=#14:onIndex=Индекс|22:onSignal=Выход сигнала|36:onBegin=Щас будем рисовать график :)|
VarPoints=#
DataPoints=#
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|36: Signal:Array[0..511] of integer;|16: Num:integer;|9: public|25: _data_Data:THI_Event;|44: onSignal:THI_Event; //Выход сигнала|37: onIndex:THI_Event; //Индекс|47: onBegin:THI_Event; //Начало отрисовки|0:|51: procedure doStart(var _Data:TData; Index:word);|53: procedure doRecData(var _Data:TData; Index:word);|4:end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|15: var i:integer;|7: begin |34: for i:=0 to 2 do Signal[i]:=0;|9: Num:=0|5: end;|1: |32:procedure THiAsmClass.doRecData;|16: var St:string; |22: i,j,_Len:integer;|6: begin|25: St:=ToString(_Data);|22: _Len:=Length(St);|25: for i:=1 to _Len do|12: begin|36: Signal[Num]:=ord(St[i])-127;|19: Num:=Num+1;|24: if Num>511 then|15: begin|34: _hi_OnEvent(onBegin,0);|30: for j:=0 to 511 do|18: begin|37: _hi_OnEvent(onIndex,j);|46: _hi_OnEvent(onSignal,Signal[j]);|21: Num:=0;|17: end;|14: end;|11: end;|5: end;|1: |4:end.|
link(onIndex,5265381:doValue,[(366,181)(366,146)])
link(onSignal,2037800:doAdd,[])
link(onBegin,10151809:doEvent1,[])
}
Add(Hub,474771,238,154)
{
link(onEvent1,2111790:doStart,[(313,160)(313,181)])
link(onEvent2,6353273:doOpen,[(262,167)(262,181)])
}
Add(Memory,5265381,399,140)
{
}
Add(Hub,10151809,364,189)
{
link(onEvent1,2037800:doClear,[])
link(onEvent2,4093072:doNext,[(390,202)(390,223)])
}
Add(Hub,4811701,175,189)
{
link(onEvent1,6353273:doWrite,[(250,195)(250,202)])
link(onEvent2,2351202:doNext,[(207,202)(207,272)])
}
Add(Math,14997438,476,217)
{
OpType=2
Op2=512
link(onResult,10514087:doStrCat,[])
}
Add(Math,164902,476,266)
{
OpType=2
Op2=256
link(onResult,10155871:doStrCat,[])
}
Add(Counter,2351202,434,266)
{
Max=9999999
link(onNext,164902:doOperation,[])
}
Add(Counter,4093072,434,217)
{
Max=9999999
link(onNext,14997438:doOperation,[])
}
Add(Label,12864651,560,266)
{
Left=5
Top=120
}
Add(Label,6067157,560,217)
{
Left=5
Top=155
}
Add(Hub,5035321,77,217)
{
OutCount=4
link(onEvent1,4093072:doReset,[(374,223)(374,237)])
link(onEvent2,2351202:doReset,[(199,230)(199,286)])
link(onEvent3,15592299:doWork1,[(102,237)(102,195)])
link(onEvent4,10878508:doStart,[])
}
Add(Hub,6175985,77,252)
{
link(onEvent1,15592299:doWork2,[(110,258)(110,202)])
link(onEvent2,10878508:doStop,[(115,265)(115,251)])
}
Add(StrCat,10155871,518,266)
{
Str1="Получено "
link(onStrCat,12864651:doText,[])
}
Add(StrCat,10514087,518,217)
{
Str1="Обработано "
link(onStrCat,6067157:doText,[])
}
Забыл добавить, что в этих схемах на разъёме порта ставил перемычку между 2-ым и 3-им контактами и "тихо сам с собою я веду беседу"
