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

📄 singzm.~pas

📁 LED字幕显示屏
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
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 + -