Ну тогда озвучьте эти две команды если можете
Чего мелочиться, раз обещал протокол - вот он!
Комментарии на китайском

--[[
SAMSUNGФЖМЁРТйґжФЪТФПВОКМв:
1 PATTERNЦ»УРSTARTєНSTOPЦёБо, Г»УРПаУ¦µДЙиЦГЦёБо.
2 AUTO SCANЦ»УРSTARTєНSTOPЦёБо, Г»УРПаУ¦µДЧуУТ±ЯЅзЦµµДЙи¶Ё№¦ДЬ.
--]]
local Protocol = {};
-- ±нКѕКэЦµїЙТФУГ16»т10ЅшЦЖ(ЧоРЎЦµЈ¬ЧоґуЦµ)
Protocol.Attr =
{
-- РТйµДПФКѕГыіЖ,І»ДЬі¬№э16ЧЦ·ыЈ¬ДїЗ°ФЭІ»Ц§іЦЦРОД
Name = "SAMSUNG",
-- ЦёГчКЗФЖМЁРТй»№КЗѕШХуРТйЈ¬К№УГ"PTZ", "MATRIX"±нКѕ
Type = "PTZ",
-- ТФmsОЄµҐО»
Internal = 200,
-- Г»УР¶ФУ¦µДµШЦ··¶О§Ј¬Зл¶јЙиіЙ0xff
-- ФЖМЁµШЦ··¶О§
CamAddrRange = {0x01, 0xFF},
-- јаКУµШЦ··¶О§
MonAddrRange = {0x00, 0xFF},
-- Ф¤ЦГµг·¶О§
PresetRange = {0x00, 0xff},
-- ЧФ¶ЇСІєЅПЯВ··¶О§
TourRange = {0xff, 0xff},
-- №мјЈПЯВ··¶О§
PatternRange = {1, 3},
-- ґ№Ц±ЛЩ¶И·¶О§
TileSpeedRange = {0x00, 0x40},
-- Л®ЖЅЛЩ¶И·¶О§
PanSpeedRange = {0x00, 0x40},
-- ёЁЦъ·¶О§
AuxRange = {0x01, 0x08},
}
Protocol.CommandAttr =
{
-- РТйЦРРиТЄёьёДµДО»ЦГЈ¬УГLUAПВ±к±нКѕЈ¬јґПВ±кґУЈ±їЄКј,УГ10ЅшЦЖ±нКѕ
AddrPos = 3,
PresetPos = 6,
TileSpeedPos = 8,
PanSpeedPos = 7,
PatternPos = 6;
AuxPos = 6,
}
Protocol.Command =
{
-- РґѕЯМеРТйК±Ц»ДЬУГ16ЅшЦЖ»тЧЦ·ы±нКѕ,Г»УРµД»°ѕНЧўКНµф
Start=
{
--РґЙППВЧуУТ, ЧуЙПЈ¬ЧуПВЈ¬УТЙПЈ¬УТПВ
-- 1 2 3 4 5 6 7 8 9
TileUp = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00",
TileDown = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00",
PanLeft = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00",
PanRight = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00",
LeftUp = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00",
LeftDown = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00",
RightUp = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00",
RightDown = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00",
ZoomWide = "0xA0, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00",
ZoomTele = "0xA0, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00",
FocusNear = "0xA0, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00",
FocusFar = "0xA0, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00",
IrisSmall = "0xA0, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00",
IrisLarge = "0xA0, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00",
-- Ф¤ЦГµгІЩЧчЈЁЙиЦГЈ¬ЗеіэЈ¬ЧЄЦГ)
SetPreset = "0xA0, 0x00, 0x00, 0x03, 0x50, 0x00, 0xFF, 0xFF, 0x00",
ClearPreset = "0xA0, 0x00, 0x00, 0x03, 0x51, 0x00, 0xFF, 0xFF, 0x00",
GoToPreset = "0xA0, 0x00, 0x00, 0x03, 0x19, 0x00, 0xFF, 0xFF, 0x00",
-- Л®ЖЅРэЧЄЈ¬
AutoPanOn = "0xA0, 0x00, 0x00, 0x03, 0x1A, 0x01, 0xFF, 0xFF, 0x00",
AutoPanOff = "0xA0, 0x00, 0x00, 0x03, 0x1A, 0x00, 0xFF, 0xFF, 0x00",
-- ЧФ¶ЇЙЁГиЈ¬ФЪФ¤ПИЙиЦГµД±ЯЅзЦРјдЧЄ¶Ї
AutoScanOn = "0xA0, 0x00, 0x00, 0x03, 0x13, 0x01, 0xFF, 0xFF, 0x00",
AutoScanOff = "0xA0, 0x00, 0x00, 0x03, 0x13, 0x00, 0xFF, 0xFF, 0x00",
-- №мјЈСІєЅ, Т»°гЦёДЈКЅ(ЙиЦГїЄКјЈ¬ЙиЦГЅбКшЈ¬ФЛРРЈ¬НЈЦ№Ј¬ЗеіэДЈКЅ
StartPattern = "0xA0, 0x00, 0x00, 0x03, 0x1B, 0x00, 0x01, 0xFF, 0x00",
StopPattern = "0xA0, 0x00, 0x00, 0x03, 0x1B, 0x00, 0x00, 0xFF, 0x00",
--ClearPattern = "",
-- ІЛµҐПа№ШІЩЧч
-- 1 2 3 4 5 6 7 8 9
Menu = "0xA0, 0x00, 0x00, 0x03, 0x17, 0x01, 0xFF, 0xFF, 0x00",
MenuExit = "0xA0, 0x00, 0x00, 0x03, 0x17, 0x00, 0xFF, 0xFF, 0x00",
MenuEnter = "0xA0, 0x00, 0x00, 0x03, 0x18, 0xFF, 0xFF, 0xFF, 0x00",
MenuUp = "0xA0, 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x00",
MenuDown = "0xA0, 0x00, 0x00, 0x03, 0x09, 0xFF, 0xFF, 0xFF, 0x00",
MenuLeft = "0xA0, 0x00, 0x00, 0x03, 0x05, 0xFF, 0xFF, 0xFF, 0x00",
MenuRight = "0xA0, 0x00, 0x00, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0x00",
--[[
ИэО¬¶ЁО»№¦ДЬЈ¬З°ѕЕёцЧЦЅЪ±нКѕЛ®ЖЅ·ЅПтµДФЛ¶ЇЈ¬ЦРјдѕЕёцЧЦЅЪ±нКѕґ№Ц±·ЅПтµДФЛ¶ЇЈ¬ЧоєуѕЕёцЧЦЅЪ±нКѕ±д±¶
З°ѕЕёцЧЦЅЪµДє¬ТеЈє3ЧЦЅЪµШЦ·,5ЧЦЅЪ±нКѕПтЧу»№КЗПтУТЈєЧу1УТ0,6Ј¬7 ЧЦЅЪ±нКѕПа¶ФФЛ¶ЇµДЦµЎЈ·¶О§ОЄЈє0 - 708H
ЦРјдѕЕёцЧЦЅЪµДє¬ТеЈє12ЧЦЅЪµШЦ·Ј¬14ЧЦЅЪ±нКѕПтЙП»№КЗПтПВЈєЙП0ПВ1Ј¬15Ј¬16ЧЦЅЪ±нКѕґ№Ц±Па¶ФФЛ¶ЇµДЦµ Ј¬·¶О§ОЄЈє(јыПВ±н)
єуѕЕёцЧЦЅЪµДє¬ТеЈє21ЧЦЅЪ±нКѕµШЦ·Ј¬23ёцЧЦЅЪ±нКѕ±д±¶ґуРЎЈєґу0РЎ1Ј¬24Ј¬25ЧЦЅЪ±нКѕ±д±¶µДґуРЎЎЈ
--]]
Position = "a0 00 01 20 00 05 00 ff da a0 00 01 30 01 00 50 ff 7e a0 00 01 40 00 0d 2c ff 86",
},
Stop =
{
-- 1 2 3 4 5 6 7 8 9
TileUp = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
TileDown = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
PanLeft = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
PanRight = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
LeftUp = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
LeftDown = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
RightUp = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
RightDown = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
ZoomWide = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
ZoomTele = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
FocusNear = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
FocusFar = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
IrisSmall = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
IrisLarge = "0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00",
},
}
Protocol.Checksum = function (s)
--µЪ9О»ОЄРЈСйВл, ЖдЦµОЄ0xFFFFјхИҐµЪ2µЅ8О»Ц®єНФЩИЎµН8О».
if table.getn(s) == 9 then
local sum = s[2] + s[3] + s[4] + s[5] + s[6] + s[7] + s[8];
s[9] = bits.band(0xFFFF - sum, 0xff);
else
local sum1 = s[2] + s[3] + s[4] + s[5] + s[6] + s[7] + s[8];
s[9] = bits.band(0xFFFF - sum1,0xff);
local sum2 = s[11] + s[12] + s[13] + s[14] + s[15] + s[16] + s[17];
s[18] = bits.band(0xFFFF- sum2,0xff);
local sum3 = s[20] + s[21] + s[22] + s[23] + s[24] + s[25] + s[26];
s[27] = bits.band(0xFFFF - sum3,0xff);
end;
return s;
end;
Protocol.CamAddrProcess = function(s, addr)
local addr = math.mod(addr,256);
if table.getn(s) == 9 then
s[3] = addr;
else
s[21] , s[12] , s[3] = addr,addr,addr;
end;
return s;
end;
Protocol.PatternProcess = function(s, num)
s[6] = num;
return s;
end;
Protocol.SpeedProcess = function(opttable, arg1, arg2)
if opttable[6] ~= 0 then
opttable[8] = arg1;
opttable[7] = arg2;
end;
return opttable;
end;
Protocol.PositionProcess = function(s, hor, ver, zoom)
-- ПВГжЦ»ґ¦АнїмЛЩ¶ЁО»№¦ДЬ
print("hor is:",hor);
print("ver is :",ver);
print("zoom is:",zoom);
-- ЧуЈ¬ПВ К±hor єНver КЗХэКэ
-- УТЈ¬ЙП К±hor єНver КЗёєКэ
--[[
ИэО¬¶ЁО»№¦ДЬЈ¬З°ѕЕёцЧЦЅЪ±нКѕЛ®ЖЅ·ЅПтµДФЛ¶ЇЈ¬ЦРјдѕЕёцЧЦЅЪ±нКѕґ№Ц±·ЅПтµДФЛ¶ЇЈ¬ЧоєуѕЕёцЧЦЅЪ±нКѕ±д±¶
З°ѕЕёцЧЦЅЪµДє¬ТеЈє3ЧЦЅЪµШЦ·,5ЧЦЅЪ±нКѕПтЧу»№КЗПтУТЈєЧу1УТ0,6Ј¬7 ЧЦЅЪ±нКѕПа¶ФФЛ¶ЇµДЦµЎЈ·¶О§ОЄЈє0 - 708H
ЦРјдѕЕёцЧЦЅЪµДє¬ТеЈє12ЧЦЅЪµШЦ·Ј¬14ЧЦЅЪ±нКѕПтЙП»№КЗПтПВЈєЙП0ПВ1Ј¬15Ј¬16ЧЦЅЪ±нКѕґ№Ц±Па¶ФФЛ¶ЇµДЦµ Ј¬·¶О§ОЄЈє(јыПВ±н)
єуѕЕёцЧЦЅЪµДє¬ТеЈє21ЧЦЅЪ±нКѕµШЦ·Ј¬23ёцЧЦЅЪ±нКѕ±д±¶ґуРЎЈєґу0РЎ1Ј¬24Ј¬25ЧЦЅЪ±нКѕ±д±¶µДґуРЎЎЈ
--]]
local max_pos_zoom = 22;
zoom_num_table = {0x008,0x574,0x7B8,0x90C,0x9F4,0xAA0,0xB2C,0xBA0,0xC04,0xC58,0xCA4,0xCEC,0xD28, 0xD5C,0xD8C,0xDB4,0xDD8,0xDF8,0xE10,0xE28,0xE38,0xE44};
local max_pan_value = 0x708;
local max_tilt_value = 0x16;
if hor >= 0 then
s[5] = 0x00;
print("right");
else
print("left");
s[5] = 0x01;
end;
hor = math.abs(hor);
if ver >= 0 then
print("down");
s[14] = 0x01;
else
print("up");
s[14] = 0x00;
end;
ver = math.abs(ver);
if zoom > 0 then
print("room tele");
s[23] = 0x00;
else
print("room wide");
s[23] = 0x01;
end;
local zoom_value = math.mod(bits.band(math.abs(zoom),0x7f),0x04);
print("zoom_value:",zoom_value);
--ґ¦АнЛ®ЖЅО»ЦГ
local pan = math.floor(hor/80);
print("1");
s[6] = bits.band(math.floor(pan/256),0xff);
print("2");
s[7] = bits.band(math.mod(pan,256),0xff)
--ґ¦Анґ№Ц±О»ЦГ
print("3");
local tilt = math.floor(ver/226);
print("4");
s[15] = bits.band(math.floor(tilt/256),0xff);
print("5");
s[16] = bits.band(math.mod(tilt,256),0xff);
--ґ¦Ан±д±¶ґуРЎ
print("6");
if zoom_value >= 1 then
print("7");
print("zoom_num_table[zoom_value]:",zoom_num_table[zoom_value]);
local zoom_num = zoom_num_table[zoom_value];
s[24] = bits.band(math.floor(zoom_num/256),0xff);
s[25] = bits.band(math.mod(zoom_num,256),0xff);
end;
return s;
end;
return Protocol;