📄 termset.pas
字号:
unit TermSet;
interface
uses
Contnrs,record_define,term,ComCtrls,SysUtils;
type
TTermSet = class
public
members:TObjectList;
constructor Create;
destructor Destroy;
procedure init;
procedure check_task;
procedure deal_data(buf:array of char;data_len:byte);
function find_term(gprs_id:integer;term_id:byte):TTerm;
end;
implementation
uses TcpMod, Unit1, Unit3, Gprs_Interface;
{ TTermSet }
procedure TTermSet.check_task;
var
i:integer;
begin
for i:=0 to members.Count-1 do
Tterm(self.members.Items[i]).check_second;
end;
constructor TTermSet.Create;
begin
members:=TObjectList.Create(true);
end;
destructor TTermSet.Destroy;
begin
members.Destroy;
end;
procedure TTermSet.init;
var
sql_str,str:string;
i,j:integer;
term_obj:TTerm;
//listitem:TListItem;
begin
//读入所有终端
members.Clear;
sql_str:='select * from vterminfo';
with TcpModule do
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql_str);
ADOQuery1.Open;
ADOQuery1.First;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
term_obj:=TTerm.Create;
term_obj.TER_SEQUENCE:=ADOQuery1.FieldByName('TER_SEQUENCE').AsInteger;
term_obj.gprs_id:=ADOQuery1.FieldByName('GPRS_ID').AsInteger;
term_obj.term_id:=ADOQuery1.FieldByName('TER_ID').AsInteger;
term_obj.app_id:=ADOQuery1.FieldByName('APP_ID').AsInteger;
term_obj.well_id:=ADOQuery1.FieldByName('WELL_ID').AsInteger;
term_obj.summit_type:=ADOQuery1.FieldByName('SUMMIT_TYPE').AsInteger;
term_obj.collect_inteval:=ADOQuery1.FieldByName('COLLECT_INTERVAL').AsInteger;
term_obj.packet_inteval:=ADOQuery1.FieldByName('SUMMIT_INTERVAL').AsInteger;
term_obj.remedy_count_max:=ADOQuery1.FieldByName('REMEDY_COUNT').AsInteger;
if term_obj.summit_type=TEMP_SUMMIT then
term_obj.second_count:=term_obj.collect_inteval
else
term_obj.second_count:=term_obj.packet_inteval;
term_obj.remedy_cound:=0;
term_obj.remedy_interval:=REMEDY_SECOND;
term_obj.send_count:=0;
term_obj.receive_count:=0;
term_obj.all_respond_time:=0;
term_obj.start_time:=now;
members.Add(term_obj);
//****************************************************************
//added for opc Server 2004-11-13 by HF
if Assigned(GPRS_Intf) then
begin
for j:=1 to 36 do
GPRS_Intf.AddTag(term_obj.well_id,j);
end;
//****************************************************************
ADOQuery1.Next;
end;
ADOQuery1.Close;
//****************************************************************
//added for opc Server 2004-11-13 by HF
if Assigned(GPRS_Intf) then
begin
GPRS_Intf.ActiveOPC;
end;
//****************************************************************
//form3.add_term_to_listview;
end;
end;
procedure TTermSet.deal_data(buf:array of char;data_len:byte);
var
gprs_id:int64;
term_id:byte;
task_id:byte;
term_obj:TTerm;
begin
task_id:=integer(buf[0]);
gprs_id:=integer(buf[1]);
gprs_id:=gprs_id+integer(buf[2]) shl 8;
gprs_id:=gprs_id+integer(buf[3]) shl 16;
term_id:=integer(buf[28]);
case task_id of
$90:
begin
term_obj:=self.find_term(gprs_id,term_id);
if (term_obj<>nil) and (integer(buf[7])=0) then
term_obj.deal_data(buf,data_len);
end;
$93:
begin
term_obj:=self.find_term(gprs_id,term_id);
if (term_obj<>nil) and (integer(buf[7])=0) then
term_obj.deal_data(buf,data_len);
end;
end;
end;
function TTermSet.find_term(gprs_id: integer; term_id: byte): TTerm;
var
i:integer;
term_obj:TTerm;
begin
for i:=0 to members.Count-1 do
begin
term_obj:=TTerm(members.Items[i]);
if (term_obj.gprs_id=gprs_id) and (term_obj.term_id=term_id) then
begin
result:=term_obj;
exit;
end;
end;
result:=nil;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -