亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? term.pas

?? delphi開發(fā)的基于 gprsd數(shù)據(jù)采集程序
?? PAS
字號:
unit term;

interface
uses
    record_define,IdTCPClient,SysUtils,ADODB,Dialogs;
type
  TTerm = class
  private
  public
      TER_SEQUENCE:integer;
      gprs_id:integer;
      term_id:byte;
      app_id:integer;
      well_id:integer;
      summit_type:byte;
      collect_inteval:integer;
      packet_inteval:integer;
      remedy_count_max:byte;
      remedy_cound:byte;
      remedy_interval:integer;
      second_count:integer;
      obtained:boolean;
      worked:boolean;
      H10_data:TCommBlock;
      send_count:integer;
      receive_count:integer;
      all_respond_time:int64;
      start_time:TDateTime;
      end_Time:TDateTime;

      procedure compose_data;
      procedure check_second;
      procedure send_data;
      procedure save_data(data_time: TDatetime; data_count: integer;buf:array of char ;start_pos: byte;ADOStoredProc1: TADOStoredProc);
      procedure save_data2(data_time: TDatetime; data_count: integer;buf:array of char ;start_pos: byte;ADOStoredProc1: TADOStoredProc);
      procedure deal_data(buf:array of char;data_len:byte);
      procedure get_temp_data;
      procedure write_info_data;
  end;

implementation

uses Unit1,TcpMod, Unit3, Gprs_Interface;

{ TTerm }

procedure TTerm.check_second;
var
    str:string;
begin
    second_count:=second_count-(mainform.timer1.Interval div 1000);
    str:='odtained:'+booltostr(obtained)+' remedy_cound:'+inttostr(remedy_cound)+' remedy_count_max:'+inttostr(remedy_count_max);    

    if second_count<1 then
    begin
       compose_data;
       send_data;
       //self.get_temp_data;

       obtained:=false;
       if summit_type=1 then
           second_count:=collect_inteval
       else
           second_count:=packet_inteval;
       
    end

    else if (obtained=false) and(remedy_cound<remedy_count_max) and (second_count mod remedy_interval=0) then
    //else if (obtained=false) and (remedy_cound<remedy_count_max) then
    begin
        remedy_cound:=remedy_cound+1;
        compose_data;
        send_data;
        //self.get_temp_data;
    end;

end;

procedure TTerm.compose_data;
var
    time_str:string;
begin
    time_str:= FormatDateTime('yyyy-mm-dd hh:mm:ss', Now);
    with H10_data do
    begin
        data_long:=24;
        tcp_data[0]:=char($10);
        tcp_data[1]:=char(gprs_id);
        tcp_data[2]:=char(gprs_id shr 8);
        tcp_data[3]:=char(gprs_id shr 16);
        tcp_data[4]:=char(0);
        tcp_data[5]:=char(0);
        tcp_data[6]:=char(0);
        tcp_data[7]:=char(0);
        tcp_data[8]:=char(strtoint(copy(time_str,18,2)));
        tcp_data[9]:=char(strtoint(copy(time_str,15,2)));
        tcp_data[10]:=char(strtoint(copy(time_str,12,2)));
        tcp_data[11]:=char(strtoint(copy(time_str,9,2)));
        tcp_data[12]:=char(strtoint(copy(time_str,6,2)));
        tcp_data[13]:=char(strtoint(copy(time_str,3,2)));
        tcp_data[14]:=char(dayofweek(now));
        tcp_data[15]:=char(20);
        tcp_data[20]:=char(summit_type);
        tcp_data[21]:=char(term_id);
    end;
end;

procedure TTerm.deal_data(buf:array of char;data_len:byte);
var
   data_time:TDatetime;
   time_str:string;
   packet_count,item_count,i:byte;
begin
    receive_count:=receive_count+1;
    if summit_type=1 then
           all_respond_time:=all_respond_time+collect_inteval-second_count
       else
           all_respond_time:=all_respond_time+packet_inteval-second_count;

    //如果是空包則退出
    if buf[32]=char(0) then
        exit; 
    try
        time_str:='200'+inttostr(BCD_to_Hex(integer(buf[27])))+'-';
        time_str:=time_str+inttostr(BCD_to_Hex(integer(buf[26])))+'-';
        time_str:=time_str+inttostr(BCD_to_Hex(integer(buf[25])))+' ';
        time_str:=time_str+inttostr(BCD_to_Hex(integer(buf[24])))+':';
        time_str:=time_str+inttostr(BCD_to_Hex(integer(buf[23])))+':';
        time_str:=time_str+inttostr(BCD_to_Hex(integer(buf[22])));
    
        data_time:=strtodatetime(time_str);
    except
       write_text('轉(zhuǎn)換時間出錯 '+FormatDateTime('yyyy-mm-dd hh:mm:ss', Now));
       exit;
    end;

    {if data_len-integer(buf[32])>=33 then
    begin
       obtained:=true;
       remedy_cound:=0;
       item_count:=integer(buf[31]);
       packet_count:=integer(buf[32]) div (item_count*4);
       for i:=0 to packet_count-1 do
       begin
           self.save_data(data_time,item_count,buf,33+i*item_count*4,TcpModule.ADOStoredProc1);
           data_time:=data_time+collect_inteval/(24*60*60);
       end;
    end;}
    //040406添加 短距測試用
    if data_len-integer(buf[32])>=33 then
    begin
       //040301 app_id=7 短距測試用
       if self.app_id<>7 then
       begin
           obtained:=true;
           item_count:=integer(buf[31]);
           packet_count:=integer(buf[32]) div (item_count*4);
           for i:=0 to packet_count-1 do
           begin
               self.save_data(data_time,item_count,buf,33+i*item_count*4,TcpModule.ADOStoredProc1);
               data_time:=data_time+collect_inteval/(24*60*60);
           end;
       end
       else
       begin
           obtained:=true;
           item_count:=integer(buf[31]);
           packet_count:=integer(buf[32]) div (item_count*2);
           for i:=0 to packet_count-1 do
           begin
               self.save_data2(data_time,item_count,buf,33+i*item_count*2,TcpModule.ADOStoredProc1);
               data_time:=data_time+collect_inteval/(24*60*60);
           end;
       end;
    end;
end;

procedure TTerm.get_temp_data;
begin
    if self.gprs_id=$AAAAAA then
       begin
          compose_data;
          send_data;
       end;
end;

procedure TTerm.save_data(data_time: TDatetime; data_count: integer;
  buf:array of char ;start_pos: byte;ADOStoredProc1: TADOStoredProc);
var
    sql_str,item_str:string;
    i:byte;
    temp_data:integer;
    task_id:byte;
begin
    {sql_str:='select * from data_table where APP_ID=';
    sql_str:=sql_str+inttostr(app_id)+' and WELL_ID=';
    sql_str:=sql_str+inttostr(well_id)+' and COLLECT_TIME=to_date('+#39;
    sql_str:=sql_str+FormatDateTime('yyyy-mm-dd hh:mm:ss',data_time)+#39+','+#39+'YYYY-MM-DD HH24:MI:SS'+#39+')';
    write_text(sql_str);
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(sql_str);
    ADOQuery1.Open;
    if ADOQuery1.RecordCount=0 then
    begin
        ADOQuery1.Append;
        ADOQuery1.FieldByName('APP_ID').AsInteger:=app_id;
        ADOQuery1.FieldByName('WELL_ID').AsInteger:=WELL_id;
        ADOQuery1.FieldByName('COLLECT_TIME').AsDateTime:=data_time;
        ADOQuery1.FieldByName('DATA_COUNT').AsInteger:=data_count;
        for i:=1 to data_count do
        begin
            item_str:='DATA'+inttostr(i);
            move(buf[start_pos+(i-1)*4],temp_data,4);
            ADOQuery1.FieldByName(item_str).AsInteger:=temp_data;
        end;
        ADOQuery1.Post;
    end;
    ADOQuery1.Close;}
    //task_id:=integer(buf[0]);
    try
        //ADOStoredProc1.Close;
        //ADOStoredProc1.Prepared;
        ADOStoredProc1.Parameters.ParamByName('app_id').Value:=app_id;
        ADOStoredProc1.Parameters.ParamByName('well_id').Value:=well_id;
        ADOStoredProc1.Parameters.ParamByName('collect_time').Value:=data_time;
        ADOStoredProc1.Parameters.ParamByName('data_count').Value:=data_count;
        for i:=1 to data_count do
        begin
           item_str:='DATA'+inttostr(i);
           move(buf[start_pos+(i-1)*4],temp_data,4);
           ADOStoredProc1.Parameters.ParamByName(item_str).Value:=temp_data;
          //****************************************************************
          //added for opc Server  2004-11-13 by HF
          if Assigned(GPRS_Intf) then
          begin
            GPRS_Intf.UpdateTag(well_id,i,temp_data,data_time);
          end;
          //****************************************************************
        end;
        ADOStoredProc1.ExecProc;
    except
        write_text('寫入數(shù)據(jù)出錯 '+inttostr(app_id)+' '+FormatDateTime('yyyy-mm-dd hh:mm:ss', Now));
        ADOStoredProc1.Connection.Close;
        sleep(1000);
        ADOStoredProc1.Connection.Open;
        sleep(15000);
    end;
end;

procedure TTerm.send_data;
var
    str:string;
    buf: array [0..255] of char;
    data_len,i: byte;
begin
    //040518修改/////////////////////////////////////////
    {sleep(10);
    try
       if TcpModule.IdTCPClient1.Connected=true then
       begin
          TcpModule.IdTCPClient1.WriteBuffer (H10_data, SizeOf (H10_data), true);
          send_count:=send_count+1;
       end
       else
       begin
          TcpModule.Tcp_disconnect;
          sleep(1000);
          TcpModule.Tcp_connect;
          //showmessage('wait');
          sleep(1000);
          if TcpModule.IdTCPClient1.Connected=true then
          begin
              TcpModule.IdTCPClient1.WriteBuffer (H10_data, SizeOf (H10_data), true);
              send_count:=send_count+1;
          end;
       end;
    except
        str:= FormatDateTime('yyyy-mm-dd hh:mm:ss', Now);
        write_text('發(fā)送數(shù)據(jù)出錯  '+str);
    end; }
    ////////////////////////////////////////////////////////
    //040518添加
    data_len:=byte(H10_data.data_long);
    for i:=0 to data_len-1 do
    begin
        buf[i]:=H10_data.tcp_data[i];
    end;
    TcpModule.send_data(buf,data_len);
end;

procedure TTerm.write_info_data;
var
    str:string;
    ter_id:integer;
begin
    str:='select * from ter_info where rownum<1';
    TcpModule.ADOQuery1.Close;
    TcpModule.ADOQuery1.SQL.Clear;
    TcpModule.ADOQuery1.SQL.Add(str);
    TcpModule.ADOQuery1.Open;
    TcpModule.ADOQuery1.Append;
    TcpModule.ADOQuery1.FieldByName('TER_SEQUENCE').AsInteger:=TER_SEQUENCE;
    TcpModule.ADOQuery1.FieldByName('START_TIME').AsDateTime:=start_time;
    TcpModule.ADOQuery1.FieldByName('END_TIME').AsDateTime:=now;
    TcpModule.ADOQuery1.FieldByName('SEND_COUNT').AsInteger:=send_count;
    TcpModule.ADOQuery1.FieldByName('RECEIVE_COUNT').AsInteger:=receive_count;
    if receive_count<>0 then
        TcpModule.ADOQuery1.FieldByName('AVG_RESPOND_TIME').AsFloat:=all_respond_time/receive_count
    else
        TcpModule.ADOQuery1.FieldByName('AVG_RESPOND_TIME').AsFloat:=0;
    TcpModule.ADOQuery1.Post;
    TcpModule.ADOQuery1.Close;

    send_count:=0;
    receive_count:=0;
    all_respond_time:=0;
    start_time:=now;
end;


procedure TTerm.save_data2(data_time: TDatetime; data_count: integer;
  buf: array of char; start_pos: byte; ADOStoredProc1: TADOStoredProc);
var
    sql_str,item_str:string;
    i,j,pos:byte;
    temp_data:integer;
    task_id:byte;
begin
    //2004-02-13 調(diào)試短距無線終端加入
    //短距無線以2字節(jié)表示一個數(shù)據(jù),應(yīng)用號為80以后

    try
        ADOStoredProc1.Close;
        ADOStoredProc1.Prepared;
        ADOStoredProc1.Parameters.ParamByName('app_id').Value:=app_id;
        ADOStoredProc1.Parameters.ParamByName('well_id').Value:=well_id;
        ADOStoredProc1.Parameters.ParamByName('collect_time').Value:=data_time;
        ADOStoredProc1.Parameters.ParamByName('data_count').Value:=8;

        for i:=1 to 10 do
        begin
            pos:=start_pos+(i-1)*16;
            ADOStoredProc1.Parameters.ParamByName('app_id').Value:=app_id;
            ADOStoredProc1.Parameters.ParamByName('well_id').Value:=well_id+i-1;
            ADOStoredProc1.Parameters.ParamByName('collect_time').Value:=data_time;
            ADOStoredProc1.Parameters.ParamByName('data_count').Value:=8;
            for j:=1 to 8 do
            begin
               item_str:='DATA'+inttostr(j);
               move(buf[pos+(j-1)*2],temp_data,2);
               ADOStoredProc1.Parameters.ParamByName(item_str).Value:=temp_data;
            end;
            ADOStoredProc1.ExecProc;
        end;
    except
        write_text('寫入數(shù)據(jù)出錯 '+inttostr(app_id)+' '+FormatDateTime('yyyy-mm-dd hh:mm:ss', Now));
    end;
end;


end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久 | 欧美电影免费观看高清完整版在线 | 久久国产精品第一页| 亚洲欧美自拍偷拍色图| 精品国产污污免费网站入口 | 日本美女视频一区二区| 亚洲欧洲综合另类在线| 国产午夜精品福利| 日韩一级二级三级精品视频| 91丨九色丨国产丨porny| 韩国成人福利片在线播放| 亚洲18女电影在线观看| 国产精品护士白丝一区av| 精品福利一二区| 56国语精品自产拍在线观看| 在线观看亚洲专区| 91亚洲永久精品| 国产盗摄一区二区三区| 久久99国产精品麻豆| 日本va欧美va精品| 午夜精品久久久久久久| 亚洲国产精品久久艾草纯爱| 国产精品视频免费看| 久久―日本道色综合久久| 日韩欧美电影在线| 依依成人综合视频| 国产精品毛片高清在线完整版 | 中文字幕一区二区三区四区 | 日本伦理一区二区| av在线不卡电影| 成人av在线资源| 东方aⅴ免费观看久久av| 精品亚洲国内自在自线福利| 精品在线一区二区| 精品中文字幕一区二区| 精彩视频一区二区三区| 国产资源精品在线观看| 国模少妇一区二区三区| 国产一区二区三区黄视频 | 91麻豆精品国产| 欧美日韩一区小说| 欧美日韩高清影院| 日韩视频123| 亚洲精品一区二区在线观看| 26uuu成人网一区二区三区| 精品伦理精品一区| 国产亚洲精品中文字幕| 国产精品毛片大码女人| 亚洲乱码精品一二三四区日韩在线| 亚洲日本在线天堂| 亚洲午夜一二三区视频| 日本人妖一区二区| 国产精品亚洲视频| av中文字幕亚洲| 欧洲人成人精品| 91精品国产综合久久婷婷香蕉| 日韩视频在线你懂得| 久久久天堂av| 亚洲日本电影在线| 午夜欧美在线一二页| 韩国av一区二区三区| 成人一区二区三区视频在线观看| 成人福利在线看| 欧美午夜不卡在线观看免费| 欧美精品在线一区二区三区| 久久午夜羞羞影院免费观看| 日韩毛片一二三区| 偷拍一区二区三区四区| 国内精品久久久久影院薰衣草 | 日韩一区二区三区四区五区六区| 久久天天做天天爱综合色| 亚洲视频免费观看| 美女高潮久久久| 白白色 亚洲乱淫| 制服丝袜日韩国产| 国产亚洲一区二区三区在线观看 | 婷婷六月综合亚洲| 国产毛片一区二区| 欧美性受极品xxxx喷水| 久久久久久久久一| 亚洲第一成年网| 国产在线精品一区二区不卡了| 一本到三区不卡视频| 精品美女在线播放| 夜夜爽夜夜爽精品视频| 国产一区二区不卡在线| 欧洲亚洲国产日韩| 中文字幕不卡在线| 视频在线观看一区二区三区| 高清国产午夜精品久久久久久| 欧美久久久一区| 亚洲欧美综合网| 国产在线国偷精品产拍免费yy| 欧美少妇xxx| 国产精品女同一区二区三区| 男女男精品视频| 在线国产电影不卡| 中文字幕第一页久久| 日韩精品一二三区| 一本久久a久久免费精品不卡| 久久天堂av综合合色蜜桃网| 午夜精品久久久久| 91啦中文在线观看| 欧美国产1区2区| 国模无码大尺度一区二区三区| 欧美视频在线一区| 亚洲美女偷拍久久| 粉嫩13p一区二区三区| 久久影音资源网| 麻豆视频一区二区| 欧美人体做爰大胆视频| 亚洲免费观看高清完整版在线观看熊| 国产一区二区三区免费播放| 欧美精品1区2区3区| 一区二区欧美在线观看| av网站免费线看精品| 国产欧美精品一区| 国产91丝袜在线播放九色| 欧美大片一区二区| 美女一区二区久久| 欧美一级一区二区| 欧美aaa在线| 欧美一区二区三区免费大片| 丝袜脚交一区二区| 欧美日韩国产中文| 日韩专区一卡二卡| 5858s免费视频成人| 天天色综合成人网| 制服丝袜亚洲播放| 麻豆成人免费电影| 日韩视频在线你懂得| 久久99国产精品成人| 337p日本欧洲亚洲大胆色噜噜| 久久精品国产精品亚洲综合| 日韩精品最新网址| 黄色精品一二区| 久久亚洲一区二区三区四区| 国产成人亚洲综合a∨猫咪| 久久久亚洲精品一区二区三区| 国产一区二区福利视频| 国产精品欧美经典| 色综合亚洲欧洲| 亚洲国产一区视频| 在线成人免费视频| 久久精品国产一区二区| 久久久国产午夜精品 | 精品久久久网站| 国产精品一区二区91| 中文字幕一区av| 精品视频全国免费看| 老司机精品视频在线| 欧美激情中文不卡| 一本到不卡精品视频在线观看| 亚洲成人黄色影院| 日韩欧美成人午夜| 高清成人在线观看| 亚洲一区视频在线| 日韩欧美一区中文| 成人一区在线观看| 亚洲成a人v欧美综合天堂| 欧美电影精品一区二区 | 日韩一区二区三| 国产精品中文字幕日韩精品| 中文字幕在线播放不卡一区| 欧美日韩亚洲丝袜制服| 蜜臀av一区二区在线免费观看| 久久精品亚洲一区二区三区浴池 | 亚洲成人免费影院| 精品久久国产老人久久综合| 99久久夜色精品国产网站| 午夜精品久久久久久久99水蜜桃| 久久久久久影视| 色94色欧美sute亚洲13| 久久精品国产亚洲高清剧情介绍 | 伊人一区二区三区| 精品日本一线二线三线不卡 | 久久九九久久九九| 一本久久精品一区二区| 久久99国产精品免费网站| 亚洲精品视频在线观看网站| 日韩欧美在线网站| 色狠狠色狠狠综合| 国产一区二区久久| 五月天久久比比资源色| 国产精品久久久久久久浪潮网站| 在线不卡中文字幕| 91美女精品福利| 国产一区91精品张津瑜| 五月婷婷另类国产| 中文字幕在线一区二区三区| 欧美日韩国产高清一区二区 | 国产精品久久久久久久裸模| 欧美一区二区福利在线| 一本高清dvd不卡在线观看| 国产一区二区三区最好精华液| 亚洲综合激情另类小说区| 欧美韩国日本一区| 精品国产欧美一区二区| 欧美日韩日日骚| 色诱亚洲精品久久久久久|