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 - dramster

Pages: 1 2 3 [4] 5 6 ... 76
46
Общие вопросы / Re: while-for в sub'е
« on: February 21, 2021, 09:24:52 PM »
так я  думаю ету  тему стоит поднять в  верх ! ! !   есть тут   полезное  обьяснение

Объяснение чего? Что тут вообще полезного? Тема доисторическая, и ни о чем. Если у тебя конкретно что-то не получается, так и пиши что именно.

47
Общие вопросы / Re: Привязка к Bluestacks
« on: February 21, 2021, 09:19:52 PM »
вот как раз. можно я сюда напишу, чтобы новых тем не плодить

вот, как раз напилил скрипт на блюстакс, сижу его напильником обрабатываю. Опыта с кликерманом пока очень не хватает. Плюнул и запилил в полноэкранное окно, там цвета нормально видит. Заодно решаю вопрос, как бы его в полный экран разворачивать.

Попробовал задать свойства ярлыка - запускаться в полном окне, не помогло. Попробовал задать свойство исполняемого файла запускаться в полном окне - не помогло.

попробовал написать поиск координат нужного фрагмента экрана (квадратик в верхнем правом углу "во весь экран"), вот скрипт:

.......
......

понятно дело, работает, но только до первого случайного сдвига окна блюстакса.

присоветуете что нибудь?

Код не  смотрел, так как не к чему это. Сочетание клавиш WIN+стрелка вверх, WIN+стрелка вниз - развернуть и свернуть окно соответственно.

48
Общие вопросы / Re: Привязка к Bluestacks
« on: February 21, 2021, 09:07:33 PM »
Понял, спасибо за пояснение. Тоже хорошая вещь. Я хочу понять не для использования а чтобы брать и писать такое же и аналогичное. Просто учиться.
$_hwnd   Текущий hwnd (если 0, то привязки к окну нет)
по переменной тоже ясно. Но я все таки не нашел в документации этого либо плохо искал.

Справка - язык сценариев -введение - переменные и типы данных - таблица №1 - перечень служебных переменных.

Для версии 4.13:
$_xmouse Текущие координаты мыши по оси Х
$_ymouse Текущие координаты мыши по оси Y
$_xmax Максимально допустимое значение X, вычисляется из конфигурации рабочего стола
$_ymax Максимально допустимое значение Y, (..)
$_xmin Минимально допустимое значение X, (..)
$_ymin Минимально допустимое значение Y, (..)
$_return1 Используется для возврата в нее значения определенными инструкциями
$_return2 Аналогично
$_cursor Текущий вид указателя мыши (стрелка, палец и т.п.)
$_ms Системный таймер Windows, отсчитывающий миллисекунды с момента старта ОС
$_time_t Текущее время в формате Unix-систем (подробнее)
$_time_h Текущий час
$_time_m Текущая минута
$_time_s Текущая секунда
$_date_y Текущий год
$_date_m Текущий месяц
$_date_d Текущие число
$_time_str Текущие время
$_date_str Текущая дата
$_hwnd Текущий hwnd привязки (если 0, то привязки к окну нет)
$_hwnd_self Собственный hwnd кликера
$_pdir Текущая рабочая директория
$_ver_self Версия программы
$_ver_sys Версия системы
$_arch_sys Разрядность системы
$_param_str Параметры запуска программы, разделенные ";"

49
Общие вопросы / Re: 1 LCLICK= 4 LCLICK..?
« on: February 21, 2021, 09:01:46 PM »
Отлично ! ! !  а  почему  срабатывает толлько  1  раз  после  запуска    кликера ????  как сделать чтобы  работало всегда  когда  нажимаем  клавишу #1см  пирмер  мой
Code: (clickermann) [Select]
IF (iskeydown(#1)=1)
   WHILE(iskeydown(#1)=1)
      WAITMS(10)
   END_CYC
   for ($a, $a<4)
      KEYPRESS(#A)
     
      WAITMS(20)
   end_cyc
Else
   WAITMS(20)
END_IF

 :-\ Ты бы глянул дату создания этой темы, начало 2013 года.

Наращиваемая переменная в цикле FOR не обнуляется после завершения цикла. По этому, если это нужно, ее следует обнулять либо присваивать другое значение -  for ($a=0, $a<4)

В 2013 году там была черт его знает какая бородатая версия, и в ней скорее всего переменная обнулялась автоматом.

50

У тебя здесь съехали коды цифр на 1. Должно быть от 48 до 57

Поправил. Вообще было бы не плохо добавить все клавиши. Но, пока это никому не надо, то и мотивации нет чего-то допиливать, для себя функционала вполне хватает.

51
Общие вопросы / Re: время UNIX $_time_t
« on: February 19, 2021, 12:41:15 AM »
так  случайно  достался  скрипт  для   обучения  кто подскажет и  расжует   как  и  для чего  испольхуется  ето время UNIX  то  както  не  задумівался  почитал  мануал   там все   написано но  ничерта не  понятно   жду  подробностей   вот   в  принцепи  весь  код  где  я  озадачился  с  етим  временим 
Code: (clickermann) [Select]
$time = $_time_t + 5
WHILE($time > $_time_t)
   GETSCREEN (20,12,1200,24)
   COLORMODE(6,20,12,1200,24)
   IF_PICTURE_IN (20,12,1200,24,"3.bmp", -1,85)
      $time=0
      LOGWRITE ("Старт v2.5 ",$_return1," ",$_return2)
      $_r1= $_return1-1
      $_r2= $_return2-1
      $_r3= $_return1+6
      $_r4= $_return2+6
      LCLICK($_return1+2,$_return2+2)
      WAITMS(550)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
IF($time ! 0)
   LOGWRITE ("Стоп, ад не найден")
   SOUND("error.wav")
   SCREENSHOTEX(20,12,1200,24, "ад", 0)
   WAIT(3)
   HALT
END_IF
WHILE($var777 < 5)
   GETSCREEN (576,225,642,230)
   COLORMODE(6,576,225,642,230)
   SCREENSHOTFIX(576,225,642,230,"время_заказа.bmp", 0)
   WAITMS(20)
   KEYPRESS(#F5)       // обновить страницу
   WAITMS(150)
   
   $time = $_time_t + $t2 // таймер на обновление страницы
   WHILE($time > $_time_t)
      GETSCREEN ($_r1,$_r2,$_r3,$_r4)
      COLORMODE(6,$_r1,$_r2,$_r3,$_r4)
      IF_PICTURE_IN ($_r1,$_r2,$_r3,$_r4,"3.bmp", -1, 100)
         $time=0
      ELSE
         WAITMS(20)
      END_IF
   END_CYC
   IF($time ! 0)
      LOGWRITE ("Стоп, время истекло")
      SOUND("error.wav")
      //SOUND("load.wav")
      HALT
   END_IF
   WAITMS(20)
   GETSCREEN (576,225,642,230)
   COLORMODE(6,576,225,642,230)
   IF_PICTURE_IN (576,225,642,230,"время_.bmp",-1,100)
      WAITMS($t1)
   ELSE
      MOVE(243,225)
      WAITMS(50)
      MOVE(242,225)
      WAITMS(50)
      LCLICK(242,225)
      WAITMS(50)
      GETSCREEN(400,225,470,600)
      COLORMODE(6,400,225,470,600)
      IF_PICTURE_IN(400,225,470,600,"1.bmp",-1,100)
         $_r1=$_return1+50
         $_r2=$_return2+5
         $_r3=$_return1-10
         $_r4=$_return2+62
         MOVE($_return1,$_return2)
         WAITMS(50)
         MOVE($_return1+1,$_return2+1)
         WAITMS(100)
         LCLICK($_return1+2,$_return2+2)
         WAITMS(250)
         MOVE($_r3-1,$_r4-1)
         WAITMS(50)
         MOVE($_r3,$_r4)
         WAITMS(50)
         LCLICK($_r3+1,$_r4+1)
         WAITMS(250)
         MOVE($_r1-1,$_r2-1)
         WAITMS(50)
         MOVE($_r1,$_r2)
         WAITMS(50)
         LCLICK($_r1+1,$_r2+1)
         INC($var,1)
         LOGWRITE ($var," заказ  ")
         SOUND("error.wav")
         SCREENSHOTEX(576,225,642,230,"новый.bmp", 0) //
         WAITMS(550)
      END_IF
   END_IF
END_CYC
Как  узнать  ето  время    нужно с   етим  разобратся

пытался   узнать  ето время   таким  кодом  пока не  получается ......а  может ето вовсе не  для  етого но  попытка  была
Code: (clickermann) [Select]
$time = $_time_t
LOGWRITE ("$time")
HALT

 Исчисление времени у нас в обиходе не очень удобное - в минуте 60 сек, в часе 60 минут, в сутках 24 часа, в месяце 28-31дней. Все в разнобой. А теперь представь, как с таким исчислением времени работать в программировании. Это ж полная ж-па.
 Для упрощенного времяисчесления придумали считать его просто в секундах. Начали считать его с начала 70-го года. Чему равно время юникс сейчас, можно просто глянув его в логе print($_time_t).
 В твоем коде с помощью этой служебной переменной сделан таймер в цикле на 5 секунд. То есть там в цикле ищет картинку, и если ее не находит в течении пяти секунд, то цикл завершается и далее в условии IF($time ! 0) скрипт останавливает свою работу. Если картинку в течении пяти сек находит, то $time=0, выход из цикла и условие с завершением работы игнорируется (false).

Это я про первый цикл,  далее похожий "таймер на обновление страницы". И вроде как $t2 не объявлена, поэтому на этом месте работа завершится.

52
забыл  в видео  запрограмировать  ардуинку ++++

Как прошить ардуину я вроде как подробно описал выше, если у кого-то будут вопросы, тогда и будем разбираться  ;).

53
    Вот библиотека для всех версий (кроме х64), включая 4.13 и старше. Написал основные клавиши и клавиши модификаторы. Не достающие клавиши можете дописать сами.

Code: (clickermann) [Select]
$com = 5  //свой порт
 
//"Arduino_mouse&keyboard"  для версии 4.13 и старше.
 
////////////////////////////////////////////////
 
// Все процедуры с мышью и клавиатурой через ардуино
 
//micro_move ($x_cor, $y_cor)
//micro_lclick ($x_cor, $y_cor)
//micro_rclick ($x_cor, $y_cor)
//micro_mclick ($x_cor, $y_cor)
//micro_ldown ($x_cor, $y_cor)
//micro_rdown ($x_cor, $y_cor)
//micro_mdown ($x_cor, $y_cor)
//micro_lup ($x_cor, $y_cor)
//micro_rup ($x_cor, $y_cor)
//micro_mup ($x_cor, $y_cor)
//micro_dblclick ($x_cor, $y_cor)
//micro_wheeldown ($mult)
//micro_wheelup ($mult)
 

//micro_keydown (key_)
//micro_keyup (key_)
//micro_keypress (key_)

//коды клавиш, если чегото не хватает, дописывайте сами.
#define key_0:48
#define key_1:49
#define key_2:50
#define key_3:51
#define key_4:52
#define key_5:53
#define key_6:54
#define key_7:55
#define key_8:56
#define key_9:57
#define key_a:97
#define key_b:98
#define key_c:99
#define key_d:100
#define key_e:101
#define key_f:102
#define key_g:103
#define key_h:104
#define key_i:105
#define key_j:106
#define key_k:107
#define key_l:108
#define key_m:109
#define key_n:110
#define key_o:111
#define key_p:112
#define key_q:113
#define key_r:114
#define key_s:115
#define key_t:116
#define key_u:117
#define key_v:118
#define key_w:119
#define key_x:120
#define key_y:121
#define key_z:122
#define KEY_LEFT_CTRL:128
#define KEY_LEFT_SHIFT:129
#define KEY_LEFT_ALT:130
#define KEY_LEFT_GUI:131
#define KEY_RIGHT_CTRL:132
#define KEY_RIGHT_SHIFT:133
#define KEY_RIGHT_ALT:134
#define KEY_RIGHT_GUI:135
#define KEY_UP_ARROW:218
#define KEY_DOWN_ARROW:217
#define KEY_LEFT_ARROW:216
#define KEY_RIGHT_ARROW:215
#define KEY_BACKSPACE:178
#define KEY_TAB:179
#define KEY_RETURN:176
#define KEY_ESC:177
#define KEY_INSERT:209
#define KEY_DELETE:212
#define KEY_PAGE_UP:211
#define KEY_PAGE_DOWN:214
#define KEY_HOME:210
#define KEY_END:213
#define KEY_CAPS_LOCK:193
#define KEY_F1:194
#define KEY_F2:195
#define KEY_F3:196
#define KEY_F4:197
#define KEY_F5:198
#define KEY_F6:199
#define KEY_F7:200
#define KEY_F8:201
#define KEY_F9:202
#define KEY_F10:203
#define KEY_F11:204
#define KEY_F12:205
 
 
//move
SUB(micro_move, $x_cor, $y_cor)
 
   WHILE(DIST($x_cor, $y_cor, $_xmouse, $_ymouse) > 3)
 
      $x_temp = $_xmouse
      $y_temp = $_ymouse
 
      $x_dist = $x_cor - $_xmouse
      $y_dist = $y_cor - $_ymouse
 
      IF($x_dist < 0)
         $x_dist = 127 + int(SQRT(abs($x_dist*4)))
      else
         $x_dist =  int(SQRT(abs($x_dist*4)))
      END_IF
      IF($y_dist < 0)
         $y_dist = 127 + int(SQRT(abs($y_dist*4)))
      else
         $y_dist =  int(SQRT(abs($y_dist*4)))
      END_IF
      CALL ("micro_com.dll", $com, 33554432 + $x_dist*256 + $y_dist) 
 
   END_CYC
END_SUB
 
//lclick
SUB(micro_lclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 16777217)
END_SUB
 
//rclick
SUB(micro_rclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 16777218)
END_SUB
 
//mclick
SUB(micro_mclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 16777219)
END_SUB
 
//ldown
SUB(micro_ldown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 50331649)
END_SUB
 
//rdown
SUB(micro_rdown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 50331650)
END_SUB
 
//mdown
SUB(micro_mdown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 50331651)
END_SUB
 
//lup
SUB(micro_lup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 67108865)
END_SUB
 
//rup
SUB(micro_rup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 67108866)
END_SUB
 
//mup
SUB(micro_mup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 67108867)
END_SUB
 
//dblclick
SUB(micro_dblclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   CALL ("micro_com.dll", $com, 83886081)
END_SUB
 
//wheeldown
SUB(micro_wheeldown, $mult)
   CALL ("micro_com.dll", $com, 100663423 + $mult)
END_SUB
 
//wheelup
SUB(micro_wheelup, $mult)
   CALL ("micro_com.dll", $com, 100663296 + $mult)
END_SUB
 
//keydown
SUB(micro_keydown, $key_)
   CALL ("micro_com.dll", $com, 117440512 + int($key_))
END_SUB
 
//keyup
SUB(micro_keyup, $key_)
   CALL ("micro_com.dll", $com, 134217728 + int($key_))
END_SUB
 
//keypress
SUB(micro_keypress, $key_)
   CALL ("micro_com.dll", $com, 150994944 + int($key_))
END_SUB

Пример по использованию:
Code: (clickermann) [Select]
#include "Arduino_mouse_keyboard.cms"

//контроллер выделяет текст активного окна и удаляет его
wait(1)
micro_keydown (KEY_RIGHT_CTRL) //зажимает левый контрал
micro_keydown (key_a)     //зажимает клавишу "A"
waitms(100)
micro_keyup (key_a)     //отпускает клавишу "A"
micro_keyup (KEY_RIGHT_CTRL)  //отпускает левый контрал
waitms(100)
micro_keypress (KEY_BACKSPACE) //нажимает и отпускает клавишу BACKSPACE
halt

Добавленные клавиши:
Code: (текст) [Select]
key_0
key_1
key_2
key_3
key_4
key_5
key_6
key_7
key_8
key_9
key_a
key_b
key_c
key_d
key_e
key_f
key_g
key_h
key_i
key_j
key_k
key_l
key_m
key_n
key_o
key_p
key_q
key_r
key_s
key_t
key_u
key_v
key_w
key_x
key_y
key_z
KEY_LEFT_CTRL
KEY_LEFT_SHIFT
KEY_LEFT_ALT
KEY_LEFT_GUI
KEY_RIGHT_CTRL
KEY_RIGHT_SHIFT
KEY_RIGHT_ALT
KEY_RIGHT_GUI
KEY_UP_ARROW
KEY_DOWN_ARROW
KEY_LEFT_ARROW
KEY_RIGHT_ARROW
KEY_BACKSPACE
KEY_TAB
KEY_RETURN
KEY_ESC
KEY_INSERT
KEY_DELETE
KEY_PAGE_UP
KEY_PAGE_DOWN
KEY_HOME
KEY_END
KEY_CAPS_LOCK
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_F12

Места для вложений не хватает, так-что можете качать "Arduino_mouse_keyboard.cms" на ядиске https://disk.yandex.ru/d/rSA4Qcpjy3ziEg

54
По идее должно работать во всех версиях начиная с v4.0.002, там появился CALL, кроме v4.13 x64 .
Насчет клавиатурных действий я немного не уточнил, да и призабыл, что функция CODE() появилась только в версии v4.14.ххх  ::). Так-что для клавиатуры пока можно скачать бету отсюда http://crapware.aidf.org/forum/index.php?topic=356.msg2896#msg2896 . Но мышка должна работать на всех остальных версиях.
 Я даже видео записал https://www.youtube.com/watch?v=0n83fGce7nU :
1. качаю кликерман последнюю х32 версию с оффсайта
2. качаю свою длл и библиотеку с подпрограммами в одну папку
3. втыкаю прошитый контроллер и смотрю какой ком порт он использует
4. вписываю в "Arduino_mouse_keyboard.cms" номер порта и сохраняю
5. создаю и сохраняю тестовый скрипт, дописываю проверку ответа функции из длл print($_return1)
6. смотрю как двигается курсор, смотрю в логе ответ функции, он равен пяти, значит запись в ком прошла успешно

Насчет клавы конечно это я лохонулся, не подумал, что мало кто бету использует. Это поправимо, сейчас обдумаю как лучше это сделать (чтоб клава работала на старых версиях).






Готово http://crapware.aidf.org/forum/index.php?topic=5529.msg36250#msg36250 .

55
А теперь поподробнее, с чего начинать, что купить, как прошить, как запустить...


 1. Нам нужен сам контроллер ардуино. Подойдут только те, которые определяются на ПК как мышь и клавиатура. Те, о которых я в курсе - Arduino Micro, Arduino Pro Micro, Arduino Leonardo.

 

2. Подключаем наш девайс к ПК в любой USB. Смотрим в диспетчер устройств. Должно появиться три новых устройства - клавиатура HID, HID совместимая мышь, устройство с последовательным интерфейсом USB (COM). Номер COM порта запоминаем.



3. Далее нужно прошить наш контроллер. Для этого нужен софт. Качаем с оффсайта ардуино последнюю версию Arduino IDE https://www.arduino.cc/en/software . Я использую портативную версию для windows - "Windows ZIP file" . Она не требует установки, просто распаковать из архива, и готово, можно пользоваться.



4. Настраиваем IDE под наш контроллер. Меню - инструменты - плата: - Arduino Micro, либо Leonardo в зависимости от того что там у вас. Меню - инструменты - порт: - выбираем порт к которому подключен контроллер.



5. Все, можно загружать скетч. Берем тот что я написал, либо пишите свой. Мой:
Code: (clickermann) [Select]
#include <Mouse.h>
#include <Keyboard.h>
 
unsigned long par = 0;
String instring = "";
int kmfunct = 0;
int x_cor = 0;
int y_cor = 0;
int mult = 0;
int inchar = 0;
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
 
}
 
void loop() {
 
 
while(Serial.available() > 0){ 
inchar = Serial.read();
if (isDigit(inchar)) {
   instring += (char)inchar;     
    }   
}   
  par = instring.toInt();
  instring = "";
 
 
    if (par > 0) {
 
     kmfunct =  par/16777216 ;
     switch (kmfunct) {
 
     case 1:  //Mouse.click
      Mouse.click(par - kmfunct*16777216);
      break;   
     case 2:  //  Mouse.move
      x_cor = (par - kmfunct*16777216)/256;
      y_cor = par - x_cor*256 - kmfunct*16777216;
      if (x_cor > 127) x_cor = 127 - x_cor;
      if (y_cor > 127) y_cor = 127 - y_cor;
      Mouse.move(x_cor, y_cor, 0);
      break;
     case 3: //Mouse.press
      Mouse.press(par - kmfunct*16777216);
      break;
     case 4: //Mouse.release
      Mouse.release(par - kmfunct*16777216);
      break;
     case 5:  //Mouse.dblclick
      Mouse.click(par - kmfunct*16777216);
      delay(50);
      Mouse.click(par - kmfunct*16777216);
      break;
     case 6: //wheel.down.up
      mult = par - kmfunct*16777216;
      if (mult > 127) mult = 127 - mult;
      Mouse.move(0, 0, mult);
     case 7: // Keyboard.keydown
      Keyboard.press(par - kmfunct*16777216);
      break;
     case 8: // Keyboard.keyup
      Keyboard.release(par - kmfunct*16777216);
      break;
     case 9: // Keyboard.keypress
      Keyboard.write(par - kmfunct*16777216);
      break;
     }
    }
    par = 0;
 
}

Копируете и вставляете в редактор arduino. Жмете кнопку "проверить", пойдет компиляция скетча. После завершения в логе будет что-то типа
Quote
Скетч использует 7426 байт (25%) памяти устройства. Всего доступно 28672 байт.
Глобальные переменные используют 265 байт (10%) динамической памяти, оставляя 2295 байт для локальных переменных. Максимум: 2560 байт.

Значит все отлично, жмем кнопку "загрузка" и ждем пока скетч загрузится в контроллер. Если все в норме, то по итогу в логе будет: загрузка завершена, и тоже самое что и после проверки.





 6. Контроллер готов и ждет команды из COM порта. Для отправки сообщения в наш порт я написал DLL библиотеку  "micro_com.dll". Берем во вложении первого поста, либо вот с ядиска https://disk.yandex.ru/d/YuMXDEFLhWiD6A . Качаем (либо копируем) библиотеку с процедурами мыши и клавиатуры для Clickermann "Arduino_mouse_keyboard.cms" , во вложении, либо код из поста выше, либо с ядиска https://disk.yandex.ru/d/kmqlsabjb4RJvg . Кидаем эти два файла в одну папку. Открываем "Arduino_mouse_keyboard.cms" и прописываем в переменную $com номер порта, к которому подключена ардуина.


 7. Создаем наш основной скрипт, либо редактируем уже существующий. Подключаем в него "Arduino_mouse_keyboard.cms".
Code: (clickermann) [Select]
#include "Arduino_mouse_keyboard.cms"
Все процедуры, которые я пока написал:
Клавиатурные действия пока будут работать только на бета версии v4.14.003 beta x32 http://crapware.aidf.org/forum/index.php?topic=356.0 . В будущем напишу чтоб работали на старших версиях.

Будущее:
Обновленная библиотека для всех версий (кроме х64) в этом посте http://crapware.aidf.org/forum/index.php?topic=5529.msg36250#msg36250 , берем оттуда и пользуемся клавиатурой полноценно!!!

Code: (текст) [Select]
//micro_move ($x_cor, $y_cor)
//micro_lclick ($x_cor, $y_cor)
//micro_rclick ($x_cor, $y_cor)
//micro_mclick ($x_cor, $y_cor)
//micro_ldown ($x_cor, $y_cor)
//micro_rdown ($x_cor, $y_cor)
//micro_mdown ($x_cor, $y_cor)
//micro_lup ($x_cor, $y_cor)
//micro_rup ($x_cor, $y_cor)
//micro_mup ($x_cor, $y_cor)
//micro_dblclick ($x_cor, $y_cor)
//micro_wheeldown ($mult)
//micro_wheelup ($mult)
 
// вместо $char_ASCII писать не код клавиши, а символ ASCII.
// в ардуино как-то тупо сделали клавиатурные нажатия :/
// пока поддерживают только печатные символы, в будущем добавлю подпрограмму для клавиш-модификаторов.
//micro_keydown ($char_ASCII)
//micro_keyup ($char_ASCII)
//micro_keypress ($char_ASCII)

Ну и для проверки можно подергать курсором. Пишем к примеру такой код:
Code: (clickermann) [Select]
#include "Arduino_mouse_keyboard.cms"

wait(2)
micro_move (100, 100)
wait(2)
micro_move (500, 500)
wait(2)
micro_move (500, 100)
wait(2)
micro_move (100, 100)
halt
Жмем "применить" и сохраняем скрипт в папку с "micro_com.dll" и "Arduino_mouse_keyboard.cms". Запускаем и смотрим как курсор двигается по прописанным координатам.


 8. Радуемся.




Если курсор не двигается, то ищем где мы накосячили. DLL может помочь в этом. Функция из библиотеки возвращает код, сообщая, на каком моменте остановилась работа по общению с COM портом. Если все в норме, функция должна возвратить "5"
Code: (clickermann) [Select]
#include "Arduino_mouse_keyboard.cms"

wait(2)
micro_move (100, 100)
print($_return1)  //должно быть "5", иначе - пишите в этой теме, и подумаем в чем ошибка.
halt




Подробно о библиотеках Mouse и Keyboard для ардуино тут - https://doc.arduino.ua/ru/prog/MouseKeyboard либо на оффсайте на английском.
Коды клавиш-модификаторов тут - https://doc.arduino.ua/ru/prog/KeyboardModifiers .  Для них нужно будет писать отдельную подпрограмму, либо вызывать индивидуально.

DLL написана для х32 систем, соответственно версия кликермана должна быть х32!!!



Если у вас есть деньги на контроллер, то и пару копеек на развитие проекта не пожалейте. Вон, смотрю место на хостинге походу закончилось  :(, вложения не работают. Реквизиты тут http://crapware.aidf.org/page/clickermann .

56
Предлагаю продолжить тут http://crapware.aidf.org/forum/index.php?topic=5529.0 , а эту тему закрыть. Тут из восьми страниц только пару постов по делу, остальное ни о чем.

Сейчас я там постараюсь поподробнее описать работу, и с чего вообще начинать.

57
Да, вполне рабочий вариант, и намного проще и понятнее выйдет при использовании.
Только нужно учитывать, что число 17022021162947 очень большое, за пределами 4 байт. Не известно как такие числа будут вести себя в скрипте, скорее всего все будет норм. 


58
...хотелось как то обойти ограничение на 1 час работы скрипта.

Так  вот и мне хотелось, простейшим вариантом был поток.
Но мы же так просто не сдаемся!?
Немного усложнил задачу и добавил остановку по часу и минуте. И не важно сколько времени длится скрипт. Не используя отдельный поток.

Изначально расчеты взял отсюда http://crapware.aidf.org/forum/index.php?topic=5210.msg33805#msg33805

Code: (clickermann) [Select]
//вводим вручную время остановки, час и минуту
$end_h = 2 // час остановки
$end_m = 0  // минута остановки

//рассчет время окончания в юникс
IF($end_time_unix = 0)
   IF(int(($date_y-1968)/4) = ($date_y-1968)/4)
      STRSEPARATE ("31,29,31,30,31,30,31,31,30,31,30,31", ",", $month)
   ELSE
      STRSEPARATE ("31,28,31,30,31,30,31,31,30,31,30,31", ",", $month)
   END_IF
   FOR($a=0,$a<$_date_m-1)
      $all_md  = $month[$a] + $all_md
   END_CYC
   IF($_time_h > $end_h)
      $end_time_unix =(($_date_y-1970)*365+int(($_date_y-1969)/4))*86400 + $all_md*86400 + $_date_d*86400 + $end_h*3600 + $end_m*60
   ELSE
      $end_time_unix =(($_date_y-1970)*365+int(($_date_y-1969)/4))*86400 + $all_md*86400 + ($_date_d-1)*86400 + $end_h*3600 + $end_m*60
   END_IF   
END_IF
//----------------------

// основной скрипт
//...............
//...............
//...............






//в конце
IF($_time_t >= $end_time_unix)//если реальное время больше назначенного выше
   halt(1)  // стоп и закрыть кликер
END_IF

59
 Основная ошибка это знак >=. Представь, что мне нужно выключить скрипт в 12 ночи. В таком условии кликер сразу вырубится, и не важно сколько времени. Правильный знак в условии должен быть = .

60
Quote
IF($_time_h >= 2) // если время 2 часа ночи, или больше

То есть скрипт будет работать всего два часа, с 12  до двух ночи.  Остальное время  > либо = двум.

Правильно - IF($_time_h = 2).



Если полное выполнение скрипта может длиться больше часа, что мало вероятно, то можно выкинуть условие в отдельный поток с установкой флага финишного выполнения:
Code: (clickermann) [Select]
THREAD(finish, 1)
   IF($_time_h = 2) // если время 2 часа ночи
      $end_work = 1 // запоминаем, что пора спать
      SETTHREAD (finish, 0) // отключаем поток
   END_IF
   wait(5)
END_THREAD

// основной скрипт
//...............
//...............
//...............


//в конце
IF($end_work = 1) // проверяем, пора ли спать
   HALT(1) // стоп и закрыть кликер
END_IF

Pages: 1 2 3 [4] 5 6 ... 76