Author Topic: Изменить способ обращения  (Read 18442 times)

0 Members and 1 Guest are viewing this topic.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #105 on: November 30, 2019, 10:27:55 PM »
Я понимаю, что по цифрам все норм, но мне кажется это все слишком сложно реализовано, я просто не разбираюсь в коде, поэтому мне сложно реализовать, все мысли, вот одна из них. Если есть возможность, просто передать 2 числа из переменных $xcor и $ycor в плату и без всяких расчетов просто использовать их, но числа будут как положительные так и отрицательные, вот пример
Code: (clickermann) [Select]
SUB(Mouse_click, $button)   // button = 1 это левая кнопка, 2 -  правая, 3 - средняя
   action(268435456 + $button) //в ардуино выйдет первая функция и нужный из трех параметров
END_SUB

SUB(move)
   $xcor = $_return1 - $_xmouse
   $ycor = $_return2 - $_ymouse
   LOGWRITE ($xcor," x ",$ycor)
   // Тут надо отправить на плату, растояние, которое должен, пройти курсор
END_SUB

GETSCREEN
IF_PIXEL_IN(100,70,100,70, 1691714)
   move()
   Mouse_click(1)
   WAITMS(100)
END_IF
halt

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #106 on: November 30, 2019, 10:41:23 PM »
в том то и дело, что твои две координаты размером по 1байту передаются одним параметром в 2байта. В вин10 открой калькулятор, выбери программист.



int(774/256) = 3   - один параметр
774 - int(774/256)*256 = 6   - второй параметр
« Last Edit: November 30, 2019, 10:45:05 PM by dramster »

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #107 on: November 30, 2019, 10:44:11 PM »
Извини но я не совсем понимаю про что ты говоришь, ты хочешь сказать что это не возможно? А если коры отправить, не числом а строкой?

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #108 on: November 30, 2019, 10:46:55 PM »
Извини но я не совсем понимаю про что ты говоришь, ты хочешь сказать что это не возможно? А если коры отправить, не числом а строкой?

Пожалуйста, отправляй, только придется потом делить строку на два числа, в си это не так просто, хотя можешь разобраться если есть желание, мне проще с числами  ;).

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #109 on: November 30, 2019, 10:49:07 PM »
Извини но я не совсем понимаю про что ты говоришь, ты хочешь сказать что это не возможно? А если коры отправить, не числом а строкой?

Пожалуйста, отправляй, только придется потом делить строку на два числа, в си это не так просто, хотя можешь разобраться если есть желание, мне проще с числами  ;).

И нужно учитавать, что параметры в Mouse.move() ограничены именно по одному байту signed char, это от -128 до 127

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #110 on: December 01, 2019, 07:00:29 PM »
Да, с перемещением курсора оказалось сложновато, там перемещение идет как в процедуре mover. Да и были проблемы со скоростью движения мыши, и сейчас не слишком шустро работает, но приемлимо. Если кто-нибудь разберется с отправкой сообщений в порт через DLL, будет работать мгновенно.

Дописал все мышкины процедуры. Скетч для ардуино:
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;
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
  while (Serial.available() > 0) {
    int inchar = Serial.read();
    if (isDigit(inchar)) {
      instring += (char)inchar;
    }
    if (inchar == '\n') {
    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);
     }
    }
   
    par = 0;

}

Библиотека для кликермана, сверху все процедуры, незабывать про номер порта:
Code: (clickermann) [Select]
//#name "Arduino_mouse"

$comport = 5  //незабываем нужный порт прописывать
////////////////////////////////////////////////

// Все процедуры с мышью  через ардуино

//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) 



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

      EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 33554432 + $x_dist*256 + $y_dist))
     
      WHILE(($x_temp = $_xmouse)&($y_temp = $_ymouse))
         waitms(50)
      END_CYC
     
   END_CYC
END_SUB

//lclick
SUB(micro_lclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 16777217))
END_SUB

//rclick
SUB(micro_rclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 16777218))
END_SUB

//mclick
SUB(micro_mclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 16777219))
END_SUB

//ldown
SUB(micro_ldown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 50331649))
END_SUB

//rdown
SUB(micro_rdown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 50331650))
END_SUB

//mdown
SUB(micro_mdown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 50331651))
END_SUB

//lup
SUB(micro_lup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 67108865))
END_SUB

//rup
SUB(micro_rup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 67108866))
END_SUB

//mup
SUB(micro_mup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 67108867))
END_SUB

//dblclick
SUB(micro_dblclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 83886081))
END_SUB

//wheeldown
SUB(micro_wheeldown, $mult)   
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 100663423 + $mult))
END_SUB

//wheelup
SUB(micro_wheelup, $mult)   
   EXECUTE("shfile", STRCONCAT(" ", $comport, " ", 100663296 + $mult))
END_SUB

Все не тестировал, если что не работает, пиши.




Ах да, в файле shfile.bat , его в отдельную папку.
Code: (clickermann) [Select]
@echo off
Mode com%1 baud=9600 parity=n data=8 stop=1
echo %2 > com%1

На этот файл делаем ярлык, в свойствах "свернуто в значек", убираем расширение - "shfile",  кидаем в папку со скриптом. Vint, спасибо за идею.




Добавлено:

Добавил кручение колеса мыши wheel.down.up . Немного оптимизировал код.
« Last Edit: December 03, 2019, 10:33:42 PM by dramster »

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #111 on: December 02, 2019, 01:12:02 PM »
Спасибо тебе добрый человек за проделаный труд, пока нет возможности протестить это чудо, приду с работы проверю, а можно ещё прикрутить клавишу? Что бы правильно все вышло а я уже допишу остальные просто покажи куда.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #112 on: December 08, 2019, 11:33:50 PM »
Переписал пакетный файл так, чтобы он постоянно мониторил текстовый файл, в  который мы посылаем сообщения. Это ускорило перемещение курсора, теперь move работает быстро и  даже довольно реалистично.
Файл "shfile.bat" должен быть в одной папке со скриптом. Его содержимое:
Code: (text) [Select]
@echo off

Mode com5 baud=9600 parity=n data=8 stop=1

<nul set /p "=0">file.txt

:while
set /p param=< file.txt
if %param%==0 (goto while) else (goto next)
:next
<nul set /p "=0">file.txt
echo %param%> com5
goto while

В этом же файле прописываем свой номер ком порта в место com5, В ДВУХ МЕСТАХ!!!

Перед запуском основного скрипта кликермана, нужно запустить этот файл!!!



Дописал клавиатурные действия, кроме кейстринга. Но контроллер почему то правильно работает не с кодом клавиши клавиатуры, а его библиотека написана на прием ASCI символов (кодов символов). То есть, к примеру, micro_keydown(#A) - код кнопки = 65, а в ASCI таблице это заглавная буква "A", поэтому ардуина жмет левый шифт и кнопу "A". Чтобы нажалась именно кнопка "A" без шифта, нужно глянуть в таблицу ASCI - а там мелкая буква "a" имеет код 97. Поэтому, чтобы нажатия работали правильно, нужно писать micro_keydown("a"), это и будет нажатие кнопки "a" без шифта.

Код скетча для контроллера ардуино:
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;
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
  while (Serial.available() > 0) {
    int inchar = Serial.read();
    if (isDigit(inchar)) {
      instring += (char)inchar;
    }
    if (inchar == '\n') {
    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;
 
}


Код кликермана с подпрограммами всех действий:
Code: (clickermann) [Select]
//#name "Arduino_mouse&keyboard"

////////////////////////////////////////////////

// Все процедуры с мышью и клавиатурой через ардуино

//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_ASCI писать не код клавиши, а символ ASCI.
// в ардуино как-то тупо сделали клавиатурные нажатия :/
//micro_keydown ($char_ASCI)
//micro_keyup ($char_ASCI)
//micro_keypress ($char_ASCI)



//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
     
      TFWRITE("file.txt", 33554432 + $x_dist*256 + $y_dist, 1)
     
      WHILE(TFREAD("file.txt", 1)!0)
         waitms(50)
      END_CYC
     
   END_CYC
END_SUB


//lclick
SUB(micro_lclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 16777217, 1)
END_SUB

//rclick
SUB(micro_rclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 16777218, 1)
END_SUB

//mclick
SUB(micro_mclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 16777219, 1)
END_SUB

//ldown
SUB(micro_ldown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 50331649, 1)
END_SUB

//rdown
SUB(micro_rdown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 50331650, 1)
END_SUB

//mdown
SUB(micro_mdown, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 50331651, 1)
END_SUB

//lup
SUB(micro_lup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 67108865, 1)
END_SUB

//rup
SUB(micro_rup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 67108866, 1)
END_SUB

//mup
SUB(micro_mup, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 67108867, 1)
END_SUB

//dblclick
SUB(micro_dblclick, $x_cor, $y_cor)
   micro_move($x_cor, $y_cor)
   TFWRITE("file.txt", 83886081, 1)
END_SUB

//wheeldown
SUB(micro_wheeldown, $mult)
   TFWRITE("file.txt", 100663423 + $mult, 1)
END_SUB

//wheelup
SUB(micro_wheelup, $mult)
   TFWRITE("file.txt", 100663296 + $mult, 1)
END_SUB

//keydown
SUB(micro_keydown, $char_ASCI)
   TFWRITE("file.txt", 117440512 + code($char_ASCI), 1)
END_SUB

//keyup
SUB(micro_keyup, $char_ASCI)
   TFWRITE("file.txt", 134217728 + code($char_ASCI), 1)
END_SUB

//keypress
SUB(micro_keypress, $char_ASCI)
   TFWRITE("file.txt", 150994944 + code($char_ASCI), 1)
END_SUB
« Last Edit: December 08, 2019, 11:42:41 PM by dramster »

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #113 on: May 25, 2020, 07:14:29 PM »
Привет, долго меня не было, реал затянул. Вот нашлось время и эта прекрасная тема опять понадобилась. Все установил все поставил, но столкнулся с парой проблем, скорость передвижения все таки медленная, остсюда вопрос можно ли без передвижения? Тупо мгновенно клик в заданные координаты? И вторая проблема почему то буквы у меня не печатает( с мышкой все нормально а с буквами беда может что то не правильно делаю?
Code: (clickermann) [Select]
micro_keypress ("a")

JacsoN

  • Активный участник
  • ***
  • Posts: 152
  • извините но мне нужны полнейшие обяснения
    • View Profile
Re: Изменить способ обращения
« Reply #114 on: February 17, 2021, 09:23:18 PM »
Ребята  предлогаю  поднять тему  и   продолжить  работу  приобрел  ардуино все  перепробывал   все то что с  8  страниц етой темы
Code: (clickermann) [Select]
#include "Mouse.h"
 
void setup() {
  Mouse.begin();
}
 
void loop() {

Mouse.click(MOUSE_LEFT);
delay(1000);
}
от что  у меня  получилось  стряпать защиту  пробивает на  ура ))))  но нужно сидеть слидить   плюс  ето  без  кликермана  а  хочу  теперь  както ето автоматизировать
« Last Edit: February 17, 2021, 10:19:21 PM by JacsoN »
если  есть  возможность  объясни  по  скайпу  что  да  как

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #115 on: February 17, 2021, 10:52:59 PM »
Предлагаю продолжить тут http://crapware.aidf.org/forum/index.php?topic=5529.0 , а эту тему закрыть. Тут из восьми страниц только пару постов по делу, остальное ни о чем.

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