📄 com_send.pas
字号:
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 + -