Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Ivankak

Pages: [1] 2 3
1
Спасибо. Будем разбираться

2
Общие вопросы / Re: автоматизация в Давинчи
« on: September 29, 2021, 02:16:03 PM »
Могу сделать на AutoIt и кидать сообщения кликеру при событиях. Так же, наверно нужно сделать включение/отключение слежения. А может и не надо.
Если можно иметь такую возможность, то лучше ее иметь.
почитал вот эту тему.
http://crapware.aidf.org/forum/index.php?topic=305.msg2580#msg2580
А будет нормально работать, шустро?

3
Общие вопросы / Re: автоматизация в Давинчи
« on: September 29, 2021, 02:08:32 PM »
Проф пульты взаимодействуют с API программы и посылают в неё команды напрямую.

API у Давинчи есть, но там очень мало команд описано. Самое вкусное они скрывают. Я полазил на форумах. Никто не знает, как получить доступ к этим функциям. Поэтому блекмэджик может продавать свои панели по $30 000.
https://alliedbroadcastgroup.com/product/blackmagic-design-davinci-resolve-advanced-panel/
Есть еще другие производители, например Tangetn и Avid, которые имеют доступ этим функциям. Но их пульты тоже не дешевы.
самая дешевая б\у панель стоит $350 и очень мало, чего может.
https://www.amazon.com/tangent-LYSB01G3UTBHS-CMPTRACCS-Tangent-Ripple-Panel/dp/B01G3UTBHS
Хотя, с другой стороны, она стоит, как три трекбола от kesington :)


Quote
В системе курсор всего один, неоткуда взяться второму, это просто не предусмотрено в ОС.
Есть всякие такие http://adminxp.ru/dva-kursora/ методы сделать 2 курсора, но они не стабильны.
В 10й винде есть мультитач, значит есть возможность реагировать на несколько координат касания.
https://youtu.be/NnSJRRn8rQA

4
Общие вопросы / Re: автоматизация в Давинчи
« on: September 29, 2021, 01:26:46 PM »
Quote
Так скажи, нужно ли прокинуть события колеса и/или события перемещения?
это сделало бы работу удобнее.
Сейчас все изменения делаются вращением трекбола, а все указания координат кнопками.  Однако, если удастся получать событие поворота колеса мыши, то переключение по крайней мере между этими двумя органами можно будет делать автоматически.

А, что есть возможность добавить в кликерман функцию?


5
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 11:59:29 PM »
У профессиональных пультов для цветокора есть возможность крутить сразу 2 колеса, и они одновременно работают.
можно ли как-то кликерману прикрутить возможность управлять с 2-мя мышами с независимыми курсорами?
Хотя, зачем 2 мыши... Надо по очереди скакать туда - сюда. Если это делать достаточно часто, то есть шанс, что будет не заметно.

6
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 10:53:18 PM »
О! спасибо! А я прозевал.

7
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 02:54:24 PM »
правильно 1 раз 10мс на 2 цикла сначала4, а потом 6 кнопок.
И если туда добавить еще кнопок, то все равно будет только одна задержка.
что я не верно понимаю?

8
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 02:30:54 PM »
Code: [Select]
Да, сдвиг же, 10 кнопок сканирует. Но 10 мс там прописано всегда 6*10 ++но задержка только если кнопка нажата, а иначе на оба цикла только одна задержка 10 мс

9
Quote
Хоть я на заре и просил такую функцию, сейчас я считаю это лютой дичью. Всегда можно сделать по другому и в большинстве случаев это будет более правильно.
Знаю, что так можно в PHP может ещё где. Хорошо, конечно, когда функционал шире. Но в том виде какая она сейчас (с ограничениями), эта штука не пригодилась ни разу.
Code: (clickermann) [Select]
print(GETVAR(STRCONCAT("$",$str,$arr[0], [2]))) это прекрасно, что есть! Мне поможет.
Возможно, мало кто  будет использовать такую фишку, но если будут n-мерные массивы, то можно и без этого. Это же костыль для перебора имен массивов.

10
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 01:27:41 PM »
Почему перешёл на ISKEYDOWN?
ISKEYDOWN хорошо, когда клавиш мало. Их уже 24 шт. Сейчас цикл сканирования 24 * 10 + ещё чуть ≈ 250 ms
цикл сканирования 6 позиций. там есть сдвиг.
Но задержка возникает только если кнопка зажата. Если не зажата, то даже на 24 кнопки будет один раз 10мс.

У меня не получилось сделать на GetskeyDown стабильное переключение. я экспериментировал с задержками, но четкого переключения не получилось.

Quote
Работает ли мой код у вас?
Без понятия. У меня же нет Давинчи. Если только по скрину поелозить, так нужно координаты переделывать, там же всё захордкоржено.
Блекмэджик не Адоб. В Давинчи всё всегда на местах. Очень мало какие окна можно отцепить. Это окно с колесам всегда на месте. Именно по этой причине вся эта возня с программированием имеет смысл.
Если экран 1920х1080 то всё совпадёт.
Вопрос не в том, попадет или нет на координаты, тут сомнений нет, а стабильно ли переключается по кнопкам?

по поводу "захордкоржено" - планирую добавить распознавание имени страницы, чтоб скрипт не путался в них. А то дофига кнопок жать - не удобно получается.

я написал отдельный скрипт для задания координат. Задать возможно надо один раз, но таких страниц по 24 координаты у Двинчи как минимум 5 штук, а может еще чего захочется добавить потом. И такое количество пар 2х и 3х значных чисел записывать вручную тяжелее, чем написать скрипт.

Пользоваться скриптом так:
в логе пишется название элемента например "Lift Whill"
подводишь мышь к нему
нажимаешь Q
координаты записываются в массив
по окончании прохода по всем элементам координаты собираются в массивах X и Y
массивы записываются в строчные переменные через запятую (тут мне не хватило оператора, пришлось склеивать строку)
Строчные переменные  записываются в строки файла.

Code: (clickermann) [Select]
LOGCLEAR

$csv = "koorda.csv"

strseparate(TFREAD($csv, 2), ",", $Names)
strseparate(TFREAD($csv, 3), ",", $X)
strseparate(TFREAD($csv, 4), ",", $y)


for ($n=7, $n<ARRSIZE($names))
   print ($names[$n])
   WHILE(iskeydown(#q) = 0)
      waitms(20)
   END_CYC
   WHILE(iskeydown(#q)=1)
      print ("нажата"," ",$n)
      waitms(20)
      WHILE(iskeydown(#q) = 1)  //тут пока не отпустит
         waitms(50)
      END_CYC

      $x[$n]= $_xmouse
      $y[$n]= $_ymouse
      print("x=",$x[$n],"y=",$y[$n],"$n=",$n)


   END_CYC
END_CYC

for ($n=0, $n<ARRSIZE($names))
   print($x[$n],", ")
   print($y[$n],", ")
END_CYC
$Xstr=$x[0]
$ystr=$y[0]
for ($n=1, $n<ARRSIZE($names))
   
   $Xstr= STRCONCAT($Xstr,",", $x[$n])
   $Ystr= STRCONCAT($Ystr,",", $Y[$n])
   
END_CYC
print($Xstr)
print($Ystr)

$scva= "ko.csv"

TFDELETE($scva, 3 )
TFWRITE ($scva, $xstr, 3 )
TFDELETE($scva, 4 )
TFWRITE ($scva, $ystr, 4 )

halt

Quote
В справке есть все эти коды
Язык сценариев -- >> Приложение 1. Коды клавиш
я дал ссылку на пост паре человек, которые далеки от программирования и они не будут открывать хэлп :)

Quote
Лучше самому преобразовать для нужного диапазона символов. Вот цифры и буквы:

Code: (clickermann) [Select]
$liters = "0123456789:::::::ABCDEFGHIJKLMNOPQRSTUVWXYZ"
$code = STRPOS($liters, "Z") + 47
print($code)
Да, стоит сделать такую подпрограмму. Она отработает 1 раз при загрузке и  не будет тормозить работу, а удобства добавит сильно.
блин, я не знал про оператор STRPOS. И мне не пришло бы в голову забить промежуток двоеточиями. Я бы сделал через условия :)
Так, конечно, изящно выглядит.

Про массивы. Для этой задачи вероятно я перепишу циклы еще раз. По идее надо эмулировать 4х мерный массив. 3х6х4х5.
размер 3 это кнопка клавиатуры +2 координаты
размер 6 элементов для одного колеса
размер 4 колеса
размер 5 экранов.

Если б можно было имя массива задавать, переменной, то было бы удобно организовывать цикл по одномерным массивам, чтобы собрать из них 3х или 4х мерный.
Но и так придумаю что-нибудь. Наверное сделаю больше строк в csv.

Quote
С именами я не понял. В чём проблема задать нужные имена. Хранил бы в ini и проблем бы не было ни с секциями ни с именами. В csv тоже не проблема вроде.
В ini файле не наглядно хранить координаты, они же парами, и к ним еще клавиша, которая их вызывает. И создавать этот ini хлопотно в моем случае. Сложно проконтролировать правильность.
В CSV , когда открываешь  в табличном редакторе - все видно наглядно- строки, столбцы.

11
Хотелось бы получать события мыши, когда пользователь что-то делает.
Сейчас есть только текущие координаты, но есть же еще нажатия на кнопки и кручение колеса.
Можно ли сделать трансляцию этих событий в кликерман?

Можно ли сделать, чтобы имя переменной само могло бы быть строковой переменной?
Чтоб код в строке 20 делал то же, что в строке 21.
Code: (clickermann) [Select]
$arr[0]= "Маши"
$arr[2]= "Пети"
$arr[2]= "Васи"
 
$str= "Сумка"
 
//Массивы, что в сумке?
$СумкаМаши[0]= "печенье"
$СумкаМаши[1]= "помада
$СумкаМаши[2]= "расчёска"
 
$СумкаПети[0]= "машинка"
$СумкаПети[1]= "гайка"
$СумкаПети[2]= "петарда"
 
$СумкаВаси[0]= "расческа"
$СумкаВаси[1]= "шарик"
$СумкаВаси[2]= "ручка"
 
print(STRCONCAT("$",$str,$arr[0],[2]))
print($СумкаМаши[2])
waitms(50)
 
halt

Не хватает n-мерных массивов. Костыль со сдвигом для создания псевдо двухмерности не очень удобный, потому, что размер массива вычислять сразу становится не удобно.

Не удобно задавать массивы.
Запись
Code: (clickermann) [Select]
$arr[0]=
$arr[1]=
$arr[2]=
$arr[3]=
$arr[4]=
не очень компактная
запись через строковую переменную, конечно, компактнее.
Code: (clickermann) [Select]
$Str="11,22,33,44,55,66"
strseparate($str, ",", $Arr)
а можно сделать в одну строку задание массива?

Есть оператор strseparate для создания массива из строки.
Обратного действия нету, чтобы массив записать в строку файла. (или я не нашел?)



12
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 05:02:29 AM »
Сделал тестовую версию. Если кто-то попробует - пожалуйста, отпишитесь.
Работает пока 4-мя колесами во вкладке Primaries. Это просто тест. Потом будет остальное.
1-4 выбор колеса
помещает курсор на элемент управления и зажимает лкм. Чтобы использовать мышь свободно надо кликнуть.
пока программа работает она будет захватывать при нажатии кнопок курсор. остановить программу можно кнопкой стоп в Кликермане.
Alt+s не сработает, потому, что Давинчи перехватывает свой шоткат "добавить ноду после"

w - Y
e - R
r - G
t - B
y - крутилка под колесом


Code: (clickermann) [Select]
SUB(Will)
   //подпрограмма установки мыши с зажатой лкм на нужную координату
   LOGCLEAR
   LUP($_xmouse, $_ymouse)
   WAITMS(10)
   LDOWN($X[$N], $Y[$N])
   print("$Names=", $Names[$n])
   print("координаты ", $X[$N],",", $Y[$N])
   
END_SUB

LOGCLEAR

$csv = "koorda.csv"          //задаем имя файла с координатиами
//читаем строки  файла в массивы
strseparate(TFREAD($csv, 2), ",", $Names)
strseparate(TFREAD($csv, 3), ",", $X)
strseparate(TFREAD($csv, 4), ",", $y)
strseparate(TFREAD($csv, 5), ",", $Keya)
//strseparate(TFREAD($csv, 6), ",", $Keyb)
//trseparate(TFREAD($csv, 7), ",", $Keyc)
print("массив создан")
print("$keya[18]=",$keya[18])


$SHIFT=1
WHILE(1)                                   // начало бесконечного цикла
   FOR($S=49,$s<53) //значения кнопок 1-4
      IF(ISKEYDOWN($s)=1)
         WHILE(iskeydown($s)=1)  //если клавиша все еще нажата, то подвисам тут пока не отпустит
            waitms(10)
         END_CYC
         
         $n=($s-49)*6+1
        Will()
        $SHIFT=$n

      end_if
   END_CYC
   
   
   
   FOR ($n=$SHIFT, $n<$SHIFT+6)
 //  PRINT($SHIFT, " " ,$N)
      if(ISKEYDOWN($keya[$n])=1)//если нажата одна из кнопок массива Keya то
         Will()                //исполнить подпрограмму
         WHILE(iskeydown($keya[$n]) = 1)  //если клавиша все еще нажата, то подвисам тут пока не отпустит
            waitms(10)
         END_CYC
      end_if
      WAITMS(10)
   END_CYC
END_CYC


содержимое файла koorda.csv
файл можно редактировать в табличном редакторе. Например Apache OpenOffice Calc https://www.openoffice.org/
кнопки можно переназначать в 5-й строке, которая начинается с "Keya" в соответствии с этой таблицей
https://github.com/sepehrsohrabi/Decimal-Virtual-Key-Codes

Code: [Select]
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
0,Lift Whill,Lift Y,Lift R,Lift G,Lift B,Shad Roll,Gamma Whill,Gamma Y,Gamma R,Gamma G,Gamma B,Gamma Roll,Gain Whill,Gain Y,Gain Y,Gain G,Gain B,Gain Roll,Offset Whill,Offset Y,Offset R,Offset G,Offset B,Offset Roll
x1,90,34,75,109,146,85,268,210,252,288,325,271,447,389,431,467,504,442,624,573,573,627,676,624
y1,854,944,944,944,944,960,856,944,944,944,944,960,855,944,944,944,944,960,854,944,944,944,944,961
Keya,81,87,69,82,84,89,81,87,69,82,84,89,81,87,69,82,84,89,81,87,69,82,84,89
Keyb,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Keyc,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,Q или 1,w,e,r,t,y,Q или 2,w,e,r,t,y,Q или 3,w,e,r,t,y,Q или 4,w,e,r,t,y

13
Общие вопросы / Re: автоматизация в Давинчи
« on: September 28, 2021, 12:02:04 AM »
Как сделать чтоб имя переменой само было бы переменной?
как исправить строку 20, чтоб она печатала то же, что и 21?

Code: (clickermann) [Select]
$arr[0]= "Маши"
$arr[2]= "Пети"
$arr[2]= "Васи"

$str= "Сумка"

//Массивы, что в сумке?
$СумкаМаши[0]= "печенье"
$СумкаМаши[1]= "помада
$СумкаМаши[2]= "расчёска"

$СумкаПети[0]= "машинка"
$СумкаПети[1]= "гайка"
$СумкаПети[2]= "петарда"

$СумкаВаси[0]= "расческа"
$СумкаВаси[1]= "шарик"
$СумкаВаси[2]= "ручка"

print(STRCONCAT("$",$str,$arr[0],[2]))
print($СумкаМаши[2])
waitms(50)

halt

14
Если jpg не подходит по качеству, то можно попробовать tiff с компрессией. У него встроенная zip и lzw без потерь.  можешь получить уменьшение до 2 раз.
Размер компрессии без потерь всегда сильно зависит от содержимого картинки. Судя по тому, что у тебя такая мелкая картинка имеет размер 3 мега, у тебя либо много мелких деталей (очень мелкий шрифт) либо шумы.
Попробуй ffmpeg для конвертации, можно прямо из кликермана запускать его и в командной строке ему все параметры передать.
 логика такая:
сохраняешь png
вызываешь внешнюю программу ffmpeg и конвертируешь ей файл в tiff
удаляешь png

тут про конвертацию
https://superuser.com/questions/827606/use-ffmpeg-for-jpeg-to-tiff-conversion

Если у тебя чб текст, что можно палитру в grayscale конвертировать и\или сохранять в png-8 (оптимизированная палитра 256 (или 128 или 64 цветов), это может дать уменьшение в 2 раза, а распознавание не ухудшиться.

Если из кликермана запускать ffmpeg не удобно, то сначала сохраняешь свои скриншоты, а потом все групповым образом конвертируешь.
можно фотошопом в пакетном режиме, можно Faststoun или ffmpeg испоьзовать, что сподручнее.


15
Общие вопросы / Re: автоматизация в Давинчи
« on: September 24, 2021, 11:58:15 PM »
Quote
А разве у ардуино есть столько входов? Или там есть приблуды для расширения?
вот она приблуда для расширения. Их можно несколько подключить.
https://www.aliexpress.com/item/32957655097.html


Pages: [1] 2 3