Широковещательные сообщения (broad cast)

This commit is contained in:
Dimas 2025-06-11 17:25:19 +03:00
parent 8afa7b0ec6
commit 3ba8b59095
21 changed files with 254 additions and 175 deletions

BIN
AsyncPro_D2007.bpl Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,8 +1,8 @@
object CANTerminal: TCANTerminal object CANTerminal: TCANTerminal
Left = 992 Left = 100
Top = 100 Top = 100
Width = 801 Width = 801
Height = 538 Height = 600
Caption = 'CANTerminal "Hunderitter" v.07.04.2025' Caption = 'CANTerminal "Hunderitter" v.07.04.2025'
Color = clBtnFace Color = clBtnFace
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
@ -36,13 +36,14 @@ object CANTerminal: TCANTerminal
000380800003C000000FC000000FF000001FF000001FF80000FFF80000FFF800 000380800003C000000FC000000FF000001FF000001FF80000FFF80000FFF800
00FFFC0001FFFC0001FFFF800FFFFF800FFFFF800FFFFF800FFFFFFFFFFF} 00FFFC0001FFFC0001FFFF800FFFFF800FFFFF800FFFFF800FFFFFFFFFFF}
OldCreateOrder = False OldCreateOrder = False
Visible = True
OnClose = FormClose OnClose = FormClose
OnCreate = FormCreate OnCreate = FormCreate
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
object RxLabel1: TRxLabel object RxLabel1: TRxLabel
Left = 245 Left = 429
Top = 440 Top = 464
Width = 39 Width = 39
Height = 13 Height = 13
Caption = 'CAN on' Caption = 'CAN on'
@ -63,7 +64,7 @@ object CANTerminal: TCANTerminal
Left = 10 Left = 10
Top = 48 Top = 48
Width = 765 Width = 765
Height = 337 Height = 355
Caption = ' '#1055#1088#1086#1077#1082#1090' ' Caption = ' '#1055#1088#1086#1077#1082#1090' '
TabOrder = 1 TabOrder = 1
object Label1: TLabel object Label1: TLabel
@ -139,16 +140,16 @@ object CANTerminal: TCANTerminal
end end
object Memo1: TMemo object Memo1: TMemo
Left = 10 Left = 10
Top = 390 Top = 410
Width = 225 Width = 400
Height = 100 Height = 140
Lines.Strings = ( Lines.Strings = (
'') '')
TabOrder = 2 TabOrder = 2
end end
object CANswitch: TRxSwitch object CANswitch: TRxSwitch
Left = 248 Left = 432
Top = 390 Top = 410
Width = 33 Width = 33
Height = 49 Height = 49
Caption = 'CANswitch' Caption = 'CANswitch'
@ -156,8 +157,8 @@ object CANTerminal: TCANTerminal
OnClick = CANswitchClick OnClick = CANswitchClick
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
Left = 472 Left = 672
Top = 400 Top = 448
Width = 273 Width = 273
Height = 169 Height = 169
Caption = 'UART' Caption = 'UART'
@ -288,24 +289,24 @@ object CANTerminal: TCANTerminal
end end
end end
object RadioGroup1: TRadioGroup object RadioGroup1: TRadioGroup
Left = 296 Left = 480
Top = 390 Top = 410
Width = 73 Width = 73
Height = 65 Height = 65
Caption = ' Can Speed ' Caption = ' Can Speed '
TabOrder = 5 TabOrder = 5
end end
object Button125: TRadioButton object Button125: TRadioButton
Left = 304 Left = 487
Top = 408 Top = 427
Width = 50 Width = 50
Height = 17 Height = 17
Caption = '125K' Caption = '125K'
TabOrder = 6 TabOrder = 6
end end
object Button250: TRadioButton object Button250: TRadioButton
Left = 304 Left = 487
Top = 432 Top = 451
Width = 50 Width = 50
Height = 17 Height = 17
Caption = '250K' Caption = '250K'

View File

@ -95,7 +95,8 @@ type
BaseAdr: longword; BaseAdr: longword;
PlusAdr: integer; PlusAdr: integer;
CommAdr: longword; CommAdr: longword;
UKSS: array[0..15] of TUKSS; UKSS: array[0..16] of TUKSS;
Name: string; Name: string;
DigiButNames: array[0..16] of string; DigiButNames: array[0..16] of string;
DigiButNameChange: boolean; DigiButNameChange: boolean;
@ -122,7 +123,6 @@ type
ProjectQua : integer = 0; ProjectQua : integer = 0;
ProjectNum : integer = 0; ProjectNum : integer = 0;
Boxx : Tboxx; Boxx : Tboxx;
const const
@ -146,21 +146,21 @@ begin
Project.Bars.Name := TPanel.Create(self); Project.Bars.Name := TPanel.Create(self);
Project.Bars.Name.Parent := GroupBox; Project.Bars.Name.Parent := GroupBox;
Project.Bars.Name.Left :=10; Project.Bars.Name.Left :=10;
Project.Bars.Name.Top :=15; Project.Bars.Name.Top :=15;
Project.Bars.Name.Width :=100; Project.Bars.Name.Width :=100;
Project.Bars.Name.Height := 30; Project.Bars.Name.Height := 30;
Project.Bars.BaseAdr := TPanel.Create(self); Project.Bars.BaseAdr := TPanel.Create(self);
Project.Bars.BaseAdr.Parent := GroupBox; Project.Bars.BaseAdr.Parent := GroupBox;
Project.Bars.BaseAdr.Left :=10+100+10; Project.Bars.BaseAdr.Left :=10+100+10;
Project.Bars.BaseAdr.Top :=15; Project.Bars.BaseAdr.Top :=15;
Project.Bars.BaseAdr.Width :=100; Project.Bars.BaseAdr.Width :=100;
Project.Bars.BaseAdr.Height := 30; Project.Bars.BaseAdr.Height := 30;
Project.Bars.CommAdr := TPanel.Create(self); Project.Bars.CommAdr := TPanel.Create(self);
Project.Bars.CommAdr.Parent := GroupBox; Project.Bars.CommAdr.Parent := GroupBox;
Project.Bars.CommAdr.Left :=10+100+10+100+10; Project.Bars.CommAdr.Left :=10+100+10+100+10;
Project.Bars.CommAdr.Top :=15; Project.Bars.CommAdr.Top :=15;
Project.Bars.CommAdr.Width :=100; Project.Bars.CommAdr.Width :=100;
Project.Bars.CommAdr.Height := 30; Project.Bars.CommAdr.Height := 30;
@ -169,14 +169,14 @@ begin
Label1.Top := Project.Bars.Name.Top + Project.Bars.Name.Height + tab*3; Label1.Top := Project.Bars.Name.Top + Project.Bars.Name.Height + tab*3;
Label2.Top := Label1.Top; Label3.Top := Label1.Top; Label4.Top := Label1.Top; Label2.Top := Label1.Top; Label3.Top := Label1.Top; Label4.Top := Label1.Top;
Label5.Top := Label1.Top; Label6.Top := Label1.Top; Label7.Top := Label1.Top; Label5.Top := Label1.Top; Label6.Top := Label1.Top; Label7.Top := Label1.Top;
Label8.Top := Label1.Top; Label9.Top := Label1.Top; Label10.Top := Label1.Top; Label8.Top := Label1.Top; Label9.Top := Label1.Top; Label10.Top := Label1.Top;
for i:= 0 to 15 do for i:= 0 to 16 do
begin begin
hei := 25; hei := 25;
top := Label1.Top + Label1.Height + tab + (hei+tab)*(i mod 8); top := Label1.Top + Label1.Height + tab + (hei+tab)*((i mod 8)+8*(i div 16));
lef := 10 + (i div 8)*(lev); lef := 10 + ((i div 8) and 1)*(lev);
wid := hei; wid := hei;
Project.UKSS[i].Bar.RSadr := TPanel.Create(self); Project.UKSS[i].Bar.RSadr := TPanel.Create(self);
@ -236,18 +236,18 @@ begin
Project.UKSS[i].Bar.Go.Width :=wid; Project.UKSS[i].Bar.Go.Width :=wid;
Project.UKSS[i].Bar.Go.Height := hei; Project.UKSS[i].Bar.Go.Height := hei;
Project.UKSS[i].Bar.Go.Left :=lef; Project.UKSS[i].Bar.Go.Left :=lef;
Project.UKSS[i].Bar.Go.Top :=top; Project.UKSS[i].Bar.Go.Top :=top;
Project.UKSS[i].Bar.Go.Caption :='S'; Project.UKSS[i].Bar.Go.Caption :='S';
Project.UKSS[i].Bar.Go.Font.Style:=[fsBold]; Project.UKSS[i].Bar.Go.Font.Style:=[fsBold];
Project.UKSS[i].Bar.Go.Tag := i; Project.UKSS[i].Bar.Go.Tag := i;
Project.UKSS[i].Bar.Go.OnClick := ShoWinClick; Project.UKSS[i].Bar.Go.OnClick := ShoWinClick;
if i=0 then Label5.Left := lef; if i=0 then Label5.Left := lef;
if i=8 then Label10.Left := lef; if i=8 then Label10.Left := lef;
if i<8 then lev := lef + wid + tab*2; if i<8 then lev := lef + wid + tab*2;
end; end;
PathExe:=ExtractFileDir(ParamStr(0))+'\'; PathExe:=ExtractFileDir(ParamStr(0))+'\';
@ -281,7 +281,7 @@ begin
then Project.Bars.CommAdr.Caption := '' then Project.Bars.CommAdr.Caption := ''
else Project.Bars.CommAdr.Caption := '0x'+inttohex(Project.CommAdr,8); else Project.Bars.CommAdr.Caption := '0x'+inttohex(Project.CommAdr,8);
for i:=0 to 15 do for i:=0 to 16 do
begin begin
Project.UKSS[i].Bar.RXadr.Tag:=0; Project.UKSS[i].Bar.RXadr.Tag:=0;
Project.UKSS[i].Bar.TXadr.Tag:=0; Project.UKSS[i].Bar.TXadr.Tag:=0;
@ -332,7 +332,7 @@ begin
begin begin
Project.BaseAdr := 0; Project.BaseAdr := 0;
Project.PlusAdr := 1 shl 28; Project.PlusAdr := 1 shl 28;
left:=24; left:=20;
end else begin end else begin
Project.BaseAdr := Inifile.ReadInteger(ProjID,'BaseAdr',0); Project.BaseAdr := Inifile.ReadInteger(ProjID,'BaseAdr',0);
Project.PlusAdr := Inifile.ReadInteger(ProjID,'PlusAdr',16); Project.PlusAdr := Inifile.ReadInteger(ProjID,'PlusAdr',16);
@ -342,7 +342,7 @@ begin
Project.CommAdr := Inifile.ReadInteger(ProjID,'CommAdr',0); Project.CommAdr := Inifile.ReadInteger(ProjID,'CommAdr',0);
adr:=-1; adr:=-1;
for i:=0 to 15 do for i:=0 to 16 do
begin begin
nom := 'Use_'+inttostr(i); nom := 'Use_'+inttostr(i);
@ -417,7 +417,7 @@ begin
if Project.Protokol=3 if Project.Protokol=3
then adr := ArrCanMessage[pak].m_dwID and $1F000000 then adr := ArrCanMessage[pak].m_dwID and $1FF00000
else adr := ArrCanMessage[pak].m_dwID; else adr := ArrCanMessage[pak].m_dwID;
if boxx.qua = 0 then if boxx.qua = 0 then
@ -469,7 +469,8 @@ begin
end end
end; end;
for i:=0 to 15 do for i:=0 to 16 do
begin
if Project.UKSS[i].Use then if Project.UKSS[i].Use then
begin begin
if Project.UKSS[i].RXadr = adr then if Project.UKSS[i].RXadr = adr then
@ -523,10 +524,11 @@ begin
if(Project.UKSS[i].RXadr = adr) then mess.Surs := 1; if(Project.UKSS[i].RXadr = adr) then mess.Surs := 1;
if Project.UKSS[i].Exist then if Project.UKSS[i].Exist then
Project.UKSS[i].Wind.ReceiveCanData(mess); Project.UKSS[i].Wind.ReceiveCanData(mess,i);
end end
end end
end
end; end;
newstring:=''; newstring:='';
@ -542,7 +544,7 @@ begin
end; end;
if CANswitch.StateOn then if CANswitch.StateOn then
for i:=0 to 15 do for i:=0 to 16 do
if Project.UKSS[i].Use then if Project.UKSS[i].Use then
begin begin
if Project.UKSS[i].Bar.RXadr.Tag = 0 if Project.UKSS[i].Bar.RXadr.Tag = 0
@ -581,7 +583,7 @@ begin
CloseSlavna(); CloseSlavna();
CanTimer.Enabled:=false; CanTimer.Enabled:=false;
boxx.qua := 0; boxx.qua := 0;
for i:=0 to 15 do for i:=0 to 16 do
begin begin
Project.UKSS[i].Bar.RXadr.Color := clBtnFace; Project.UKSS[i].Bar.RXadr.Color := clBtnFace;
Project.UKSS[i].Bar.TXadr.Color := clBtnFace; Project.UKSS[i].Bar.TXadr.Color := clBtnFace;
@ -643,7 +645,7 @@ var i : integer;
nom, num: string; nom, num: string;
begin begin
for i:=0 to 15 do for i:=0 to 16 do
if Project.UKSS[i].Exist then if Project.UKSS[i].Exist then
begin begin
Project.UKSS[i].Wind.Close; Project.UKSS[i].Wind.Close;

View File

@ -1,6 +1,6 @@
[Projects] [Projects]
ProjectQua=9 ProjectQua=9
ProjectNum=6 ProjectNum=7
Project1=Áóêñèð Project1=Áóêñèð
Project2=ÑÝÄÁÌ Project2=ÑÝÄÁÌ
Project3=Ëåäîêîë Project3=Ëåäîêîë
@ -340,8 +340,7 @@ DigiBut_15=Reset
DigiBut_16=Nothing at all DigiBut_16=Nothing at all
[23550.2] [23550.2]
BaseAdr=$00235500 Protokol=3
PlusAdr=$10
Use_0=1 Use_0=1
Use_1=1 Use_1=1
Use_2=1 Use_2=1
@ -351,6 +350,7 @@ Use_5=1
Use_11=1 Use_11=1
Use_12=1 Use_12=1
Use_13=1 Use_13=1
Use_16=1
CANadr_0=0 CANadr_0=0
CANadr_1=1 CANadr_1=1
CANadr_2=2 CANadr_2=2
@ -360,6 +360,7 @@ CANadr_5=8
CANadr_11=5 CANadr_11=5
CANadr_12=7 CANadr_12=7
CANadr_13=9 CANadr_13=9
CANadr_16=$1f
RSadr_0=1 RSadr_0=1
RSadr_1=2 RSadr_1=2
RSadr_2=3 RSadr_2=3
@ -378,6 +379,7 @@ Name_5=
Name_11=ÓÊÑÑ ÑÈ ÑÁ2 Name_11=ÓÊÑÑ ÑÈ ÑÁ2
Name_12=ÓÊÑÑ ÑÂÔ ÑÁ2 Name_12=ÓÊÑÑ ÑÂÔ ÑÁ2
Name_13=ÓÊÑÂÝÏ ÑÁ2 Name_13=ÓÊÑÂÝÏ ÑÁ2
Name_16=BroadCast
DigiBut_0=Test DigiBut_0=Test
DigiBut_1=Def DigiBut_1=Def
DigiBut_2=Save DigiBut_2=Save

View File

@ -12,7 +12,7 @@
-$L+ -$L+
-$M- -$M-
-$N+ -$N+
-$O+ -$O-
-$P+ -$P+
-$Q- -$Q-
-$R- -$R-

View File

@ -15,7 +15,7 @@ K=0
L=1 L=1
M=0 M=0
N=1 N=1
O=1 O=0
P=1 P=1
Q=0 Q=0
R=0 R=0

Binary file not shown.

10
Terminal.ini Normal file
View File

@ -0,0 +1,10 @@
[Modbus]
FormVersion=0
Flags=0
ShowCmd=1
PixelsPerInch=96
MinMaxPos(2560x1440)=-1,-1,-1,-1
MinMaxPos=-1,-1,-1,-1
NormPos(2560x1440)=-877,143,-15,782
NormPos=-877,143,-15,782
Visible=0

Binary file not shown.

Binary file not shown.

View File

@ -125,22 +125,22 @@ type
procedure Renamido(Sender: TObject; var Key: Char); procedure Renamido(Sender: TObject; var Key: Char);
procedure SaveProjectComms(ProjID: string); procedure SaveProjectComms(ProjID: string);
procedure ReceiveCanData(Mess: TMessag); procedure DataLenEditChange(Sender: TObject);
procedure DataLenEditChange(Sender: TObject); procedure DataGridKeyPress(Sender: TObject; var Key: Char);
procedure DataGridKeyPress(Sender: TObject; var Key: Char); procedure DataGridSetEditText(Sender: TObject; ACol, ARow: Integer;
procedure DataGridSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);
const Value: String); procedure DataGridDrawCell(Sender: TObject; ACol, ARow: Integer;
procedure DataGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
Rect: TRect; State: TGridDrawState); procedure DataGridSelectCell(Sender: TObject; ACol, ARow: Integer;
procedure DataGridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
var CanSelect: Boolean); procedure DataGridGetEditText(Sender: TObject; ACol, ARow: Integer;
procedure DataGridGetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String);
var Value: String); procedure AutoTimeEditChange(Sender: TObject);
procedure AutoTimeEditChange(Sender: TObject);
private private
{ Private declarations } { Private declarations }
Unites : Array[0..127] of TUnit;
Anapan : Array[0..63] of TPanel; Anapan : Array[0..63] of TPanel;
Digipan : Array[0..511] of Tpanel; Digipan : Array[0..511] of Tpanel;
Digibox : Array[0..15] of TCheckBox; Digibox : Array[0..15] of TCheckBox;
@ -151,18 +151,54 @@ type
DigiLab: Array[0..31] of TLabel; DigiLab: Array[0..31] of TLabel;
AnaLab: Array[0..7] of TLabel; AnaLab: Array[0..7] of TLabel;
kownt: integer;
waiste: integer;
fade: cardinal;
auto: cardinal;
reColor: integer;
doReColor: boolean;
AnalogStart : Integer; AnalogStart : Integer;
AnalogLength : Integer; AnalogLength : Integer;
DigitalStart : Integer; DigitalStart : Integer;
DigitalLength : Integer; DigitalLength : Integer;
Unites : Array[0..127] of TUnit; rData2, rData3 : double;
FIniFile : TRegIniFile;
FRegFile : TIniFile;
Temper1,Temper2 : Array [0..12] of Real;
kownt: integer; { InsideFUst : boolean = False;
waiste: integer; InsideSet : boolean = False;
fade: integer; InsideComm : boolean = False;
reColor: integer; }
doReColor: boolean; LastSender : TObject;
KT1,KT2,KT3 : Array [0..12] of Real;
UNew : SmallInt;
MomentNew : SmallInt;
UNewZ : Integer;
NameEdit: TEdit;
ArrNiiefaAnalog : Array [0..100] of Word;
ArrNiiefaDigital : Array [0..100] of Word;
AutoMoment: cardinal;
RecolorMoment: cardinal;
Wordt: word;
// ProjectQua : integer = 0;
// ProjectNum : integer = 0;
clBlueGradient : array[0..20,0..1] of TColor;
clRedGradient : array[0..20] of TColor;
clGreenGradient : array[0..20,0..1] of TColor;
EmptyCell:TGridRect;
public public
@ -172,51 +208,15 @@ type
TXadr: longword; TXadr: longword;
Protokol: integer; Protokol: integer;
procedure ReceiveCanData(Mess: TMessag; dev:integer);
{ Public declarations } { Public declarations }
end; end;
var var
ModbusForm : TModbusForm; ModbusForm : TModbusForm;
rData2, rData3 : double;
FIniFile : TRegIniFile;
FRegFile : TIniFile;
Temper1,Temper2 : Array [0..12] of Real;
InsideFUst : boolean = False;
InsideSet : boolean = False;
InsideComm : boolean = False;
LastSender : TObject;
ErrorCmd : boolean = False;
KT1,KT2,KT3 : Array [0..12] of Real;
UNew : SmallInt;
MomentNew : SmallInt;
UNewZ : Integer;
Count1 : Integer = 0;
Count2 : Integer = 0;
NameEdit: TEdit;
ArrNiiefaAnalog : Array [0..100] of Word;
ArrNiiefaDigital : Array [0..100] of Word;
flaganalogdigital : boolean = false;
Wordt: word;
ProjectQua : integer = 0;
ProjectNum : integer = 0;
clBlueGradient : array[0..20,0..1] of TColor;
clRedGradient : array[0..20] of TColor;
clGreenGradient : array[0..20,0..1] of TColor;
EmptyCell:TGridRect;
const const
@ -253,10 +253,10 @@ end;
procedure TModbusForm.Memo1Change(Sender: TObject); procedure TModbusForm.Memo1Change(Sender: TObject);
var var
i : Integer; i : Integer;
begin begin
i:=Memo1.Lines.Count; i:=Memo1.Lines.Count;
if i>100 then Memo1.Clear; if i>100 then Memo1.Clear;
end; end;
{ {
procedure TModbusForm.btnAnalogClick(Sender: TObject); procedure TModbusForm.btnAnalogClick(Sender: TObject);
@ -297,7 +297,7 @@ end;
procedure TModbusForm.FormCreate(Sender: TObject); procedure TModbusForm.FormCreate(Sender: TObject);
var i: integer; var i: integer;
inifile : TIniFile; inifile : TIniFile;
nom,num: string; nom,num: string;
begin begin
@ -452,62 +452,34 @@ begin
Bitbut[i].OnClick:=BitButClick; Bitbut[i].OnClick:=BitButClick;
end; end;
inifile := TIniFile.Create(PathExe+'Terminal.ini'); { inifile := TIniFile.Create(PathExe+'Terminal.ini');
ProjectQua := strtoint(Inifile.ReadString('Projects','ProjectQua','0')); ProjectQua := strtoint(Inifile.ReadString('Projects','ProjectQua','0'));
ProjectNum := strtoint(Inifile.ReadString('Projects','ProjectNum','0')); ProjectNum := strtoint(Inifile.ReadString('Projects','ProjectNum','0'));
inifile.Free; inifile.Free;
}
FadeSpinChange(Sender); FadeSpinChange(Sender);
end; end;
procedure TModbusForm.myTimerTimer(Sender: TObject); procedure TModbusForm.myTimerTimer(Sender: TObject);
var var i : integer;
i : integer;
doIt: boolean;
begin begin
if(AutoBox.Checked) then if(GetTickCount - RecolorMoment)>(Fade * 1000 / (clGrad-1))
if(AutoTimeEdit.Value > 0) then then begin doReColor := true; RecolorMoment:= GetTickCount end;
begin
if(AutoBox.Tag > 0) then AutoBox.Tag:= AutoBox.Tag-1;
if(AutoBox.Tag = 0) then if doReColor then
begin
SetButtonDo(Sender);
AutoBox.Tag:= trunc(AutoTimeEdit.Value);
end;
end;
if myTimer.Tag > 0 then myTimer.Tag:= myTimer.Tag-1
else begin
myTimer.Tag:=10;
Fade:=trunc(FadeSpin.Value);
inc(waiste);
if Waiste >= Fade then
begin
waiste :=1;
doIt := true;
end else doIt := false;
if doIt or doReColor then
for i:= 0 to 127 do for i:= 0 to 127 do
if Unites[i].Age > 0 then if Unites[i].Age > 0 then
begin begin
dec(Unites[i].Age); dec(Unites[i].Age);
if Fade = 0 then Unites[i].Age := 0; if Fade = 0 then Unites[i].Age := 0;
if Fade = 1 then dec(Unites[i].Age); // åùå ðàç
if Fade = 10 then Unites[i].Age := reColor; if Fade = 10 then Unites[i].Age := reColor;
if Unites[i].Age <0 then Unites[i].Age:=0; // áûâàåò if Unites[i].Age <0 then Unites[i].Age:=0; // áûâàåò
if (i>= AnalogStart) if (i>= AnalogStart)
and(i< AnalogStart + AnalogLength) and(i< AnalogStart + AnalogLength)
then Anapan[i-AnalogStart].Color := clBlueGradient[Unites[i].Age][Unites[i].Surs]; then Anapan[i-AnalogStart].Color := clBlueGradient[Unites[i].Age][Unites[i].Surs];
if (i>= DigitalStart) if (i>= DigitalStart)
and(i< DigitalStart + DigitalLength) and(i< DigitalStart + DigitalLength)
@ -517,7 +489,12 @@ begin
doReColor:=false; doReColor:=false;
end; if(AutoBox.Checked) then
if(GetTickCount - AutoMoment)>(myTimer.Interval*Auto)
then begin
SetButtonDo(Sender);
AutoMoment:= GetTickCount;
end;
end; end;
@ -528,8 +505,14 @@ var
begin begin
if Protokol=3 then DataLenEdit.MaxValue:=4
else DataLenEdit.MaxValue :=3;
myTimer.Enabled:=True; myTimer.Enabled:=True;
AutoMoment:= GetTickCount;
RecolorMoment:= GetTickCount;
AnalogStart := trunc(AnaStart.Value); AnalogStart := trunc(AnaStart.Value);
DigitalStart:= trunc(DigiStart.Value); DigitalStart:= trunc(DigiStart.Value);
AnalogLength:= trunc(AnaLen.Value); AnalogLength:= trunc(AnaLen.Value);
@ -543,9 +526,7 @@ begin
AnaStartChange(Sender); AnaStartChange(Sender);
DigiStartChange(Sender); DigiStartChange(Sender);
FadeSpinChange(Sender); FadeSpinChange(Sender);
AutoTimeEditChange(Sender);
if Protokol=3 then DataLenEdit.MaxValue:=4
else DataLenEdit.MaxValue :=3;
DataLenEditChange(Sender); DataLenEditChange(Sender);
BitBut[0].Checked:=true; BitBut[0].Checked:=true;
@ -581,10 +562,6 @@ begin
exit; exit;
end; end;
if (what=0)
then Memo1.Lines.Add('Ok!')
else Memo1.Lines.Add('Well...');
inc(Count2);
If what=0 then If what=0 then
begin begin
@ -761,7 +738,7 @@ begin
WriteMessageCanID(1, CanStr); WriteMessageCanID(1, CanStr);
ReceiveCanData(mess); ReceiveCanData(mess,Numer);
end; end;
@ -792,24 +769,28 @@ begin
mess.Data[2] := 0; mess.Data[2] := 0;
mess.Surs := 1; mess.Surs := 1;
ArrCanMessageSend[0].m_dwID := RXadr; if Protokol=3 then
ArrCanMessageSend[0].m_bDLC := 8; begin
ArrCanMessageSend[0].m_dwID := RXadr + mess.Addr;
ArrCanMessageSend[0].m_bDLC := 2;
ArrCanMessageSend[0].m_bData[1] := HB(mess.Data[0]);
ArrCanMessageSend[0].m_bData[2] := LB(mess.Data[0]);
end else begin
ArrCanMessageSend[0].m_dwID := RXadr;
ArrCanMessageSend[0].m_bDLC := 8;
ArrCanMessageSend[0].m_bData[5] := mess.Mask shl 5;
ArrCanMessageSend[0].m_bData[6] := LB(mess.Addr);
ArrCanMessageSend[0].m_bData[8] := LB(mess.Data[0]);
ArrCanMessageSend[0].m_bData[7] := HB(mess.Data[0]);
ArrCanMessageSend[0].m_bData[2] := LB(mess.Data[1]);
ArrCanMessageSend[0].m_bData[1] := HB(mess.Data[1]);
ArrCanMessageSend[0].m_bData[4] := LB(mess.Data[2]);
ArrCanMessageSend[0].m_bData[3] := HB(mess.Data[2]);
end;
ArrCanMessageSend[0].m_bData[5] := mess.Mask shl 5; WriteMessageCanID(1, CanStr);
ArrCanMessageSend[0].m_bData[6] := LB(mess.Addr);
ArrCanMessageSend[0].m_bData[8] := LB(mess.Data[0]);
ArrCanMessageSend[0].m_bData[7] := HB(mess.Data[0]);
ArrCanMessageSend[0].m_bData[2] := LB(mess.Data[1]);
ArrCanMessageSend[0].m_bData[1] := HB(mess.Data[1]);
ArrCanMessageSend[0].m_bData[4] := LB(mess.Data[2]);
ArrCanMessageSend[0].m_bData[3] := HB(mess.Data[2]);
WriteMessageCanID(1, CanStr);
ReceiveCanData(mess); ReceiveCanData(mess,Numer);
end; end;
@ -1018,7 +999,7 @@ begin
NameEdit.setfocus; NameEdit.setfocus;
end; end;
procedure TModbusForm.ReceiveCanData(Mess: TMessag); procedure TModbusForm.ReceiveCanData(Mess: TMessag; dev:integer);
var var
Ananum, Diginum, Boxnum: integer; Ananum, Diginum, Boxnum: integer;
i, j, byte: integer; i, j, byte: integer;
@ -1239,15 +1220,11 @@ begin
end; end;
end; end;
procedure TModbusForm.AutoTimeEditChange(Sender: TObject); procedure TModbusForm.AutoTimeEditChange(Sender: TObject);
begin begin
if trunc(AutoTimeEdit.Value) = 0 Auto:=trunc(AutoTimeEdit.Value);
if Auto = 0
then AutoBox.Checked:= false; then AutoBox.Checked:= false;
AutoBox.Tag:= trunc(AutoTimeEdit.Value);
end; end;
end. end.

BIN
dbrtl70.bpl Normal file

Binary file not shown.

87
proj copy.ini Normal file
View File

@ -0,0 +1,87 @@
[Projects]
ProjectQua=3
ProjectNum=1
Project1=Áóęńčđ
Project2=ŃÝÄÁĚ
Project2=Ëĺäîęîë
[Áóęńčđ]
BaseAdr=$00318200
Use_0=1
Use_1=1
Use_2=1
Use_3=1
RSadr_0=1
RSadr_1=2
RSadr_2=3
RSadr_3=4
Name_0=ÓĘŃŃ ŃÁ
Name_1=ÁĘŃŃ ĂÄ
Name_2=ÓĘŃÂÝĎ
Name_3=Çŕäŕň÷čę
[ŃÝÄÁĚ]
BaseAdr=$1051020
Use_0=1
Use_1=1
Use_2=1
Use_3=1
Use_4=1
Use_5=1
Use_6=1
Use_8=1
Use_9=1
Use_10=1
Use_11=1
Use_12=1
Use_13=1
Use_14=1
Use_15=1
Name_0=ÓĘŃŃ ŃĘ1 ŃÁ1
Name_1=ÓĘŃŃ ŃĘ2 ŃÁ1
Name_2=ÓĘŃŃ ŃĘ3 ŃÁ1
Name_3=ÓĘŃŃ ŃĘ4 ŃÁ1
Name_4=ÓĘŃŃÂÝĎ ŃÁ1
Name_5=Çŕäŕň÷čę ŃÁ1
Name_6=ÁŇĐ ČŇÝŃ
Name_8=ÓĘŃŃ ŃĘ1 ŃÁ2
Name_9=ÓĘŃŃ ŃĘ2 ŃÁ2
Name_10=ÓĘŃŃ ŃĘ3 ŃÁ2
Name_11=ÓĘŃŃ ŃĘ4 ŃÁ2
Name_12=ÓĘŃŃÂÝĎ ŃÁ2
Name_13=Çŕäŕň÷čę ŃÁ2
Name_14=ÓĘŃŃ ÁÎČÍ
Name_15=ÓĘŃÂÝĎ ÁÎČÍ
[Ëĺäîęîë]
BaseAdr=$01CE000
Use_0=1
Use_1=1
Use_2=1
Use_3=1
Use_4=1
Use_5=1
Use_6=1
Use_8=1
Use_9=1
Use_10=1
Use_11=1
Name_0=ÓĘŃŃ ÁÂ1 Ď×1
Name_1=ÓĘŃŃ ÁÂ1 Ď×2
Name_2=ÓĘŃŃ ÁÂ1 Ď×1
Name_3=ÓĘŃŃ ÁÂ2 Ď×2
Name_4=ÓĘŃŃ ÁČ1 Ď×1
Name_5=ÓĘŃŃ ÁČ1 Ď×2
Name_6=ÓĘŃŃ ÁČ2 Ď×1
Name_8=ÓĘŃŃ ÁČ2 Ď×2
Name_9=ÓĘŃŃÂÝĎ1 Ď×1
Name_10=ÓĘŃŃÂÝĎ1 Ď×2
Name_11=ÓĘŃŃÂÝĎ2 Ď×1
Name_12=ÓĘŃŃÂÝĎ2 Ď×2

BIN
rtl70.bpl Normal file

Binary file not shown.

BIN
tee70.bpl Normal file

Binary file not shown.

BIN
vcl70.bpl Normal file

Binary file not shown.

BIN
vcldb70.bpl Normal file

Binary file not shown.

BIN
vcldbx70.bpl Normal file

Binary file not shown.

BIN
vclsmp70.bpl Normal file

Binary file not shown.

BIN
vclx70.bpl Normal file

Binary file not shown.