Mini Kabibi Habibi
-- Videon RS422P PROTOCOL
-- watchnetҪ���PelcoPЭ��
local Protocol = {};
Protocol.Attr =
{
Name = "Videon-P",
Type = "PTZ",
Internal = 200,
CamAddrRange = {0x00, 0x1F},
MonAddrRange = {0x00, 0xFF},
PresetRange = {0x00, 0xFF},
TourRange = {0x00, 0xff},
PatternRange = {0x00, 0x00},
TileSpeedRange = {0x00, 0x3F},
PanSpeedRange = {0x00, 0x3F},
AuxRange = {0x01, 0x08},
}
Protocol.CommandAttr =
{
AddrPos = 2,
PresetPos = 6,
TileSpeedPos = 6,
PanSpeedPos = 5,
AuxPos = 6,
}
Protocol.Command =
{
Start=
{
TileUp = "0xA0, 0x00, 0x50, 0x08, 0x00, 0x00, 0xAF, 0x00",
TileDown = "0xA0, 0x00, 0x50, 0x10, 0x00, 0x00, 0xAF, 0x00",
PanLeft = "0xA0, 0x00, 0x50, 0x04, 0x00, 0x00, 0xAF, 0x00",
PanRight = "0xA0, 0x00, 0x50, 0x02, 0x00, 0x00, 0xAF, 0x00",
LeftUp = "0xA0, 0x00, 0x50, 0x0C, 0x00, 0x00, 0xAF, 0x00",
LeftDown = "0xA0, 0x00, 0x50, 0x14, 0x00, 0x00, 0xAF, 0x00",
RightUp = "0xA0, 0x00, 0x50, 0x0A, 0x00, 0x00, 0xAF, 0x00",
RightDown = "0xA0, 0x00, 0x50, 0x12, 0x00, 0x00, 0xAF, 0x00",
ZoomWide = "0xA0, 0x00, 0x50, 0x40, 0x00, 0x00, 0xAF, 0x00",
ZoomTele = "0xA0, 0x00, 0x50, 0x20, 0x00, 0x00, 0xAF, 0x00",
FocusNear = "0xA0, 0x00, 0x52, 0x00, 0x00, 0x00, 0xAF, 0x00",
FocusFar = "0xA0, 0x00, 0x51, 0x00, 0x00, 0x00, 0xAF, 0x00",
IrisSmall = "0xA0, 0x00, 0x58, 0x00, 0x00, 0x00, 0xAF, 0x00",
IrisLarge = "0xA0, 0x00, 0x54, 0x00, 0x00, 0x00, 0xAF, 0x00",
SetPreset = "0xA0, 0x00, 0x00, 0x03, 0x00, 0x00, 0xAF, 0x00",
ClearPreset = "0xA0, 0x00, 0x00, 0x05, 0x00, 0x00, 0xAF, 0x00",
GoToPreset = "0xA0, 0x00, 0x00, 0x07, 0x00, 0x00, 0xAF, 0x00",
--AutoScanOn = "0xA0, 0x00, 0x70, 0x00, 0x00, 0x00, 0xAF, 0x00",
--AutoScanOff = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
SetPatternStart = "0xA0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xAF, 0x00",
SetPatternStop = "0xA0, 0x00, 0x00, 0x21, 0x00, 0x00, 0xAF, 0x00",
StartPattern = "0xA0, 0x00, 0x00, 0x23, 0x00, 0x00, 0xAF, 0x00",
StopPattern = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
AuxOn = "0xA0, 0x00, 0x00, 0x09, 0x00, 0x00, 0xAF, 0x00",
AuxOff = "0xA0, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xAF, 0x00",
},
Stop =
{
TileUp = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
TileDown = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
PanLeft = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
PanRight = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
LeftUp = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
LeftDown = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
RightUp = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
RightDown = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
ZoomWide = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
ZoomTele = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
FocusNear = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
FocusFar = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
IrisSmall = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
IrisLarge = "0xA0, 0x00, 0x50, 0x00, 0x00, 0x00, 0xAF, 0x00",
},
}
Protocol.Checksum = function (s)
local value = s[1];
for i = 2, 7 do
value = bits.bxor(value,s[i]);
end;
s[8] = math.mod(value, 256);
return s;
end;
Protocol.SpeedProcess = function(s, ver, hor)
if s[4] ~= 0x00 and ver ~= 0x00 then
s[6] = ver;
end;
if s[4] ~= 0x00 and hor ~= 0x00 then
s[5] = hor;
end;
return s;
end;
return Protocol;