Mini Kabibi Habibi
-- �����Ű�3DЭ��,�ѵ��ã������������Ч
local Protocol = {};
-- ��ʾ�ֵ������16��10����(��Сֵ�����ֵ)
Protocol.Attr =
{
-- Э�����ʾ���,���ܳ���16�ַ���Ŀǰ�ݲ�֧������
Name = "SD2",
-- ָ�����̨Э�黹�Ǿ���Э�飬ʹ��"PTZ", "MATRIX"��ʾ
Type = "PTZ",
-- ��msΪ��λ
Internal = 200,
-- û�ж�Ӧ�ĵ�ַ��Χ���붼���0xff
-- ��̨��ַ��Χ
CamAddrRange = {0x00, 0xFF},
-- ���ӵ�ַ��Χ
MonAddrRange = {0x00, 0xFF},
-- Ԥ�õ㷶Χ
PresetRange = {0x00, 0xff},
-- �Զ�Ѳ����·��Χ
TourRange = {0x00, 8},
-- �켣��·��Χ
PatternRange = {0x00, 4},
-- ��ֱ�ٶȷ�Χ
TileSpeedRange = {0x01, 0xFF},
-- ˮƽ�ٶȷ�Χ
PanSpeedRange = {0x01, 0xFF},
-- �����Χ
AuxRange = {0x01, 0x08},
}
Protocol.CommandAttr =
{
-- Э������Ҫ���ĵ�λ�ã���LUA�±��ʾ�����±�ӣ���ʼ,��10���Ʊ�ʾ
AddrPos = 2,
PresetPos = 5,
TileSpeedPos = 5,
PanSpeedPos = 4,
AuxPos = 5,
}
Protocol.Command =
{
-- д����Э��ʱֻ����16���ƻ��ַ���ʾ,û�еĻ���ע�͵�
Start=
{
--д��������, ���ϣ����£����ϣ�����
TileUp = "0xA5, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,",
TileDown = "0xA5, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,",
PanLeft = "0xA5, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,",
PanRight = "0xA5, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,",
LeftUp = "0xA5, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,",
LeftDown = "0xA5, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,",
RightUp = "0xA5, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,",
RightDown = "0xA5, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,",
ZoomWide = "0xA5, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00",
ZoomTele = "0xA5, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00",
FocusNear = "0xA5, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00",
FocusFar = "0xA5, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00",
IrisSmall = "0xA5, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00",
IrisLarge = "0xA5, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00",
-- ��ת
Flip = "0xA5, 0x00, 0x87, 0x00, 0x0A, 0x00, 0x00",
Reset = "0xA5, 0x00, 0x87, 0x00, 0x0B, 0x00, 0x00",
-- �ƹ�
--LightOn = "0xff, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00",
--LightOff = "0xff, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00",
-- Ԥ�õ��������ã�����ת��)
SetPreset = "0xA5, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00",
--ClearPreset = "0xA5, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00",
GoToPreset = "0xA5, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00",
AutoPanOn = "0xA5, 0x00, 0x83, 0x01, 0x62, 0x00, 0x00",
AutoPanOff = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00",
SetLeftLimit = "0xA5, 0x00, 0x81, 0x00, 0x51, 0x00, 0x00",
SetRightLimit = "0xA5, 0x00, 0x81, 0x00, 0x52, 0x00, 0x00",
AutoScanOn = "0xA5, 0x00, 0x83, 0x00, 0x5b, 0x00, 0x00,",
AutoScanOff = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00",
-- �Զ�Ѳ����һ��ָ��Ԥ�õ�֮��Ѳ��
AddTour = "0xA5, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00",
DeleteTour = "0xA5, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00",
StartTour = "0xA5, 0x00, 0x83, 0x00, 0x63, 0x00, 0x00",
StopTour = "0xA5, 0x00, 0x83, 0x00, 0x5a, 0x00, 0x00",
--ClearTour = "0xff, 0x01, 0x00, 0x1D, 0x00, 0x00, 0x00",
-- �켣Ѳ��, һ��ָģʽ(���ÿ�ʼ�����ý�������У�ֹͣ����ģʽ
SetPatternStart = "0xA5, 0x00, 0x85, 0x00, 0x01, 0x00, 0x00",
SetPatternStop = "0xA5, 0x00, 0x85, 0x00, 0x02, 0x00, 0x00",
StartPattern = "0xA5, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00",
StopPattern = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00",
--ClearPattern = "0xff, 0x01, 0x00, 0x1D, 0x00, 0x00, 0x00",
AuxOn = "0xA5, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00",
AuxOff = "0xA5, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00",
-- ����������������Լ������ض���Ϣ���������ض���Ϣ������
Position = "0xA5, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00",
},
Stop =
{
TileUp = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00",
TileDown = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00",
PanLeft = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00",
PanRight = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
LeftUp = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
LeftDown = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
RightUp = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
RightDown = "0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
ZoomWide = "0xA5, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,",
ZoomTele = "0xA5, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,",
FocusNear = "0xA5, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,",
FocusFar = "0xA5, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,",
IrisSmall = "0xA5, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,",
IrisLarge = "0xA5, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,",
},
}
Protocol.Checksum = function (s)
s[7] = math.mod((s[1] + s[2] + s[3] + s[4] + s[5] + s[6]), 256);
return s;
end;
Protocol.MultipleProcess = function(s, multi)
if s[3] == 0x48 or s[3] == 0x44 then
--�۽����
s[4] = multi * 2;
if s[4] ~= 0 then
s[4] = s[4] -1;
end;
elseif s[3]== 0x42 or s[3] == 0x41 then
s[5] = multi * 2;
if s[5] ~= 0 then
s[5] = s[5] -1;
end;
end;
return s;
end;
Protocol.SetTourProcess = function(s, tour, preset)
s[4] = tour;
s[5] = preset;
return s;
end;
Protocol.TourProcess = function(s, tour)
s[4] = tour;
return s;
end;
Protocol.PatternProcess = function(s, num)
s[4] = num;
return s;
end;
--[[
Э�������Ϊ�������Ϊ��������������ֵ�պ��෴��zoom�����λ��ʾ�Ŵ����С
--]]
Protocol.PositionProcess = function(s, hor, ver, zoom)
-- ����ֻ������ٶ�λ����
local max_pos_zoom = 16;
if hor >= 0 then
s[4] = 64 + math.floor(32 * hor / 8192);
else
s[4] = math.floor(32 * math.abs(hor) / 8192);
end;
s[5] = 0;
if ver < 0 then
s[5] = 64 + math.floor(32 * math.abs(ver) / 8192);
else
s[5] = math.floor(32 * ver / 8192);
end;
if zoom <= 0 then
s[6] = 0;
else
if math.abs(zoom) > max_pos_zoom then
s[6] = max_pos_zoom / 4;
else
s[6] = math.floor(math.abs(zoom)/4);
end;
end
return s;
end;
--[[
����ĺ���ǿ�ѡ�ģ�������������̲Ŵ�û�еĻ���ǧ��Ҫ���������ɽ������
Protocol.MonAddrProcess = function(s, addr)
return s;
end;
Protocol.SpeedProcess = function(s, arg1, arg2)
return s;
end;
Protocol.PresetProcess = function(s, arg)
return s;
end;
--]]
return Protocol;