📄 singzm.~pas
字号:
unit SingZm;
interface
uses
windows, Dialogs, RzLstBox, RzChkLst, RzButton, RzRadChk, Grids, forms,ConstName,
AdvGrid, StdCtrls, RzStatus, RzPanel, VrControls, VrHotImage, VrGradient,Sysutils,
RXSpin, RzCmboBx, ExtCtrls, Buttons, Controls, RzLabel, Classes, RzSplit,Cvcode,
OoMisc, AdPort,messages;
type
TFunctionCode = ( CommandMode,
ChangeDataTimeMode,
TestSignMode );
TCommandName = ( CmdCls,
CmdClipWindow,
CmdText,
CmdTime,
CmdDate,
CmdAlarm,
CmdDelay,
CmdEffect,
CmdEnd );
TCommandData = Record
X1,X2,Y1,Y2:Word;
Num,Clear_Mode,Effect_Mode:Byte;
Style,Gap,Color,Mode,Speed,Position:Byte;
TextString:String;
Wait_Time,DelayTime:Word;
end;
TDateTimeData = Record
Year,
Month,
Data,
Data_of_Week,
Hour,
Minute,
Second : Byte;
end;
TParametersData = Record
Display_command : TCommandName;
Display_CmdDate : TCommandData;
Display_DateTime : TDateTimeData;
end;
TResultDate = Record
Count : integer;
SendData : array of Byte;
ChkSum : Word;
end;
TIDn = Array [0..63] of Byte;
TParameters = Array of TParametersData;
type
TForm1 = class(TForm)
RzSizePanel1: TRzSizePanel;
RzGroupBox: TRzGroupBox;
RadioGroup1: TRadioGroup;
RzComboBox1: TRzComboBox;
RzLabel1: TRzLabel;
RzLabel2: TRzLabel;
RxSpinEdit1: TRxSpinEdit;
RzMenuToolbarButton1: TRzMenuToolbarButton;
RzStatusBar1: TRzStatusBar;
RzClockStatus1: TRzClockStatus;
RzMarqueeStatus1: TRzMarqueeStatus;
RzPanel1: TRzPanel;
RzPanel2: TRzPanel;
ListBox1: TListBox;
SendStringGrid1: TAdvStringGrid;
RzMenuToolbarButton2: TRzMenuToolbarButton;
RzPanel3: TRzPanel;
VrGradient1: TVrGradient;
VrHotImage1: TVrHotImage;
RzMenuToolbarButton3: TRzMenuToolbarButton;
RzGroupBox1: TRzGroupBox;
RzLabel3: TRzLabel;
RzLabel4: TRzLabel;
RzCheckBox1: TRzCheckBox;
RzComboBox2: TRzComboBox;
RxSpinEdit2: TRxSpinEdit;
RadioGroup2: TRadioGroup;
RzPanel4: TRzPanel;
RadioGroup3: TRadioGroup;
RzMenuToolbarButton4: TRzMenuToolbarButton;
RzMenuToolbarButton5: TRzMenuToolbarButton;
RzMenuToolbarButton6: TRzMenuToolbarButton;
RzMenuToolbarButton7: TRzMenuToolbarButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
RzLabel5: TRzLabel;
RzButton1: TRzButton;
RzLabel6: TRzLabel;
RxSpinEdit3: TRxSpinEdit;
RzCheckList1: TRzCheckList;
RzButton2: TRzButton;
SignComPort: TApdComPort;
RzLabel7: TRzLabel;
RxSpinEdit4: TRxSpinEdit;
RzBitBtn1: TRzBitBtn;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure SendStringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
procedure VrHotImage1Click(Sender: TObject);
procedure RadioGroup3Click(Sender: TObject);
procedure RzButton1Click(Sender: TObject);
procedure RzMenuToolbarButton6Click(Sender: TObject);
procedure RzMenuToolbarButton7Click(Sender: TObject);
procedure RzMenuToolbarButton1Click(Sender: TObject);
procedure RzMenuToolbarButton2Click(Sender: TObject);
procedure RzMenuToolbarButton3Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure RxSpinEdit3Exit(Sender: TObject);
procedure RxSpinEdit3KeyPress(Sender: TObject; var Key: Char);
procedure RzComboBox2KeyPress(Sender: TObject; var Key: Char);
procedure RzButton2Click(Sender: TObject);
procedure RzMenuToolbarButton4Click(Sender: TObject);
procedure RzMenuToolbarButton5Click(Sender: TObject);
procedure RzBitBtn1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
procedure PostCommand( Start_Code,
Id_length:Byte;
Id :TIDn;
Function_Code:TFunctionCode;
Parameters:TParameters );
procedure GetSignParameters(S:string; var Param:TParameters;Big5:boolean);
{ Private declarations }
public
OutLine:integer;
BlGbOrBig5:boolean;
BlOpenPort:Boolean;
{ Public declarations }
end;
var
Form1 : TForm1;
SystemOs : Integer;
implementation
{$R *.DFM}
procedure Tform1.PostCommand( Start_Code,
Id_length:Byte;
Id :TIDn;
Function_Code:TFunctionCode;
Parameters:TParameters );
Var
Parameters_Count,Id_Count,Count,Data_Length : Word;
i,n,j,Idn_Count:integer; ChkSum:word;
SendData,SentPortData: Array of Byte;
// Sum:Word;
begin
Parameters_Count := 0 ;
//----- GetIdCount ----
If Id_length = $00 then
Idn_Count := 2 else
Idn_Count := Id_length;
//-------- GetCount ---------
Data_Length := 0;
For i := 0 to length(Parameters) - 1 do
begin
case Parameters[i].Display_command of
CmdCls : Data_Length := Data_Length + 1;
CmdClipWindow : Data_Length := Data_Length + 10;
CmdText : Data_Length := Data_Length + 8 +
length(Parameters[i].Display_CmdDate.TextString);
CmdTime : Data_Length := Data_Length + 9;
CmdDate : Data_Length := Data_Length + 7;
CmdAlarm : Data_Length := Data_Length + 2;
CmdDelay : Data_Length := Data_Length + 3;
CmdEffect : Data_Length := Data_Length + 3;
CmdEnd : Data_Length := Data_Length + 1;
end;
end;
//-------GetParametersCount----------
case Function_Code of
CommandMode : Parameters_Count := 2 + Data_Length;
ChangeDataTimeMode : ;
TestSignMode : ;
end;
//-------GetDataCount----------------
Count := 1 + // Strat_code ;
1 + // Id_length ;
Idn_Count + // Idn_Count;
1 + // Function_Code;
Parameters_Count + // Parameters_Count;
1; // ChkSum;
//-------GetDataArray & ChkSum --------------
ChkSum := 0;
n := 1;
SetLength(SendData,Count);
SendData[0]:= Start_Code;
SendData[1]:= Id_length ;
if Id_length = $00 then
begin
SendData[2]:= Id[0];
SendData[3]:= Id[1];
n := 3;
end else begin
for i := 0 to Id_length - 1 do
begin
if Id[i] <> Null then
begin
inc(n,1);
SendData[n]:= Id[i];
end;
end;
end;
n := n + 1 ;
case Function_Code of
CommandMode: begin
SendData[n] := $00; inc(n,1);
SendData[n] := Lo(Data_Length);inc(n,1);
SendData[n] := Hi(Data_Length);inc(n,1);
for I := 0 to length(Parameters) - 1 do
begin
case Parameters[i].Display_command of
CmdCls : begin
SendData[n] := $01;
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
CmdClipWindow : begin
SendData[n] := $02;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Lo(Parameters[i].Display_CmdDate.X1);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Hi(Parameters[i].Display_CmdDate.X1);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Lo(Parameters[i].Display_CmdDate.Y1);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Hi(Parameters[i].Display_CmdDate.Y1);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Lo(Parameters[i].Display_CmdDate.x2);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Hi(Parameters[i].Display_CmdDate.X2);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Lo(Parameters[i].Display_CmdDate.Y2);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Hi(Parameters[i].Display_CmdDate.Y2);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Clear_Mode;
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
CmdText : begin
SendData[n] := $03;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Style;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Gap;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Color;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Mode;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Speed;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Position;
ChkSum := ChkSum + SendData[n]; inc(n,1);
for j := 0 to length(parameters[i].Display_CmdDate.TextString) - 1 do
begin
SendData[n] := byte(parameters[i].Display_CmdDate.TextString[j+1]);
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
SendData[n] := $00;
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
CmdTime : begin
SendData[n] := $04;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Lo(Parameters[i].Display_CmdDate.Wait_Time);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Hi(Parameters[i].Display_CmdDate.Wait_Time);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Style;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Gap;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Color;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Mode;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Speed;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Position;
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
CmdDate : begin
SendData[n] := $05;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Style;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Gap;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Color;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Mode;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Speed;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Position;
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
CmdAlarm : begin
SendData[n] := $06;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Parameters[i].Display_CmdDate.Num;
ChkSum := ChkSum + SendData[n]; inc(n,1);
end;
CmdDelay : Begin
SendData[n] := $07;
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Lo(Parameters[i].Display_CmdDate.DelayTime);
ChkSum := ChkSum + SendData[n]; inc(n,1);
SendData[n] := Hi(Parameters[i].Display_CmdDate.DelayTime);
ChkSum := ChkSum + SendData[n]; inc(n,1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -