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

📄 com_send.pas

📁 串口数据传输,用Tcomm或MSComm控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit com_send;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,  TComm1, ExtCtrls, ComCtrls, TZj_TComm, Mask,
  TZj_MaskEdit2;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Panel1: TPanel;
    laCom: TLabel;
    coComm: TComboBox;
    Comm1: TComm;
    Label1: TLabel;
    UpDown1: TUpDown;
    edadress: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Button5: TButton;
    lalen: TLabel;
    Button6: TButton;
    edchannel_1: TEdit;
    UpDown3: TUpDown;
    Label4: TLabel;
    Label5: TLabel;
    edset_1: TEdit;
    Button7: TButton;
    Button8: TButton;
    cb1: TCheckBox;
    cb2: TCheckBox;
    cb3: TCheckBox;
    cb4: TCheckBox;
    cb5: TCheckBox;
    cb6: TCheckBox;
    cb7: TCheckBox;
    cb8: TCheckBox;
    Button9: TButton;
    Button10: TButton;
    Label6: TLabel;
    edstrict: TEdit;
    Button13: TButton;
    Label12: TLabel;
    edhouse: TEdit;
    UpDown8: TUpDown;
    Label13: TLabel;
    edchannel_5: TEdit;
    UpDown9: TUpDown;
    TabSheet2: TTabSheet;
    Button4: TButton;
    Label2: TLabel;
    edchannel: TEdit;
    UpDown2: TUpDown;
    Label3: TLabel;
    edcount: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    Label15: TLabel;
    edangle: TEdit;
    Button11: TButton;
    Label16: TLabel;
    edchannel_6: TEdit;
    UpDown5: TUpDown;
    Button12: TButton;
    Label17: TLabel;
    edchannel_7: TEdit;
    UpDown7: TUpDown;
    Label18: TLabel;
    TabSheet5: TTabSheet;
    Button14: TButton;
    Label19: TLabel;
    edcount_1: TEdit;
    Label20: TLabel;
    edkey: TEdit;
    Button15: TButton;
    edcount_2: TEdit;
    Label21: TLabel;
    Button16: TButton;
    Label22: TLabel;
    edcount_3: TEdit;
    Button17: TButton;
    edroom: TMaskEdit2;
    Label23: TLabel;
    edstyle: TEdit;
    UpDown10: TUpDown;
    start_time: TDateTimePicker;
    end_time: TDateTimePicker;
    Label7: TLabel;
    edset_2: TEdit;
    Button18: TButton;
    Label8: TLabel;
    edchannel_8: TEdit;
    UpDown12: TUpDown;
    Label11: TLabel;
    edcount_4: TEdit;
    Button19: TButton;
    cb9: TCheckBox;
    cb10: TCheckBox;
    cb11: TCheckBox;
    cb12: TCheckBox;
    cb13: TCheckBox;
    cb14: TCheckBox;
    cb15: TCheckBox;
    cb16: TCheckBox;
    cb17: TCheckBox;
    cb18: TCheckBox;
    cb19: TCheckBox;
    cb20: TCheckBox;
    cb21: TCheckBox;
    cb22: TCheckBox;
    cb23: TCheckBox;
    cb24: TCheckBox;
    Button20: TButton;
    Button21: TButton;
    Button22: TButton;
    Label14: TLabel;
    edchannel_9: TEdit;
    UpDown4: TUpDown;
    Button23: TButton;
    Label24: TLabel;
    Button24: TButton;
    Button25: TButton;
    Panel2: TPanel;
    paecho_s: TPanel;
    Memo2: TMemo;
    Button26: TButton;
    Button27: TButton;
    Label25: TLabel;
    edchannel_10: TEdit;
    UpDown6: TUpDown;
    Label26: TLabel;
    edcount_7: TEdit;
    Button28: TButton;
    Label27: TLabel;
    edchannel_11: TEdit;
    UpDown11: TUpDown;
    Button29: TButton;
    Label28: TLabel;
    edchannel_12: TEdit;
    UpDown13: TUpDown;
    Button30: TButton;
    Label29: TLabel;
    edchannel_13: TEdit;
    UpDown14: TUpDown;
    rbopen: TRadioButton;
    rbclose: TRadioButton;
    rbopen1: TRadioButton;
    rbclose1: TRadioButton;
    procedure edadressKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure edcount_2KeyPress(Sender: TObject; var Key: Char);
    procedure Button19Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
    procedure Button23Click(Sender: TObject);
    procedure Button24Click(Sender: TObject);
    procedure Button25Click(Sender: TObject);
    procedure Button26Click(Sender: TObject);
    procedure Button27Click(Sender: TObject);
    procedure Button28Click(Sender: TObject);
    procedure Button29Click(Sender: TObject);
    procedure Button30Click(Sender: TObject);
  private
    procedure checksum;
    procedure Delay(msecs:integer);
    procedure outputdata;
    procedure clear;
    procedure allfalse;
    procedure alltrue;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  sendbuf:array[0..6] of byte; //送出数据时用的字节数组
  sendbuf1 : array[0..0] of byte;
  info_type : integer;  //信息类型
  receivebuf_first : array[0..24] of byte;
  check_channel : array[1..8] of TCheckBox;
  check_channel_16 : array[1..16] of TCheckBox;
  p:array[1..8] of integer;
  k:array[1..16] of integer;
  get_error_h : array[1..200] of string;

implementation
uses ZjE_BaseFunComm;

{$R *.dfm}
procedure TForm1.alltrue;
begin
  button1.Enabled := true;
  button2.Enabled := true;
  button3.Enabled := true;
  button4.Enabled := true;
  button5.Enabled := true;
  button6.Enabled := true;
  button7.Enabled := true;
  button8.Enabled := true;

  button9.Enabled := true;
  button10.Enabled := true;
  button11.Enabled := true;
  button12.Enabled := true;
  button13.Enabled := true;
  button14.Enabled := true;
  button15.Enabled := true;

  button16.Enabled := true;
  button17.Enabled := true;
  button18.Enabled := true;
  button19.Enabled := true;
  button20.Enabled := true;
  button21.Enabled := true;
  button22.Enabled := true;
  button23.Enabled := true;

  button24.Enabled := true;
  button25.Enabled := true;

  button26.Enabled := true;
  button27.Enabled := true;
  button28.Enabled := true;
  button29.Enabled := true;
  button30.Enabled := true;
end;

procedure TForm1.allfalse;
begin
  memo2.Lines.Clear;
  memo2.Lines.Add('  ');
  button1.Enabled := false;
  button2.Enabled := false;
  button3.Enabled := false;
  button4.Enabled := false;
  button5.Enabled := false;
  button6.Enabled := false;
  button7.Enabled := false;
  button8.Enabled := false;

  button9.Enabled := false;
  button10.Enabled := false;
  button11.Enabled := false;
  button12.Enabled := false;
  button13.Enabled := false;
  button14.Enabled := false;
  button15.Enabled := false;

  button16.Enabled := false;
  button17.Enabled := false;
  button18.Enabled := false;
  button19.Enabled := false;
  button20.Enabled := false;
  button21.Enabled := false;
  button22.Enabled := false;
  button23.Enabled := false;

  button24.Enabled := false;
  button25.Enabled := false;

  button26.Enabled := false;
  button27.Enabled := false;
  button28.Enabled := false;
  button29.Enabled := false;
  button30.Enabled := false;
end;
procedure TForm1.clear;
var i : integer;
begin
  for i:=0 to 19 do
  receivebuf_first[i] := $00;
end;

procedure TForm1.outputdata;
begin
    sendbuf1[0] := sendbuf[0];
    comm1.OutputByte(sendbuf1);
    delay(5);

    sendbuf1[0] := sendbuf[1];
    comm1.OutputByte(sendbuf1);
    delay(5);

    sendbuf1[0] := sendbuf[2];
    comm1.OutputByte(sendbuf1);
    delay(5);

    sendbuf1[0] := sendbuf[3];
    comm1.OutputByte(sendbuf1);
    delay(5);

    sendbuf1[0] := sendbuf[4];
    comm1.OutputByte(sendbuf1);
    delay(5);

    sendbuf1[0] := sendbuf[5] ;
    comm1.OutputByte(sendbuf1);
    delay(5);

    sendbuf1[0] := sendbuf[6] ;
    comm1.OutputByte(sendbuf1);
end;
procedure TForm1.Delay(msecs:integer);
var
  FirstTickCount:longint;
begin
  FirstTickCount:=GetTickCount;
  repeat
  Application.ProcessMessages;
  until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;

procedure TForm1.checksum;
var
  i:integer;
   n:integer;//除数
   sum:integer;//求和变量
   s : string;
   len : integer;
begin
  sum:=0;
  for i:=1 to 5 do
   sum:=sum+sendbuf[i];
  if sum <= 255 then  sendbuf[6]:= sum
  else if sum > 255 then
  begin
    s := inttohex(sum,2);
    len := length(s);
    s := '$' + copy(s,len-1,2);
    sendbuf[6] := strtoint(s);
  end;
end;

procedure TForm1.edadressKeyPress(Sender: TObject; var Key: Char);
var
   key_test : boolean;
begin
   key_test := (key<>#8) and  (key<>#13) and (key<#48) or (key>#57) ;
   if key_test then key := #0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i:integer;
   ComStr:String;
   hNewCommFile:   THandle;
   j : integer;
   k : integer;
   get_flag : boolean;
   SCommandInfo,SErrorInfo : string;
   quantity1,quantity2, quantity3,quantity4, quantity5,quantity6,quantity7,quantity8 : real;
begin
   allfalse;
   memo1.Clear;
   get_flag := ZjCommFun.get_single_board_quantity(cocomm.Text, strtoint(edhouse.Text), strtoint(edadress.Text),
                                                   quantity1,quantity2, quantity3,quantity4,
                                                   quantity5,quantity6,quantity7,quantity8,
                                                   SCommandInfo,SErrorInfo);

   if get_flag = true then
   begin
     memo1.Lines.Add('电量1:       ' +  floattostr(quantity1));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量2:       ' +  floattostr(quantity2));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量3:       ' +  floattostr(quantity3));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量4:       ' +  floattostr(quantity4));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量5:       ' +  floattostr(quantity5));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量6:       ' +  floattostr(quantity6));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量7:       ' +  floattostr(quantity7));
     memo1.Lines.Add('  ');

     memo1.Lines.Add('电量8:       ' +  floattostr(quantity8));
     memo1.Lines.Add('  ');

     memo2.Lines.Add('OK');
   end
   else  memo2.Lines.Add(SErrorInfo);

   alltrue;



{
  clear;
  try          // by hs
  if comm1.PortOpen = true then
    comm1.PortOpen := false;

  if coComm.text='com1' then
  begin
    comm1.CommPort:=pnCOM1;
  end;

  if coComm.text='com2' then
  begin
    comm1.CommPort:=pnCOM2;
  end;

  if coComm.text='com3' then
  begin
    comm1.CommPort:=pnCOM3;
  end;

  if coComm.text='com4' then
  begin
    comm1.CommPort:=pnCOM4;
  end;

  if coComm.text='com5' then
  begin
    comm1.CommPort:=pnCOM5;
  end;

 ComStr:=cocomm.Text;
 hNewCommFile := CreateFile( PChar(ComStr),
                             GENERIC_READ or GENERIC_WRITE,
                             0, {not shared}
                         //    nil, {no security ??}
                         //    OPEN_EXISTING,
                         //    0,{No Overlapped}
                        //     0 {template} );
 {
 if hNewCommFile = INVALID_HANDLE_VALUE then
 begin

⌨️ 快捷键说明

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