⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hrunit1.~pas

📁 delphi开发的抄表数据管理系统
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
   ch:char;
begin
 try
    assignfile(FromF,extractfilepath(application.ExeName) + 'Data\cIM_DA.dbf');
    reset(FromF,1);
    if (FileSize(FromF) mod 52 <>0) then
    begin
        messagedlg('上传抄表数据文件大小有误,操作被终止!',mterror,[mbok],0);
        closefile(fromf);
        exit;
    end;
    if (FileSize(FromF)=0) then
    begin
        messagedlg('上传抄表数据文件是空文件,操作被终止!',mterror,[mbok],0);
        closefile(fromf);
        exit;
    end;
    //while not eof(fnum1) do
    //begin
    j:=0;
    repeat
        application.ProcessMessages;
        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
        inc(j);
        application.ProcessMessages;
        screen.Cursors[crMyCursor]:=LoadCursorFromFile('bgwork.ani');
        screen.Cursor :=crMyCursor;
        i:=0;
        temp:='';
        repeat
            temp:=temp+buf[i];
            inc(i);
        until  i=sizeof(buf);
        if midbstr(temp,1,1)='I' then
            tempstr[1]:='ICTU'                //设备类型
        else if midbstr(temp,1,1)='M' then
            tempstr[1]:='MCTU'
        else if midbstr(temp,1,1)='W' then
            tempstr[1]:='WCTU'
        else if midbstr(temp,1,1)='A' then
            tempstr[1]:='ARF';
        {if midbstr(temp,1,1)='M' then
            tempstr[2]:=leftbstr(trim(midbstr(temp,2,16)),length(trim(midbstr(temp,2,16)))-1)+rightbstr(trim(midbstr(temp,2,16)),1)
        else
            tempstr[2]:=midbstr(temp,2,16);//注册号}
        tempstr[2]:=trim(leftbstr(trim(midbstr(temp,2,16)),length(trim(midbstr(temp,2,16)))-1))+rightbstr(trim(midbstr(temp,2,16)),1);
        tempstr[3]:=extract(midbstr(temp,18,8));//设备ID号
        //tempstr[3]:=midbstr(temp,18,8);
        tempfj:=midbstr(temp,26,1);
        if tempfj='D' then
            dangl:=0.01
        else if tempfj='E' then
            dangl:=0.1
        else if tempfj='F' then
            dangl:=1.0
        else if tempfj='0' then
            dangl:=10
        else if tempfj='1' then
            dangl:=100
        else
            dangl:=0;
        tempstr[4]:=floattostr(dangl * 0.1); //计数轮
        tempfj:=midbstr(temp,27,1);
        if tempfj='Y' then tempstr[5]:='000';
        if tempfj='N' then tempstr[5]:='999';
        if tempfj='Z' then tempstr[5]:='100';
        if tempfj='X' then tempstr[5]:='111';
        if tempfj='A' then tempstr[5]:='109';
        if tempfj='B' then tempstr[5]:='110';
        if tempfj='C' then tempstr[5]:='108';
        if tempfj='D' then tempstr[5]:='107';
        if tempfj='E' then tempstr[5]:='888';
        if tempfj='F' then tempstr[5]:='114';
        if tempfj='G' then tempstr[5]:='106';
        if tempfj='H' then tempstr[5]:='103';
        tempstr[6]:=formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime(midbstr(temp,28,2)+'-'+midbstr(temp,30,2)+'-'+midbstr(temp,32,2)+StringOfChar(chr(32),1)+midbstr(temp,34,2)+':00:01'));         //设备上传时间
        if tempstr[5]='999' then
        begin
            tempstr[7]:='未知';
            tempstr[8]:='未知';
            tempstr[9]:='未知';
            tempstr[10]:='未知';
            tempstr[11]:='未知';
            tempstr[12]:='未知';
            tempstr[13]:='未知';
            continue;
        end;
        //*********
        //简明信息(无线表)&电池电压(红外表)
        if (midbstr(temp,1,1)='I') or (midbstr(temp,1,1)='M') then
        begin
            if (midbstr(temp,27,1)='Z') or (midbstr(temp,27,1)='X') or (midbstr(temp,27,1)='A') or (midbstr(temp,27,1)='B') or (midbstr(temp,27,1)='C') or (midbstr(temp,27,1)='D') or (midbstr(temp,27,1)='F') or (midbstr(temp,27,1)='G') or (midbstr(temp,27,1)='H') then
                 tempstr[7]:='未知'
            else
            begin
                if inttostr((ord(Midbstr(temp, 37, 1)[1]) mod 2) div 1)='0' then
                    tempstr[7]:='正常'
                else if inttostr((ord(Midbstr(temp, 37, 1)[1]) mod 2) div 1)='1' then
                    tempstr[7]:='低压';
            end;
        end
        else if (midbstr(temp,1,1)='A') or (midbstr(temp,1,1)='W') then
        begin
            if (midbstr(temp,27,1)='Z') or (midbstr(temp,27,1)='X') or (midbstr(temp,27,1)='A') or (midbstr(temp,27,1)='B') or (midbstr(temp,27,1)='C') or (midbstr(temp,27,1)='D') or (midbstr(temp,27,1)='F') or (midbstr(temp,27,1)='G') or (midbstr(temp,27,1)='H') then
                 tempstr[7]:='未知'
            else
            begin
                if inttostr(ord(Midbstr(temp, 37, 1)[1]) div 128)='0' then
                    tempstr[7]:='正常'
                else if inttostr(ord(Midbstr(temp, 22, 1)[1]) div 128)='1' then
                    tempstr[7]:='低压';
            end;
        end;
        //*********
        {showmessage(inttostr(length(temp)));
        showmessage(inttostr(ord(Midbstr(temp, 37, 1)[1])*256*256*256));
        showmessage(inttostr(ord(Midbstr(temp, 38, 1)[1])*256*256));
        showmessage(inttostr(ord(Midbstr(temp, 39, 1)[1])*256));
        showmessage(inttostr(ord(Midbstr(temp, 40, 1)[1])));}
        tempfj:=round((ord(Midbstr(temp, 37, 1)[1])*256*256*256+ord(Midbstr(temp, 38, 1)[1])*256*256+ord(Midbstr(temp, 39, 1)[1])*256+ord(Midbstr(temp, 40, 1)[1]))*dangl/2);
        if dangl < 10 then
            tempstr[8]:=tempfj
        else
            tempstr[8]:=(tempfj div 10)* 10;  //本期指数
        if (midbstr(temp,27,1)='Z') or (midbstr(temp,27,1)='X') or (midbstr(temp,27,1)='A') or (midbstr(temp,27,1)='B') or (midbstr(temp,27,1)='C') or (midbstr(temp,27,1)='D') or (midbstr(temp,27,1)='F') or (midbstr(temp,27,1)='G') or (midbstr(temp,27,1)='H') then
        begin
            tempfj:=round((ord(Midbstr(temp, 41, 1)[1])*256*256+ord(Midbstr(temp, 42, 1)[1])*256+ord(Midbstr(temp, 43, 1)[1])));
            if dangl < 10 then
            begin
                if (midbstr(temp,27,1)='Z') or (midbstr(temp,27,1)='X') or (midbstr(temp,27,1)='F') or (midbstr(temp,27,1)='G') or (midbstr(temp,27,1)='H') then
                begin
                    tempstr[9]:=tempfj;     //人工读数
                    tempstr[10]:='0';       //估收水量
                end
                else if (midbstr(temp,27,1)='A') or (midbstr(temp,27,1)='B') or (midbstr(temp,27,1)='C') or (midbstr(temp,27,1)='D') then
                begin
                    tempstr[9]:='0';        //人工读数
                    tempstr[10]:=tempfj;    //估收水量
                end;
            end
            else
            begin
                if (midbstr(temp,27,1)='Z') or (midbstr(temp,27,1)='X') or (midbstr(temp,27,1)='F') or (midbstr(temp,27,1)='G') or (midbstr(temp,27,1)='H') then
                begin
                    tempstr[9]:=(tempfj div 10)* 10;  //人工读数
                    tempstr[10]:='0';                 //估收水量
                end
                else if (midbstr(temp,27,1)='A') or (midbstr(temp,27,1)='B') or (midbstr(temp,27,1)='C') or (midbstr(temp,27,1)='D') then
                begin
                    tempstr[9]:='0';                     //人工读数
                    tempstr[10]:=(tempfj div 10)* 10;    //估收水量

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -