Mini Kabibi Habibi
local Protocol = {};
-- ��ʾ�ֵ������16��10����(��Сֵ�����ֵ)
Protocol.Attr =
{
-- Э�����ʾ���,���ܳ���16�ַ���Ŀǰ�ݲ�֧������
Name = "PELCO-9750",
-- ָ�����̨Э�黹�Ǿ���Э�飬ʹ��"PTZ", "MATRIX"��ʾ
Type = "MATRIX",
-- ��msΪ��λ
Internal = 250,
-- û�ж�Ӧ�ĵ�ַ��Χ���붼���0xff
-- ��̨��ַ��Χ
CamAddrRange = {0x01, 0xFF},
-- ���ӵ�ַ��Χ
MonAddrRange = {0x00, 0xFF},
-- Ԥ�õ㷶Χ
PresetRange = {0x01, 0x20},
-- �Զ�Ѳ����·��Χ
TourRange = {0x01, 0xff},
-- �켣��·��Χ
PatternRange = {0x01, 0xff},
-- ��ֱ�ٶȷ�Χ
TileSpeedRange = {0x01, 0x3F},
-- ˮƽ�ٶȷ�Χ
PanSpeedRange = {0x01, 0x3F},
-- �����Χ
AuxRange = {0x01, 0x08},
}
Protocol.CommandAttr =
{
-- Э������Ҫ���ĵ�λ�ã���LUA�±��ʾ�����±�ӣ���ʼ,��10���Ʊ�ʾ
AddrPos = 2,
PresetPos = 6,
TileSpeedPos = 9,
PanSpeedPos = 8,
AuxPos = 6,
}
Protocol.Command =
{
-- д����Э��ʱֻ����16���ƻ��ַ���ʾ,û�еĻ���ע�͵�
Start=
{
--д��������, ���ϣ����£����ϣ�����
TileUp = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0xAF, 0x00,",
TileDown = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0xAF, 0x00,",
PanLeft = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0xAF, 0x00,",
PanRight = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0xAF, 0x00,",
LeftUp = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x0C, 0x00, 0x00, 0xAF, 0x00,",
LeftDown = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0xAF, 0x00,",
RightUp = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x00, 0xAF, 0x00,",
RightDown = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x12, 0x00, 0x00, 0xAF, 0x00,",
ZoomWide = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0xAF, 0x00,",
ZoomTele = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0xAF, 0x00,",
FocusNear = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xAF, 0x00,",
FocusFar = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0xAF, 0x00,",
IrisSmall = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0xAF, 0x00,",
IrisLarge = "0xA0, 0xC0, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xAF, 0x00,",
MatrixSwitch = "0xA0, 0xB2, 0x00, 0x00, 0x01, 0xAF, 0x00,",
},
Stop =
{
TileUp = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0xAF, 0x00,",
TileDown = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0xAF, 0x00,",
PanLeft = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0xAF, 0x00,",
PanRight = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0xAF, 0x00,",
LeftUp = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x0C, 0x00, 0x00, 0xAF, 0x00,",
LeftDown = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0xAF, 0x00,",
RightUp = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x00, 0xAF, 0x00,",
RightDown = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x12, 0x00, 0x00, 0xAF, 0x00,",
ZoomWide = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0xAF, 0x00,",
ZoomTele = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0xAF, 0x00,",
FocusNear = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xAF, 0x00,",
FocusFar = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0xAF, 0x00,",
IrisSmall = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0xAF, 0x00,",
IrisLarge = "0xA0, 0xC5, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xAF, 0x00,",
},
}
Protocol.Checksum = function (s)
if table.getn(s) == 7 then
s[7] = math.mod((s[2] + s[3] + s[4] + s[5]), 256);
else
s[11] = math.mod((s[2] + s[3] + s[4] + s[5] + s[6] + s[7] + s[8] + s[9]), 256);
end;
return s;
end;
Protocol.CamAddrProcess = function(s, addr)
s[4] = math.floor(addr/256);
s[5] = math.mod(addr,256);
return s;
end;
Protocol.MonAddrProcess = function(s, addr)
s[3] = math.mod(addr, 256);
return s;
end;
Protocol.SpeedProcess = function(s, ver, hor)
if s[2] ~= 0xc5 then
s[9] = ver;
s[8] = hor;
end;
return s;
end;
--[[
Protocol.PresetProcess = function(s, arg)
return s;
end;
--]]
return Protocol;