📄 pelcount.pas
字号:
function TPelco.PanRight(Speed: Integer = 8; NeedFB: Boolean = True): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char($2);
PelcoMsg[7]:= Char(Speed * 8 - 1);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.StopPanLens(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char(0);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.PanUp(Speed: Integer = 8; NeedFB: Boolean = True): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char($8);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(Speed * 8 - 1);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.SendOrder(NeedFB: Boolean): Boolean;
var
Loop: Integer;
begin
Loop:= 3;
GenCRC(PelcoMsg, MsgLen);
while InUse do
begin
Sleep(10);
end;
InUse:= True;
while Loop > 0 do
begin
MyCom.Flush;
if MyCom.SendData(PelcoMsg, MsgLen) < 0 then
begin
FBCode:= 41;
Result:= False;
Exit;
end;
if not NeedFB then
begin
MyCom.Putch(ACK);
InUse:= False;
Result:= True;
Exit;
end;
Sleep(200);
FBLen:= MyCom.ReceiveData(FeedBack, 255);
if FBLen < 0 then
begin
FBCode:= 41;
Result:= False;
InUse:= False;
Exit;
end
else
if (FBLen > 0) then
begin
MyCom.Putch(ACK);
break;
end;
Loop:= Loop - 1;
end;
Result:= GetFB;
InUse:= False;
end;
function TPelco.SwToCam(CamNo: Integer; NeedFB: Boolean): Boolean;
begin
Cam:= CamNo;
MsgLen:= 6;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($B2);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.SwToMon(MonNo: Integer; NeedFB: Boolean): Boolean;
begin
Mon:= MonNo;
MsgLen:= 5;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($B1);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam));
PelcoMsg[4]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.ApertureClose(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char($8);
PelcoMsg[6]:= Char(0);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.ApertureOpen(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char($4);
PelcoMsg[6]:= Char(0);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.Feature(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char($20);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.FocusFar(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char($1);
PelcoMsg[6]:= Char(0);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.FocusNear(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char($2);
PelcoMsg[6]:= Char(0);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.Panorama(NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char($40);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(0);
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.SwNext(NeedFB: Boolean): Boolean;
begin
MsgLen:= 4;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($B6);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.SwPrevious(NeedFB: Boolean): Boolean;
begin
MsgLen:= 4;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($B7);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.LoadPreset(No: Integer; NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char($7);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(IntToBCD(No));
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.SavePreset(No: Integer; NeedFB: Boolean): Boolean;
begin
MsgLen:= 10;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($C0);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Cam div 100));
PelcoMsg[4]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[5]:= Char(0);
PelcoMsg[6]:= Char($3);
PelcoMsg[7]:= Char(0);
PelcoMsg[8]:= Char(IntToBCD(No));
PelcoMsg[9]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.Aux(AuxNo: Integer; NeedFB: Boolean): Boolean;
var
I: Integer;
begin
for I := 0 to 1 do
begin
MsgLen:= 7;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($B8);
PelcoMsg[2]:= Char(IntToBCD(Cam div 100));
PelcoMsg[3]:= Char(IntToBCD(Cam mod 100));
PelcoMsg[4]:= Char($50 - AuxNo - I);
PelcoMsg[5]:= Char(IntToBCD(Mon));
PelcoMsg[6]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
end;
function TPelco.StartMacro(var Buf: Array of Byte; NeedFB: Boolean): Boolean;
var
I: Integer;
begin
MsgLen:= Buf[0] * 4 + 7;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($E9);
PelcoMsg[2]:= Char($1);
PelcoMsg[3]:= Char(IntToBCD(Mon div 100)); //用监视器号代替宏号
PelcoMsg[4]:= Char(IntToBCD(Mon mod 100));
PelcoMsg[5]:= Char(IntToBCD(Buf[0]));
for I := 0 to Buf[0] - 1 do
begin
PelcoMsg[I * 4 + 6]:= Char(IntToBCD(Mon));
PelcoMsg[I * 4 + 7]:= Char(IntToBCD(Buf[I * 3 + 1]));
PelcoMsg[I * 4 + 8]:= Char(IntToBCD(Buf[I * 3 + 2]));
PelcoMsg[I * 4 + 9]:= Char(IntToBCD(Buf[I * 3 + 3]));
end;
PelcoMsg[MsgLen - 1]:= Char(ETX);
Result:= SendOrder(NeedFB);
SwNext(False);
SwPrevious(False);
end;
function TPelco.StopMacro(NeedFB: Boolean): Boolean;
begin
{
MsgLen:= 6;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($EC);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(IntToBCD(Mon div 100));
PelcoMsg[4]:= Char(IntToBCD(Mon mod 100));
PelcoMsg[5]:= Char(ETX);
Result:= SendOrder(False);
}
MsgLen:= 4;
PelcoMsg[0]:= Char(STX);
PelcoMsg[1]:= Char($E8);
PelcoMsg[2]:= Char(IntToBCD(Mon));
PelcoMsg[3]:= Char(ETX);
Result:= SendOrder(NeedFB);
end;
function TPelco.GetComStatus: String;
begin
Result:= MyCom.GetStatus;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -