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

📄 unit2.pas

📁 LED显示屏控制卡的编程例程
💻 PAS
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, LEDApi;

Const
  WM_LED_NOTIFY = WM_USER+1;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn11: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure BitBtn10Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure LEDNotify(Var Msg: TMessage); Message WM_LED_NOTIFY;
  end;

var
  Form1: TForm1;
  Dev:   Integer;
implementation

{$R *.DFM}

Procedure TForm1.LEDNotify(Var Msg: TMessage);
Var
  P: PNotifyMessage;
Begin
  P:=PNotifyMessage(Msg.wParam);
  Case P^.Message Of
    LM_TX_COMPLETE:
    Begin
      Memo1.Lines.Add('发送完成');
    End;
    LM_RESPOND:
    Begin
      Case P^.Command of
        PKC_QUERY:
        Begin
          Memo1.Lines.Add('查询状态成功');
        End;
        PKC_GET_POWER:
        Begin
          if P^.Status=LED_POWER_ON Then Memo1.Lines.Add('电源打开')
          Else Memo1.Lines.Add('电源关闭');
        End;
        PKC_SET_POWER:
        Begin
          if P^.Result=99 Then Memo1.Lines.Add('处于自动开关屏模式,不能进行电源操作')
          Else
          Begin
            if P^.Status=LED_POWER_ON Then Memo1.Lines.Add('电源打开')
            Else Memo1.Lines.Add('电源关闭');
          End;
        End;
        PKC_GET_BRIGHT:
        Begin
          Memo1.Lines.Add('显示屏亮度为:'+IntToStr(P^.Status));
        End;
        PKC_SET_BRIGHT:
        Begin
          if P^.Result=99 Then Memo1.Lines.Add('处于自动调节亮度状态,不能进行亮度调节')
          Else Memo1.Lines.Add('显示屏亮度为:'+IntToStr(P^.Status));
        End;
        PKC_ADJUST_TIME:
        Begin
          Memo1.Lines.Add('显示屏时钟已校正');
        End;
      End;
    End;
    LM_TIMEOUT:
    Begin
      if P^.Param.devType=DEVICE_TYPE_COM Then Memo1.Lines.Add('发送超时!  '+'类型: 串口  地址:'+IntToStr(P^.Address))
      Else Memo1.Lines.Add('发送超时!  '+'类型: 网络  发往: '+StrPas(P^.Host));
    End;
  End;
End;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Device: TDeviceParam;
begin
{--------------------------------}
{      下面是串口的打开例子      }
{--------------------------------}
//  Device.devType:=DEVICE_TYPE_COM;  // 通讯设备类型为串口
 // Device.Speed:=SBR_115200;         // 此处必须和主板中的设置一致
  //Device.ComPort:=5;                // 串口号(1-255)

{--------------------------------}
{  下面是使用网络通讯的例子,只要 }
{  将注释去掉即可                }
{--------------------------------}
 Device.devType:=DEVICE_TYPE_UDP;  // 通讯设备类型为网络
  Device.locPort:=8888;             // 本地端口号
{--------------------------------}
  Dev:=LED_Open(@Device,1,Handle,WM_LED_NOTIFY); // Notify=1 表示需要接收消息
  if Dev=INVALID_DEVICE_HANDLE Then
  Begin
    MessageBox(Handle,'无法打开指定通讯链路!','错误信息',MB_OK);
    Exit;
  End;
  Memo1.Lines.Add('通讯链路打开成功!');
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

{
  发出一个查询命令,查看控制卡是否在线
  Procedure LED_Query(dev: Integer; CardAddr: Byte; IP: PChar; Port: Integer);
  dev:      通讯链路句柄
  CardAddr: 控制卡地址(0-31), 控制卡地址由控制卡上的5位拨码开关决定
  IP:       控制卡的IP地址(如果使用串口通讯这个参数可填写''
  Port:     控制卡端口号固定为6666(如果用串口通讯这个参数可填写任意值)
}
  LED_Query(Dev,0,'192.168.0.11',6666);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  LED_GetPower(Dev,0,'192.168.0.11',6666);
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  LED_SetPower(Dev,0,'192.168.0.11',6666,0);
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  LED_SetPower(Dev,0,'192.168.0.11',6666,1);
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  LED_SetBrightness(Dev,0,'192.168.0.11',6666,1);
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  LED_GetBrightness(Dev,0,'192.168.0.11',6666);
end;

procedure TForm1.BitBtn9Click(Sender: TObject);
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  LED_AdjustTime(Dev,0,'192.168.0.11',6666);
end;

procedure TForm1.BitBtn8Click(Sender: TObject);
Var
  ARect:  TRect;
  Bitmap: TBitmap;
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

{
  MakeRoot说明
  Function  MakeRoot(RootType: Integer; ScreenType: Integer): Integer; Stdcall; External LEDSender;
  RootType: 可选ROOT_PLAY或ROOT_DOWNLOAD

  ROOT_PLAY: 表示显示内容仅播放,无需保存,控制卡掉电后不再需要显示
  ROOT_DOWNLOAD: 表示显示内容需要保存在主板中,当控制卡上电后自动播放
                (注意:控制卡只能保存1M的数据)

  ScreenType: 必须和控制卡的设置相同,否则将不会显示
}

  MakeRoot(ROOT_PLAY, SCREEN_COLOR);
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile('test.bmp');
  AddLeaf(20000);    //播放20秒
  ARect:=Rect(0,0,283,132);   //显示区域限定在此区域中
  AddWindow(Bitmap.Canvas.Handle,Bitmap.Width,Bitmap.Height,@ARect,1,1,1);
  LED_SendToScreen(Dev,0,'192.168.0.11',6666);
  Bitmap.Free;
end;

procedure TForm1.BitBtn10Click(Sender: TObject);
Var
  ARect:  TRect;
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

  MakeRoot(ROOT_PLAY, SCREEN_COLOR);
  AddLeaf(20000);    //播放20秒
  ARect:=Rect(0,0,128,32);   //显示区域限定在此区域中
  AddDateTime(@ARect,1,'Arial',18,RGB(255,255,0),DF_HNS);
  LED_SendToScreen(Dev,0,'192.168.0.11',6666);
end;

procedure TForm1.BitBtn12Click(Sender: TObject);
Var
  ARect:  TRect;
begin
  if Dev=INVALID_DEVICE_HANDLE Then Exit;  //如果没有打开通讯链路,退出

{
  Funnction  AddString(Str: PChar; ARect: PRect; Method,Speed,Transparent: Integer; FontSet,FontColor: Integer): Integer; Stdcall; External LEDSender;
  该函数仅发送内码到控制卡,因此发送速度很快,适用于对发送速度要求较高,而且只显示文字的场合
  在使用该函数之前需确定控制卡内下载了字库文件,如果控制卡内没有字库文件,则什么都不显示
}

  MakeRoot(ROOT_PLAY, SCREEN_COLOR);
  AddLeaf(20000);    //播放20秒
  ARect:=Rect(0,0,128,32);   //显示区域限定在此区域中
  AddString('This is a test 中国人民万岁',@ARect,2,1,1,FONT_SET_16,RGB(255,255,0));
  LED_SendToScreen(Dev,0,'192.168.0.11',6666);
end;

procedure TForm1.BitBtn11Click(Sender: TObject);
begin
  LED_Close(Dev);
end;

end.

⌨️ 快捷键说明

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