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

📄 unit3.pas

📁 tcp/ip通讯程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    //构造上位机报文

    SetLength(mByteAry,100);

    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    Send_len :=  Send_len+1;

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := $01;   //命令

    GetMem(Buffer,10);
    len := strlen(pchar(SETADDR.Text));
    mByteAry[2] := 5+len;       //长度

    strcopy(buffer,pchar(SETADDR.Text));  //设备地址
    for i:=0 to len-1 do
    begin
          Send_len := Send_len+1;
          mByteAry[Send_len]:=byte((Buffer+i)^);
    end;
    FreeMem(Buffer);

    len := strlen(pchar(mByteAry));
    mByteAry[len] := CalCheck(mByteAry,len);
    mByteAry[len+1] :=$0;

    MSComm.Output :=mByteAry;   //发送命令
end;

procedure TInit_Machine.Button5Click(Sender: TObject);
var
    len:byte;
    temp_port,temp_time:word;
    mByteAry: array of byte;
    Send_len:byte;
    temp1,temp2:byte;
begin
    //构造上位机报文

    SetLength(mByteAry,50);    //置发送缓冲区为此,发送时直接发送50

    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 5+8;  //长度

    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$02;  //命令

    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=byte(strToint(IP1.Text));//ip地址
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=byte(strToint(IP2.Text));
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=byte(strToint(IP3.Text));
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=byte(strToint(IP4.Text));

    temp_port:=strToint(PORTNUM.Text);       //port
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=(temp_port shr 8) and $ff;
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=temp_port and $ff;

    temp_time := strToint(time_initer.Text); //时间间隔
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=(temp_time shr 8) and $ff;
    temp1:= mByteAry[Send_len];
    //if temp1=0 then                   //调整,如果是零,串口将不予发送
    //       mByteAry[Send_len]:=$ff;
    Send_len :=  Send_len+1;
    mByteAry[Send_len]:=temp_time and $ff;

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := CalCheck(mByteAry,Send_len);

    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$0;

    MSComm.Output :=mByteAry;   //发送命令

end;

procedure TInit_Machine.Button7Click(Sender: TObject);
var
    len,i:byte;
    mByteAry: array of byte;
    buffer:pchar;

    Send_len:byte;
begin
    //构造上位机报文

    SetLength(mByteAry,100);

    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    Send_len :=  Send_len+1;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := $03; //命令

    GetMem(Buffer,30);
    len := strlen(pchar(APNSET.Text));
    mByteAry[2] := 5+len;     // 长度

    strcopy(buffer,pchar(APNSET.Text));  //APN
    for i:=0 to len do
    begin
          Send_len := Send_len+1;
          mByteAry[Send_len]:=byte((Buffer+i)^);
    end;
    FreeMem(Buffer);

    len := strlen(pchar(mByteAry));
    mByteAry[len] := CalCheck(mByteAry,len);
    mByteAry[len+1] :=$0;

    MSComm.Output :=mByteAry;   //发送命令
end;

procedure TInit_Machine.FormCreate(Sender: TObject);
begin
        Button3.Enabled:=FALSE;
        Button5.Enabled:=FALSE;
        DTU_CLICK.Enabled:=FALSE;
end;

procedure TInit_Machine.DTU_CLICKClick(Sender: TObject);
var
    len:byte;
    mByteAry: array of byte;
    Send_len:byte;
    i:byte;
    buffer:pchar;
begin
    //构造上位机报文

    SetLength(mByteAry,250);    //置发送缓冲区为此,发送时直接发送50
    len := strlen(pchar(memo_text.Text));
    if len=0 then
       exit;

    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 5+len;  //长度

    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$50;  //命令

    GetMem(Buffer,255);
    strcopy(buffer,pchar(memo_text.Text));
    for i:=0 to len-1 do
    begin
          Send_len := Send_len+1;
          mByteAry[Send_len]:=byte((Buffer+i)^);
    end;
    FreeMem(Buffer);

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := CalCheck(mByteAry,Send_len);
    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$0;

    MSComm.Output :=mByteAry;   //发送命令
end;

procedure TInit_Machine.send_smsClick(Sender: TObject);
var
    len:byte;
    mByteAry: array of byte;
    Send_len:byte;
    i:byte;
    buffer:pchar;
begin
    //构造上位机报文
    SetLength(mByteAry,250);    //置发送缓冲区为此,发送时直接发送50
    len := strlen(pchar(sms_content.Text));
    if (len=0) or (len>50) then
    begin
       ShowMessage('输入错误');
       exit;
    end;
    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 5+len;  //长度

    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$80;  //命令

    GetMem(Buffer,255);
    strcopy(buffer,pchar(sms_content.Text));
    for i:=0 to len-1 do
    begin
          Send_len := Send_len+1;
          mByteAry[Send_len]:=byte((Buffer+i)^);
    end;
    FreeMem(Buffer);

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := CalCheck(mByteAry,Send_len);
    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$0;

    MSComm.Output :=mByteAry;   //发送命令
end;

procedure TInit_Machine.phone_setClick(Sender: TObject);
var
    len:byte;
    mByteAry: array of byte;
    Send_len:byte;
    i:byte;
    buffer:pchar;
begin
    //构造上位机报文
    SetLength(mByteAry,250);    //置发送缓冲区为此,发送时直接发送50
   
    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    GetMem(Buffer,255);
    strcopy(buffer,pchar(phon1.Text));
    strcat(buffer,pchar(phon2.Text));
    strcat(buffer,pchar(phon3.Text));
    strcat(buffer,pchar(phon4.Text));
    strcat(buffer,pchar(phon5.Text));
    strcat(buffer,pchar(phon6.Text));
    strcat(buffer,pchar(phon7.Text));
    strcat(buffer,pchar(phon8.Text));
    len := strlen(buffer);

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 5+len;  //长度

    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$A0;  //命令


    if (len=0) then
    begin
           ShowMessage('输入错误');
           exit;
    end;

    for i:=0 to len-1 do
    begin
        Send_len := Send_len+1;
        mByteAry[Send_len]:=byte((Buffer+i)^);
    end;
    FreeMem(Buffer);

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := CalCheck(mByteAry,Send_len);
    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$0;

    MSComm.Output :=mByteAry;   //发送命令
end;

procedure TInit_Machine.setcentClick(Sender: TObject);
var
    len,i:byte;
    mByteAry: array of byte;
    buffer:pchar;
    Send_len:byte;
begin
 //构造上位机报文

    SetLength(mByteAry,100);

    Send_len:=0;
    mByteAry[Send_len] := 36;
    Send_len :=  Send_len+1;
    mByteAry[Send_len] := 36;

    Send_len :=  Send_len+1;
    len := strlen(pchar(center_list.Text));
    mByteAry[Send_len] := 5+len;       //长度

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := $A1;   //命令

    GetMem(Buffer,50);
    strcopy(buffer,pchar(center_list.Text));
    for i:=0 to len-1 do
    begin
          Send_len := Send_len+1;
          mByteAry[Send_len]:=byte((Buffer+i)^);
    end;
    FreeMem(Buffer);

    Send_len :=  Send_len+1;
    mByteAry[Send_len] := CalCheck(mByteAry,Send_len);
    Send_len :=  Send_len+1;
    mByteAry[Send_len] :=$0;

    MSComm.Output :=mByteAry;   //发送命令


end;

end.


⌨️ 快捷键说明

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