LED显示屏控制卡的编程例程

源代码在线查看: unit2.~pas

软件大小: 421 K
上传用户: red1
关键词: LED 显示屏 控制卡 编程
下载地址: 免注册下载 普通下载 VIP

相关代码

				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.99',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.
							

相关资源