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

0 Members and 3 Guests are viewing this topic.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #60 on: November 30, 2019, 03:58:03 PM »
все ясно, у тебя вообще ничего не идет в порт, с этого надо было и начинать.
Попробуй подпраь подпрограмму
Code: (clickermann) [Select]
SUB(action, $command)
   STRWRITELN ("file.bat"," ", 1) // стираем файл и пишем чушь изза глюков с ВОМ
   STRWRITELN ("file.bat", STRCONCAT("Mode com",$comport," baud=9600 parity=n data=8 stop=1"), 0)
   STRWRITELN ("file.bat", STRCONCAT("echo ",$command,"> com",$comport), 0)
   STRWRITELN ("file.bat", "pause", 0)
   EXECUTE("file.bat")
END_SUB
Вызови эту подпрограмму, и скажи что там в командной строке написано

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #61 on: November 30, 2019, 04:00:59 PM »
последний вариант
в последнем варианте не должно быть нулей, никак, ззначит не загрузил скетч. Еще раз, вот этот:
Code: (clickermann) [Select]
#include "Keyboard.h"
#include "Mouse.h"
 
String instring = "";
unsigned long val = 0; // создаем переменную в 4 байта
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
////////////////////////////////////////////////////////////////////////
  //ожидание команды от кликермана в виде строоки
  while (Serial.available() > 0) {
    int inchar = Serial.read(); // принимаем по одному символу ASCI (по другому пока я незнаю как передавать)
    if (isDigit(inchar)) { //если это цифра,
      instring += (char)inchar;   //то соединяем ее с предыдущей цифрой
    }
    if (inchar == '\n') { //как только закончили прием. '\n' значит перенос строки, значит конец передачи.
    val = instring.toInt(); //строку instring переделываем в число val
    instring = ""; //обнуляем строку
   }
   Serial.println(val, DEC);
  } //все, с приемом окончили, получили число val
 
////////////////////////////////////////////////////////////////////////
  //ожидаем, пока переменная val станет больше нуля
  if (val > 0) {
  //далее разбиваем наше число на биты, и судя по ним, делаем нужные действия
   int kmfunct =  val/268435456 ; //номер функции
   Serial.println(kmfunct, DEC); //смотрим номер функции
   switch (kmfunct) {
   
    case 1:  //  Mouse.click
      int click_par = val - kmfunct*268435456; // возможны 3 варианта - левая, правая, средняя
      switch (click_par) {
      case 1:
      Mouse.click(MOUSE_LEFT);
      break;
      case 2:
      Mouse.click(MOUSE_RIGHT);
      break;
      case 3:
      Mouse.click(MOUSE_MIDDLE);
      break;
     }     
      break;
     
    case 2: //  Mouse.move()
      char x_cor = (val - kmfunct*268435456)/256;
      char y_cor = val - x_cor*256 - kmfunct*268435456;
      Serial.println(x_cor, DEC); //смортим параметры сдвигов
      Serial.println(y_cor, DEC);
      Mouse.move(x_cor, y_cor, 0);
      break;
    }

  val = 0; //в конце обнуляем нашу переменную
  }
}

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #62 on: November 30, 2019, 04:04:00 PM »
Вот это в бат прописалось

Mode com0 baud=9600 parity=n data=8 stop=1
echo 1> com0
pause


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #63 on: November 30, 2019, 04:07:15 PM »
Code: (clickermann) [Select]
$comport = 6 // ну так ком порт прописать нужный надо!!!!!!! или у тебя в нулевой порт всунута плата?

SUB(action, $command)
   STRWRITELN ("file.bat"," ", 1) // стираем файл и пишем чушь изза глюков с ВОМ
   STRWRITELN ("file.bat", STRCONCAT("Mode com",$comport," baud=9600 parity=n data=8 stop=1"), 0)
   STRWRITELN ("file.bat", STRCONCAT("echo ",$command,"> com",$comport), 0)
   STRWRITELN ("file.bat", "pause", 0)
   EXECUTE("file.bat")
END_SUB

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #64 on: November 30, 2019, 04:08:41 PM »
последний вариант
в последнем варианте не должно быть нулей, никак, ззначит не загрузил скетч. Еще раз, вот этот:
Code: (clickermann) [Select]
#include "Keyboard.h"
#include "Mouse.h"
 
String instring = "";
unsigned long val = 0; // создаем переменную в 4 байта
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
////////////////////////////////////////////////////////////////////////
  //ожидание команды от кликермана в виде строоки
  while (Serial.available() > 0) {
    int inchar = Serial.read(); // принимаем по одному символу ASCI (по другому пока я незнаю как передавать)
    if (isDigit(inchar)) { //если это цифра,
      instring += (char)inchar;   //то соединяем ее с предыдущей цифрой
    }
    if (inchar == '\n') { //как только закончили прием. '\n' значит перенос строки, значит конец передачи.
    val = instring.toInt(); //строку instring переделываем в число val
    instring = ""; //обнуляем строку
   }
   Serial.println(val, DEC);
  } //все, с приемом окончили, получили число val
 
////////////////////////////////////////////////////////////////////////
  //ожидаем, пока переменная val станет больше нуля
  if (val > 0) {
  //далее разбиваем наше число на биты, и судя по ним, делаем нужные действия
   int kmfunct =  val/268435456 ; //номер функции
   Serial.println(kmfunct, DEC); //смотрим номер функции
   switch (kmfunct) {
   
    case 1:  //  Mouse.click
      int click_par = val - kmfunct*268435456; // возможны 3 варианта - левая, правая, средняя
      switch (click_par) {
      case 1:
      Mouse.click(MOUSE_LEFT);
      break;
      case 2:
      Mouse.click(MOUSE_RIGHT);
      break;
      case 3:
      Mouse.click(MOUSE_MIDDLE);
      break;
     }     
      break;
     
    case 2: //  Mouse.move()
      char x_cor = (val - kmfunct*268435456)/256;
      char y_cor = val - x_cor*256 - kmfunct*268435456;
      Serial.println(x_cor, DEC); //смортим параметры сдвигов
      Serial.println(y_cor, DEC);
      Mouse.move(x_cor, y_cor, 0);
      break;
    }

  val = 0; //в конце обнуляем нашу переменную
  }
}
Да я не заметил последнюю првку, ивяняюсь, теперь точно проверил, нули не идут, по прежнему ничего не происходит и в мониторе пусто 

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #65 on: November 30, 2019, 04:10:52 PM »
А теперь вместе, этот последний скетчь, и последняя подпрограмма с паузой, что там и там пишет? У меня есть подозрение, что если порт занят одним приложением, то он недоступен другим... :(

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #66 on: November 30, 2019, 04:14:14 PM »
У меня есть подозрение, что если порт занят одним приложением, то он недоступен другим... :(
На такую инфу я натыкался, это вроде так и еслть.

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #67 on: November 30, 2019, 04:17:57 PM »
Вместе такая шляпа

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #68 on: November 30, 2019, 04:18:12 PM »
ПОНЯЛ,  ХЕРОВО, щяс обдумаю что может быть не так. То есть посмотреть что происходит в ардуине у нас не выйдет....

Будем искать проблему вслепую.
« Last Edit: November 30, 2019, 04:20:21 PM by dramster »

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #69 on: November 30, 2019, 04:24:24 PM »
Может от легкого к сложному? Первый пример, с кликом правый левый тоже не работает.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #70 on: November 30, 2019, 04:28:00 PM »
Загрузи вот такой скетч и открой монитор порта, кликерман не трогай, просто всунь ардуину в усб и смотри в монитор порта.
Code: (clickermann) [Select]
#include "Keyboard.h"
#include "Mouse.h"
 
String instring = "";
unsigned long val = 536902177; // создаем переменную в 4 байта
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
////////////////////////////////////////////////////////////////////////
  //ожидание команды от кликермана в виде строоки
  while (Serial.available() > 0) {
    int inchar = Serial.read(); // принимаем по одному символу ASCI (по другому пока я незнаю как передавать)
    if (isDigit(inchar)) { //если это цифра,
      instring += (char)inchar;   //то соединяем ее с предыдущей цифрой
    }
    if (inchar == '\n') { //как только закончили прием. '\n' значит перенос строки, значит конец передачи.
    val = instring.toInt(); //строку instring переделываем в число val
    instring = ""; //обнуляем строку
   }
   Serial.println(val, DEC);
  } //все, с приемом окончили, получили число val
 
////////////////////////////////////////////////////////////////////////
  //ожидаем, пока переменная val станет больше нуля
  if (val > 0) {
  //далее разбиваем наше число на биты, и судя по ним, делаем нужные действия
   int kmfunct =  val/268435456 ; //номер функции
   Serial.println(kmfunct, DEC); //смотрим номер функции
   switch (kmfunct) {
   
    case 1:  //  Mouse.click
      int click_par = val - kmfunct*268435456; // возможны 3 варианта - левая, правая, средняя
      switch (click_par) {
      case 1:
      Mouse.click(MOUSE_LEFT);
      break;
      case 2:
      Mouse.click(MOUSE_RIGHT);
      break;
      case 3:
      Mouse.click(MOUSE_MIDDLE);
      break;
     }     
      break;
     
    case 2: //  Mouse.move()
      char x_cor = (val - kmfunct*268435456)/256;
      char y_cor = val - x_cor*256 - kmfunct*268435456;
      Serial.println(x_cor, DEC); //смортим параметры сдвигов
      Serial.println(y_cor, DEC);
      Mouse.move(x_cor, y_cor, 0);
      break;
    }
  delay(5000);

 // val = 0; //в конце обнуляем нашу переменную
  }
}

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #71 on: November 30, 2019, 04:32:34 PM »
Вот

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #72 on: November 30, 2019, 04:34:16 PM »
Понял, жди, гдето ошибка, щяс обдумаю.

Теперь такой скетч, также смотри монитор порта:
Code: (clickermann) [Select]
#include "Keyboard.h"
#include "Mouse.h"
 
String instring = "";
unsigned long val = 536902177; // создаем переменную в 4 байта
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
////////////////////////////////////////////////////////////////////////
  //ожидание команды от кликермана в виде строоки
  while (Serial.available() > 0) {
    int inchar = Serial.read(); // принимаем по одному символу ASCI (по другому пока я незнаю как передавать)
    if (isDigit(inchar)) { //если это цифра,
      instring += (char)inchar;   //то соединяем ее с предыдущей цифрой
    }
    if (inchar == '\n') { //как только закончили прием. '\n' значит перенос строки, значит конец передачи.
    val = instring.toInt(); //строку instring переделываем в число val
    instring = ""; //обнуляем строку
   }
   Serial.println(val, DEC);
  } //все, с приемом окончили, получили число val
 
////////////////////////////////////////////////////////////////////////
  //ожидаем, пока переменная val станет больше нуля
  if (val > 0) {
  //далее разбиваем наше число на биты, и судя по ним, делаем нужные действия
   int kmfunct =  val/268435456 ; //номер функции
   Serial.println(kmfunct, DEC); //смотрим номер функции
   switch (kmfunct) {
   
    case 1:  //  Mouse.click
      int click_par = val - kmfunct*268435456; // возможны 3 варианта - левая, правая, средняя
      switch (click_par) {
      case 1:
      Mouse.click(MOUSE_LEFT);
      break;
      case 2:
      Mouse.click(MOUSE_RIGHT);
      break;
      case 3:
      Mouse.click(MOUSE_MIDDLE);
      break;
     }     
      break;
     
    case 2: //  Mouse.move()
      Serial.println("Mouse_move");
      char x_cor = (val - kmfunct*268435456)/256;
      char y_cor = val - x_cor*256 - kmfunct*268435456;
      Serial.println(x_cor, DEC); //смортим параметры сдвигов
      Serial.println(y_cor, DEC);
      Mouse.move(x_cor, y_cor, 0);
      break;
    }
  delay(5000);

 // val = 0; //в конце обнуляем нашу переменную
  }
}
« Last Edit: November 30, 2019, 04:37:50 PM by dramster »

Ramzesia

  • Активный участник
  • ***
  • Posts: 263
    • View Profile
Re: Изменить способ обращения
« Reply #73 on: November 30, 2019, 04:46:14 PM »
Вроде то же самое

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Изменить способ обращения
« Reply #74 on: November 30, 2019, 04:50:08 PM »
Теперь так:
Code: (clickermann) [Select]
#include "Keyboard.h"
#include "Mouse.h"
 
String instring = "";
unsigned long val = 536902177; // создаем переменную в 4 байта
 
void setup() {
  Serial.begin(9600);
  Mouse.begin();
  Keyboard.begin();
}
 
void loop() {
////////////////////////////////////////////////////////////////////////
  //ожидание команды от кликермана в виде строоки
  while (Serial.available() > 0) {
    int inchar = Serial.read(); // принимаем по одному символу ASCI (по другому пока я незнаю как передавать)
    if (isDigit(inchar)) { //если это цифра,
      instring += (char)inchar;   //то соединяем ее с предыдущей цифрой
    }
    if (inchar == '\n') { //как только закончили прием. '\n' значит перенос строки, значит конец передачи.
    val = instring.toInt(); //строку instring переделываем в число val
    instring = ""; //обнуляем строку
   }
   Serial.println(val, DEC);
  } //все, с приемом окончили, получили число val
 
////////////////////////////////////////////////////////////////////////
  //ожидаем, пока переменная val станет больше нуля
  if (val > 0) {
  //далее разбиваем наше число на биты, и судя по ним, делаем нужные действия
   int kmfunct =  int(val/268435456) ; //номер функции
   Serial.println(kmfunct, DEC); //смотрим номер функции
   switch (kmfunct) {
   
    case 1:  //  Mouse.click
      int click_par = val - kmfunct*268435456; // возможны 3 варианта - левая, правая, средняя
      switch (click_par) {
      case 1:
      Mouse.click(MOUSE_LEFT);
      break;
      case 2:
      Mouse.click(MOUSE_RIGHT);
      break;
      case 3:
      Mouse.click(MOUSE_MIDDLE);
      break;
     }     
      break;
     
    case 2: //  Mouse.move()
      Serial.println("Mouse_move");
      char x_cor = (val - kmfunct*268435456)/256;
      char y_cor = val - x_cor*256 - kmfunct*268435456;
      Serial.println(x_cor, DEC); //смортим параметры сдвигов
      Serial.println(y_cor, DEC);
      Mouse.move(x_cor, y_cor, 0);
      break;
    }
  delay(5000);

 // val = 0; //в конце обнуляем нашу переменную
  }
}