亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? infinovamatrix.pas

?? AD矩陣控制協議封裝的Delphi代碼。用于控制AD矩陣矩陣RS232控制。包括云臺轉動及切換。
?? PAS
字號:
unit InfinovaMatrix;
{
 英飛拓矩陣控制協議.
}
interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, CPort;
const
  EndTransChar  = 'a';
  CommOverTime   = 5000;   //5秒
type
  TCommandKind = (CmUnknow,CmInMenu,CmOutMenu,CmSwMonitor,CmSwCamera);
  TControlEvent = procedure(Sender: TObject; InfoMsg:string) of object;
  TInfMatrixControl = class(Tcomponent)
  private
    FDeviceID:string;
    FDeviceName:string;
    FCommPort:string;
    FBaudRate:Dword;
    FComPort:TComPort;
    FMonitorID:integer;
    FCameraID:integer;
    FOnControlMsg:TControlEvent;
    FCurrentCmd:TCommandKind;
    FPTZSpeed:integer;
    procedure SetCommPort(Value: string);
    procedure SetBaudRate(Value: Dword);
  protected
    FReceiveLen:integer;
    FSendBuf:array[0..255] of char;
    FReceiveBuf:array[0..511] of char;
    procedure CommReceiveData(Sender: TObject; Count: Integer);    
    function SendCommData(SendBuffer:array of char; const SendLength:Integer):Boolean;
  public
    function LoginMenu:Boolean;
    function LogOutMenu:Boolean;
    function SwitchMonitor:Boolean;
    function SwitchCamera:Boolean;
    procedure SwitchMonitorAndCamera;
    procedure MoveDown;
    procedure MoveUp;
    procedure MoveLeft;
    procedure MoveRight;
    procedure IrisOpen;             //光圈打開
    procedure IrisClose;            //光圈關閉
    procedure FocusFar;             //遠焦控制
    procedure FocusNear;            //近焦控制
    procedure ZoomWide;             //視角變寬
    procedure ZoomTele;             //視角變窄
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;
    function ControlStart: boolean; //開始控制
    procedure ControlEnd;           //結束控制
    //--輔助控制命令
  published
    property MonitorID:integer read FMonitorID write FMonitorID;
    property CameraID:integer read FCameraID write FCameraID;
    property PTZSpeed:integer read FPTZSpeed write FPTZSpeed;
    property DeviceID:string read FDeviceID write FDeviceID;
    property DeviceName:string read FDeviceName write FDeviceName;
    property ComPort:TComPort read FComPort Write FComPort;
    property CommPort:string read FCommPort write SetCommPort;
    property BaudRate:Dword read FBaudRate write SetBaudRate;
    property CurrentCmd:TCommandKind read FCurrentCmd;
    property OnControlMsg:TControlEvent read FOnControlMsg write FOnControlMsg; 

  end;

procedure Register;

implementation

uses Contnrs;

procedure Register;
begin
  RegisterComponents('GSMonitor', [TInfMatrixControl]);
end;

{ TInfMatrixControl }

procedure TInfMatrixControl.SetCommPort(Value: string);
begin
  if  Value <> FCommPort then
  begin
    FCommPort := Value;
  end;
end;

procedure TInfMatrixControl.SetBaudRate(Value: Dword);
begin
  if  Value <> FBaudRate then
  begin
    FBaudRate := Value;
  end;
end;

procedure TInfMatrixControl.ControlEnd;
begin
  if FComPort.Connected then
    FComPort.Close;
end;

function TInfMatrixControl.ControlStart: boolean;
var tmpResult : Boolean;
begin
  tmpResult := true;
  FComPort.BaudRate := brCustom;
  FComPort.CustomBaudRate := FBaudRate;
  FComPort.Port := FCommPort;
  FComPort.OnRxChar := CommReceiveData;
  try
    if not FComPort.Connected then
    FComPort.Open;
  except
    tmpResult := False;
  end;
  Result := tmpResult;
end;

constructor TInfMatrixControl.Create(AOwner: TComponent);
begin
  inherited Create( AOwner );
  FReceiveLen := 0;
  FBaudRate := 1200;
end;

destructor TInfMatrixControl.Destroy;
begin
  inherited Destroy;
end;

function TInfMatrixControl.SendCommData(SendBuffer:array of char; const SendLength:Integer):Boolean;
begin
  Result := (FComPort.Write(SendBuffer,SendLength)= SendLength);
end;

procedure TInfMatrixControl.CommReceiveData(Sender: TObject; Count: Integer);
var BufferLength:integer;
begin
  //注意緩沖區益處的情況.
  //BufferLength:=ComPort.Read(FReceiveBuf[FReceiveLen],Count);
  //FReceiveLen := FReceiveLen + BufferLength;
end;

function TInfMatrixControl.LoginMenu: Boolean;
var
  StartTime,EndTime:Cardinal;
begin
  //發送.
  Result := False;
  FSendBuf[0]:= '1';
  FSendBuf[1]:= '2';
  FSendBuf[2]:= '9';
  FSendBuf[3]:= 'P';
  FSendBuf[4]:= EndTransChar;
  FCurrentCmd := CmInMenu;
  SendCommData(FSendBuf,5); 
  FReceiveLen := 0;
  StartTime := GetTickCount;
  EndTime := GetTickCount;
  repeat
    if FReceiveLen>80  then  //收到結束偵標記后進行處理
    begin
      FReceiveLen := 0;
      if (1=1) then          //接收到的結果正確.
        Result := True
      else
      begin
        if Assigned(FOnControlMsg) then
          FOnControlMsg(self,'進入菜單,接收數據格式錯誤!');
      end;
      Break;
    end;
    Sleep(10);
    Application.ProcessMessages;
    EndTime := GetTickCount;
  until (EndTime-StartTime>CommOverTime);
  if FReceiveLen<=80 then
  begin
    if Assigned(FOnControlMsg) then
      FOnControlMsg(self,'進入菜單,通信超時!');
  end;
end;

function TInfMatrixControl.LogOutMenu: Boolean;
var
  StartTime,EndTime:Cardinal;
begin
  //發送.
  Result := False;
  FSendBuf[0]:= '1';
  FSendBuf[1]:= '3';
  FSendBuf[2]:= '0';
  FSendBuf[3]:= 'P';
  FSendBuf[4]:= EndTransChar;
  FCurrentCmd := CmOutMenu;
  SendCommData(FSendBuf,5); 
  FReceiveLen := 0;
  StartTime := GetTickCount;
  EndTime := GetTickCount;
  repeat
    if FReceiveLen>80  then  //收到結束偵標記后進行處理
    begin
      FReceiveLen := 0;
      if (1=1) then     //接收到的結果正確.
        Result := True
      else
      begin
        if Assigned(FOnControlMsg) then
          FOnControlMsg(self,'離開菜單,接收數據格式錯誤!');
      end;
      Break;
    end;
    Sleep(10);
    Application.ProcessMessages;
    EndTime := GetTickCount;
  until (EndTime-StartTime>CommOverTime);
  if FReceiveLen<=80 then
  begin
    if Assigned(FOnControlMsg) then
      FOnControlMsg(self,'離開菜單,通信超時!');
  end;
end;

function TInfMatrixControl.SwitchMonitor: Boolean;
var
  StartTime,EndTime:Cardinal;
  tmpCmd:string;
begin
  //發送.
  Result := False;
  tmpCmd := IntTostr(FMonitorID)+'Ma';
  StrPCopy(FSendBuf, tmpCmd);
  FCurrentCmd := CmSwMonitor;
  SendCommData(FSendBuf,length(tmpCmd));
  FReceiveLen := 0;
  StartTime := GetTickCount;
  EndTime := GetTickCount;
  repeat
    if FReceiveLen>80  then  //收到結束偵標記后進行處理
    begin
      FReceiveLen := 0;
      if (1=1) then          //接收到的結果正確.
        Result := True
      else
      begin
        if Assigned(FOnControlMsg) then
          FOnControlMsg(self,'切換監視器,接收數據格式錯誤!');
      end;
      Break;
    end;
    Sleep(10);
    Application.ProcessMessages;
    EndTime := GetTickCount;
  until (EndTime-StartTime>CommOverTime);
  if FReceiveLen<=80 then
  begin
    if Assigned(FOnControlMsg) then
      FOnControlMsg(self,'切換監視器,通信超時!');
  end;
end;


function TInfMatrixControl.SwitchCamera: Boolean;
var
  StartTime,EndTime:Cardinal;
  tmpCmd:string;
begin
  //發送.
  Result := False;
  tmpCmd := IntTostr(FCameraID)+'#a';
  StrPCopy(FSendBuf, tmpCmd);
  FCurrentCmd := CmSwCamera;
  SendCommData(FSendBuf,length(tmpCmd));
  FReceiveLen := 0;
  StartTime := GetTickCount;
  EndTime := GetTickCount;
  repeat
    if FReceiveLen>80  then  //收到結束偵標記后進行處理
    begin
      FReceiveLen := 0;
      if (1=1) then          //接收到的結果正確.
        Result := True
      else
      begin
        if Assigned(FOnControlMsg) then
          FOnControlMsg(self,'切換攝像機,接收數據格式錯誤!');
      end;
      Break;
    end;
    Sleep(10);
    Application.ProcessMessages;
    EndTime := GetTickCount;
  until (EndTime-StartTime>CommOverTime);
  if FReceiveLen<=80 then
  begin
    if Assigned(FOnControlMsg) then
      FOnControlMsg(self,'切換攝像機,通信超時!');
  end;
end;

procedure TInfMatrixControl.IrisClose;
begin
  FSendBuf[0] := 'O';
  FSendBuf[1] := 'a';
  SendCommData(FSendBuf,2);
end;

procedure TInfMatrixControl.IrisOpen;
begin
  FSendBuf[0] := 'C';
  FSendBuf[1] := 'a';
  SendCommData(FSendBuf,2);
end;

procedure TInfMatrixControl.FocusFar;
begin
  FSendBuf[0] := 'F';
  FSendBuf[1] := 'a';
  SendCommData(FSendBuf,2);
end;

procedure TInfMatrixControl.FocusNear;
begin
  FSendBuf[0] := 'N';
  FSendBuf[1] := 'a';
  SendCommData(FSendBuf,2);
end;

procedure TInfMatrixControl.ZoomTele;
begin
  FSendBuf[0] := 'T';
  FSendBuf[1] := 'a';
  SendCommData(FSendBuf,2);
end;

procedure TInfMatrixControl.ZoomWide;
begin
  FSendBuf[0] := 'W';
  FSendBuf[1] := 'a';
  SendCommData(FSendBuf,2);
end;

procedure TInfMatrixControl.MoveDown;
var
  tmpCmd:string;
begin
  tmpCmd := IntTostr(FPTZSpeed)+'Da';
  StrPCopy(FSendBuf, tmpCmd);
  SendCommData(FSendBuf,length(tmpCmd));
end;

procedure TInfMatrixControl.MoveLeft;
var
  tmpCmd:string;
begin
  tmpCmd := IntTostr(FPTZSpeed)+'La';
  StrPCopy(FSendBuf, tmpCmd);
  SendCommData(FSendBuf,length(tmpCmd));
end;

procedure TInfMatrixControl.MoveRight;
var
  tmpCmd:string;
begin
  tmpCmd := IntTostr(FPTZSpeed)+'Ra';
  StrPCopy(FSendBuf, tmpCmd);
  SendCommData(FSendBuf,length(tmpCmd));
end;

procedure TInfMatrixControl.MoveUp;
var
  tmpCmd:string;
begin
  tmpCmd := IntTostr(FPTZSpeed)+'Ua';
  StrPCopy(FSendBuf, tmpCmd);
  SendCommData(FSendBuf,length(tmpCmd));
end;

procedure TInfMatrixControl.SwitchMonitorAndCamera;
var  tmpCmd:string;
begin
  //發送.
  tmpCmd := IntTostr(FMonitorID)+'Ma'+IntTostr(FCameraID)+'#a';
  StrPCopy(FSendBuf, tmpCmd);
  SendCommData(FSendBuf,length(tmpCmd));
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区在线观看精品 | 久久久精品中文字幕麻豆发布| 夜夜爽夜夜爽精品视频| 99久久婷婷国产综合精品电影 | 午夜精品久久久久久久99水蜜桃| 色网站国产精品| 亚洲精品国产品国语在线app| 日本道免费精品一区二区三区| 中文字幕日韩av资源站| 91尤物视频在线观看| 亚洲高清免费观看| 日韩视频免费直播| 国产成人小视频| 中文字幕一区二区三区精华液| 91蜜桃在线免费视频| 一区二区三区国产| 欧美一级片免费看| 国产91丝袜在线播放0| 亚洲一区中文日韩| 日韩午夜中文字幕| 久久精品国产精品亚洲综合| 国产亚洲欧洲一区高清在线观看| 95精品视频在线| 视频一区二区中文字幕| 久久一留热品黄| 91久久免费观看| 日韩va欧美va亚洲va久久| 国产喷白浆一区二区三区| 欧美亚洲国产一卡| 国产麻豆精品在线观看| 亚洲黄色av一区| 久久女同精品一区二区| 色8久久人人97超碰香蕉987| 老司机精品视频一区二区三区| 国产蜜臀av在线一区二区三区 | 91成人网在线| 精品一区二区三区蜜桃| 亚洲欧洲成人av每日更新| 欧美电影影音先锋| 99精品视频一区二区三区| 免费看日韩a级影片| 亚洲色图在线播放| 精品久久国产97色综合| 91国偷自产一区二区三区观看| 精品中文字幕一区二区| 亚洲一区二区三区美女| 国产精品久久久久婷婷二区次| 在线不卡中文字幕播放| 91香蕉视频在线| 国产激情视频一区二区三区欧美| 午夜精品福利视频网站| 亚洲三级久久久| 久久久久久久久久久久久久久99| 欧美精品777| 色婷婷综合久久久久中文一区二区| 蜜臀av性久久久久蜜臀aⅴ| 一个色妞综合视频在线观看| 国产精品毛片高清在线完整版| 日韩视频一区二区| 欧美日韩日日夜夜| 99riav久久精品riav| 国产精品一品二品| 国产在线精品一区二区不卡了| 日韩成人一区二区三区在线观看| 亚洲精品乱码久久久久久久久| 国产精品久久久久一区| 国产欧美一区二区三区沐欲 | 97se狠狠狠综合亚洲狠狠| 精品一区二区在线看| 蜜桃在线一区二区三区| 亚洲18影院在线观看| 亚洲综合偷拍欧美一区色| 一色桃子久久精品亚洲| 国产精品国产成人国产三级| 欧美极品少妇xxxxⅹ高跟鞋| 久久久久久一二三区| 久久色.com| 久久久久久久久久久久久夜| 久久老女人爱爱| 精品少妇一区二区三区免费观看 | 91精品国产色综合久久久蜜香臀| 日本久久电影网| 色哟哟在线观看一区二区三区| 91麻豆国产福利精品| 99久久精品国产导航| 91蜜桃视频在线| 一本色道**综合亚洲精品蜜桃冫| 色呦呦日韩精品| 91久久人澡人人添人人爽欧美 | 亚洲.国产.中文慕字在线| 亚洲1区2区3区4区| 日本va欧美va精品发布| 久久97超碰国产精品超碰| 经典三级一区二区| 国产麻豆91精品| 国产69精品久久99不卡| 成人激情综合网站| 一本久久综合亚洲鲁鲁五月天 | 欧美巨大另类极品videosbest| 欧美日韩视频在线第一区 | 日韩欧美一区二区不卡| 精品美女在线播放| 中文字幕av一区二区三区免费看 | 在线不卡一区二区| 日韩免费高清av| 久久噜噜亚洲综合| 亚洲视频在线一区二区| 亚洲成av人片| 国产老女人精品毛片久久| 91原创在线视频| 91精品综合久久久久久| 久久精品视频一区二区| 亚洲欧美激情插| 免费人成精品欧美精品| 成人av电影免费在线播放| 欧美亚洲综合色| 久久综合久久综合久久| 亚洲男人都懂的| 日本在线不卡一区| 国产麻豆欧美日韩一区| 色哦色哦哦色天天综合| 精品久久久久一区二区国产| 亚洲色图制服丝袜| 日本不卡在线视频| 91伊人久久大香线蕉| 欧美r级电影在线观看| 一区二区三区国产豹纹内裤在线| 精品午夜一区二区三区在线观看| av亚洲精华国产精华精| 精品久久国产97色综合| 亚洲一区二区欧美日韩| 粉嫩av一区二区三区在线播放| 欧美美女直播网站| 中文字幕日本不卡| 国内精品国产成人| 欧美日韩一区二区三区四区| 国产欧美久久久精品影院| 日韩精品久久理论片| 欧美高清激情brazzers| 久久久久国色av免费看影院| 香蕉影视欧美成人| 91免费看片在线观看| 国产亚洲一区二区三区在线观看 | 精品三级在线看| 亚洲欧美日韩中文字幕一区二区三区| 免费观看91视频大全| 在线视频一区二区三| 精品99一区二区三区| 日韩激情一二三区| 色综合色狠狠天天综合色| 欧美国产欧美亚州国产日韩mv天天看完整| 午夜精品久久久久影视| 欧美综合在线视频| 中文字幕一区二区三区精华液| 韩国一区二区三区| 日韩美一区二区三区| 香蕉影视欧美成人| 欧美亚洲综合在线| 亚洲免费视频中文字幕| 91丨九色丨蝌蚪丨老版| 日本一区二区三区四区在线视频| 精品一区二区三区香蕉蜜桃| 欧美一区二区私人影院日本| 天天综合色天天综合| 欧美福利一区二区| 日韩黄色免费电影| 欧美色老头old∨ideo| 亚洲国产一区二区三区 | 亚洲伊人色欲综合网| 99久久精品国产毛片| 亚洲情趣在线观看| 97se亚洲国产综合自在线| 成人欧美一区二区三区在线播放| www.亚洲精品| 亚洲欧美一区二区三区极速播放| youjizz久久| 亚洲欧美视频在线观看视频| 色婷婷亚洲一区二区三区| 洋洋av久久久久久久一区| 欧美午夜电影网| 日韩精品一二三四| 日韩欧美美女一区二区三区| 国产一区视频导航| 久久久久99精品一区| 国产高清精品在线| 国产精品久久久久久福利一牛影视| www.日韩在线| 樱桃国产成人精品视频| 欧美日韩一区二区三区在线 | 美女脱光内衣内裤视频久久影院| 日韩欧美在线不卡| 国产精品影音先锋| 亚洲精品视频在线观看免费| 欧美无人高清视频在线观看| 青青草97国产精品免费观看| 久久色在线视频| 色综合中文字幕国产 | 欧美一区二区久久久| 麻豆久久一区二区| 中文一区在线播放|