anything

Автор Тема: Управление поворотной купольной камерой с ПК через RS232-RS485  (Прочитано 83323 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
Ну тогда озвучьте эти две команды если можете

Чего мелочиться, раз обещал протокол - вот он!
Комментарии на китайском ;)


--[[
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;

Оффлайн bender

  • Global Moderator
  • Hero Member
  • *****
  • Сообщений: 3002
я так понимаю здесь шпионы собрались и шифровками обмениваются ))))

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
я так понимаю здесь шпионы собрались и шифровками обмениваются ))))

Да нет, комментарии нормально переводяться со словарём ;)

Оффлайн helgboy

  • Newbie
  • *
  • Сообщений: 12
Спасибо за содействие но это не тот протокол, я встречал несколько видов протокола самсунг: Samsung (просто) - это как раз тот который Вы мне предоставили, Samsung M, Samsung T (он же Samsung SDC-1600).   Так вот мне нужен как раз как и просили форумчане Samsung T. В нем за вращение камерой и зум отвечает 5 бит(Значения:(04-влево)(02-вправо)(10-вниз)(08-вверх)(40-ЗумIn)), а за фокус 4 бит, где реализован Iris - ВОПРОС. 
А в вашем примере за вращение камерой отвечает 6 бит.

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
Спасибо за содействие но это не тот протокол, я встречал несколько видов протокола самсунг: Samsung (просто) - это как раз тот который Вы мне предоставили, Samsung M, Samsung T (он же Samsung SDC-1600).   Так вот мне нужен как раз как и просили форумчане Samsung T. В нем за вращение камерой и зум отвечает 5 бит(Значения:(04-влево)(02-вправо)(10-вниз)(08-вверх)(40-ЗумIn)), а за фокус 4 бит, где реализован Iris - ВОПРОС. 
А в вашем примере за вращение камерой отвечает 6 бит.
Скрипт не мой, а Дахуа. Это язык управления параметрами телеметрии камеры и как оно сделано так и есть.
Понятно что в чистом виде его не применить. Сейчас зашлю управляющие скрипты. Чтобы было более менее понятно.
« Последнее редактирование: Январь 16, 2014, 16:46:49 pm от iTuneDVR »

Форум по видеонаблюдению и безопасности


Оффлайн helgboy

  • Newbie
  • *
  • Сообщений: 12
Да тут итак все понятно, я же говорю Ваш протокол называется Samsung а мне нужен Samsung T. Я несколько источников проверил и во всех описаны все функции в Samsung T кроме Iris, похоже он не реализован в этом протоколе вообще.

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
Да тут итак все понятно, я же говорю Ваш протокол называется Samsung а мне нужен Samsung T. Я несколько источников проверил и во всех описаны все функции в Samsung T кроме Iris, похоже он не реализован в этом протоколе вообще.

Что есть тем поделился. Сейчас посмотрю у других моделей регистраторов.

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
Что за техника с таким протоколом, модель?

Оффлайн helgboy

  • Newbie
  • *
  • Сообщений: 12
Ну например камера D-max dsc-2000 и соответствующий пульт D-max dck-500, оттуда считал код и этой же камерой поуправлял с помощью проги, потом тот же протокол используется в регистраторе GeoVision 1480 в комплекте с платой 485 интерфейса. В GeoVision как раз очень хорошо это видно, там с програмvной  оболочки регистратора  можно выбрать 4 варианта протоколов Samsung

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
тот же протокол используется в регистраторе GeoVision 1480

Это же карта захвата, или....? Если будет прошивка от регистратора, который поддерживает протокол, то можно попытаться разобрать и посмотреть. ;)

На http://www.securitysamsung.ru/ тебе еще не ответили?

На
http://www.bricomp.net/msia/app/data/misc/20100831_5_Samsung-TProtocol_Eng(20010813).pdf
действительно iris не описан, возможно его нет или это аппаратно реализовали в режиме авто ;)

« Последнее редактирование: Январь 17, 2014, 00:15:02 am от iTuneDVR »

Оффлайн helgboy

  • Newbie
  • *
  • Сообщений: 12
Друзья рад сообщить, что обновленная версия программы для управления камерами опубликована на моем сайте.Добавлен протокол Samsung-T. Вот ссылка для скачивания программы    ссылка новичка: http://7volt.ru/download/soft/videodriver1_2_setup.zip [не активна]

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
Друзья рад сообщить, что обновленная версия программы для управления камерами опубликована на моем сайте.Добавлен протокол Samsung-T. Вот ссылка для скачивания программы   http://7volt.ru/download/soft/videodriver1_2_setup.zip

Неужели выслали протокол? Поделись ;)

Оффлайн helgboy

  • Newbie
  • *
  • Сообщений: 12
Нет не выслали сам все слил с пульта.
1 бит = A0
2 бит=N Камеры
3 бит=00
4 бит=1-FF 2-FN
5 бит= (04-влево)(02-вправо)(10-вниз)(8-вверх)(20-zoomin)(40-ZoomO)(B1-menu)
6 бит=SpeedX
7 бит=SpeedY
8 бит=speedZF
9 бит=FF-всегда (00 если menu)
10бит=AF
11 бит=Sum
Все числа естественно в шестнадцатиричной системе написаны.

Оффлайн iTuneDVR

  • Hero Member
  • *****
  • Сообщений: 1048
    • E-mail
Координальные отличия есть по сравнению с выложенным протоколом для самсунга?

Оффлайн helgboy

  • Newbie
  • *
  • Сообщений: 12
Уважаемые форумчане,сообщаю что вышла новая версия программы
Скачать архив можно с этой страницы  ссылка новичка: http://7volt.ru/index.php/market/soft-7volt/videodriver-1-3-detail [не активна]
В этой версии оптимизирован код программы и теперь ее загрузка проходит практически мгновенно.