Zireael |
Отправлено: 26 Января, 2021 - 10:25:51
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: функция mouse_drag_right выбивает ошибку
Нужные функции надо подключать. В начало скрипта:
CODE:external(INT, "mouse_drag_right", "mouse_drag_right", "Arduino.dll"); |
|
|
Zireael |
Отправлено: 19 Января, 2022 - 01:24:56
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Обновил, скачайте архив из первого поста и замените длл в папке кибор. Зависать не должно, если за 3 секунды не откроется порт, то вернёт код ошибки -1, если порт откроется, но команда не выполнится, то вернёт код ошибки число меньше -1. Если команда выполнилась вернёт 1.
CODE:string path_to_dll = "Arduino.dll";
external(INT, "get_port", "get_port", path_to_dll);
external(INT, "set_port", "set_port", path_to_dll);
external(INT, "set_delay_key", "set_delay_key", path_to_dll);
int com = get_port(2341, 8036); // узнать в каком com порте находится ардуино, передаются VID и PID
if(com==0)
{
messagebox("Arduino с указанными VID и PID не найдено");
goto end;
}
int result;
result = set_port(com); // установить порт, в него будут отправляться команды из длл
messagebox(result); // результат выполнения
result = set_delay_key(30); // установить паузу между нажатием и отпусканием клавиш
messagebox(result); // результат выполнения
end:;
Результат можно не возвращать в переменную, т. е. можно так и так:
CODE:int result = set_port(com);
set_port(com); (Отредактировано автором: 19 Января, 2022 - 01:27:38) |
|
|
neba2101 |
Отправлено: 10 Октября, 2022 - 11:33:36
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Моя Arduino - Ссылка Aliexpress
Arduino.dll в папке Kibor.
Установил драйвер для ардуино. Файл CH341SER.EXE из архива.
Залил скетч из архива VID/PID.
В Kibor запускаю
код (Отобразить)
CODE:
#define KEY_RETURN 0xB0
#define KEY_TAB 0xB3
string path_to_dll = pathfolder()+"Arduino.dll"; // путь к длл
external(INT, "get_port", "get_port", path_to_dll);
external(INT, "set_port", "set_port", path_to_dll);
external(INT, "set_delay_key", "set_delay_key", path_to_dll);
external(INT, "set_random_delay_key", "set_random_delay_key", path_to_dll);
external(INT, "_key", "key", path_to_dll);
external(INT, "_key_down", "key_down", path_to_dll);
external(INT, "_key_up", "key_up", path_to_dll);
external(INT, "text", "text", path_to_dll);
int com = get_port(2341, 8037); // узнать в каком com порте находится ардуино, передаются VID и PID
if(com==0)
{
messagebox("Arduino с указанными VID и PID не найдено");
goto end;
}
set_port(com); // установить порт, в него будут отправляться команды из длл
set_delay_key(50); // установить паузу между нажатием и отпусканием клавиш
set_random_delay_key(10); // установить рандом между нажатием и отпусканием клавиш
pause(3000); // пауза 3 сек чтобы переключиться на нужное приложение
text("Напечатать этот текст"); // ввести текст
_key(KEY_TAB); // нажать Tab
text("Print this text"); // ввести текст
_key(KEY_RETURN); // нажать Enter
_key('a'); // нажать клавишу a
_key('A'); // нажать SHift+a
pause(2000);
_key_down('z'); // зажать клавишу z
pause(3000); // ждать 3 секунды, клавиша z будет зажата
_key_up('z'); // отпустить клавишу z
_key_down(122); // можно и так, передав код нужной клавиши из таблицы ASCII
pause(3000);
_key_up(122);
end:;
Открываю блокнот, ставлю туда фокус.
Кибор зависает (не отвечает) какое-то время, потом вроде работает, но ничего не печатает. Заметил только раскладку меняет на eng и обратно на ру.
При запуске этого кода (Отобразить)CODE:string path_to_dll = pathfolder()+"Arduino.dll";
external(INT, "get_port", "get_port", path_to_dll);
external(INT, "set_port", "set_port", path_to_dll);
external(INT, "set_delay_key", "set_delay_key", path_to_dll);
int com = get_port(2341, 8037); // узнать в каком com порте находится ардуино, передаются VID и PID
if(com==0)
{
messagebox("Arduino с указанными VID и PID не найдено");
goto end;
}
int result;
result = set_port(com); // установить порт, в него будут отправляться команды из длл
messagebox(result); // результат выполнения
result = set_delay_key(30); // установить паузу между нажатием и отпусканием клавиш
messagebox(result); // результат выполнения
end:;
set_port(com); возвращает 1
set_delay_key(30); возвращает -1
Причем значения set_port(com) и set_delay_key(30) не меняются если string path_to_dll = "";
Что не так делаю? В диспетчере устройств так должно быть?(Отредактировано автором: 10 Октября, 2022 - 11:40:17) |
|
|
neba2101 |
Отправлено: 10 Октября, 2022 - 15:28:42
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Zireael пишет: Скрины на другой хостинг закиньте, у меня с этого не открываются.
Номер порта правильно определяется?
CODE:external(INT, "get_port", "get_port", "Arduino.dll");
int com = get_port(2341, 8037);
messagebox(com);
com=11 (правильно) В диспетчере задач и Arduino IDE тоже 11 порт
На какой хостинг залить скрины?
Диспетчер устройств
IDE
работают?
В ардуино IDE
VID:0x2341
PID:0x0037(Отредактировано автором: 10 Октября, 2022 - 15:44:52) |
|
|
|