PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Программирование на PureBasic » Библиотека AutoitX


Библиотека AutoitX

Сообщений 1 страница 6 из 6

1

Доброго времени суток!

Просьба подсказать по поводу AutoitX. В какой версии Purebasic работает данная библиотека, как ее интегрировать в Purebasic.
Использовал 4.60, 5.31. 5.61,  так и не добился нормальной работы, всегда ошибка компиляции. Операционная Windows 7.

Искал на форумах, пишут что все файлы AutoitX должны находиться в папке с исходником, пробовал - результата нет.

Посоветуйте стабильную версию.

Идея такова - требуется при запуске видео игры, программа написанная на Purebasic с использованием Autoit запускала игру выполняла определенные манипуляции в меню.
Далее через USB или RS232 программа получает координаты указателя мыши которые снимаются с АЦП контроллера AVR

Понравился пример от Петра управление мышью при помощи API.

Что посоветуете?

0

2

newmayer написал(а):

всегда ошибка компиляции.

Какая?
Эти файлы компилируются без ошибок в 5.24 и 5.70. https://code.google.com/archive/p/au3wrap/downloads
Посмотрите эту тему. https://www.purebasic.fr/english/viewto … mp;t=66067

0

3

Огромное спасибо!

Работает  8-)

Еще сделал как и описывал. На меге8 собрал контроллер который по UART передает координаты курсора + нажатие Левой и Правой кнопки.

В самой системе Windows работает, но в игре нет. Как заставить работать в игре курсор мыши?

0

4

Сам код взятый с сайта Avrproject

Код:
#COM_Port = 2 ; Идентификатор COM порта.      

Procedure Select_ComPort()      
     Protected Port.s, Text.s, Color      
        
     If IsSerialPort(#COM_Port)   ; С таким ИД уже открыт порт.      
       CloseSerialPort(#COM_Port) ; Закрываем его.      
     EndIf      
        
     Port = GetGadgetText(3)      
     If OpenSerialPort(#COM_Port, Port, 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 8, 8)      
       Text="Порт "+Port+" открыт" : Color=RGB(46, 137, 36)      
     Else      
       Text="Не удалось открыть порт "+Port : Color=RGB(255,0,0)      
     EndIf      
         
     SetGadgetText(5, Text)        
     SetGadgetColor(5, #PB_Gadget_FrontColor, Color)      
        
EndProcedure      

Procedure InData() ; Прием данных.      
     Protected InBytes      
        
     If IsSerialPort(#COM_Port)   ; С таким ИД порт открыт.      
       InBytes = AvailableSerialPortInput(#COM_Port)      
       If InBytes>0 ; Получены данные.      
         Protected Dim InBuffer.a(InBytes), RealInBytes      
            
         RealInBytes = ReadSerialPortData(#COM_Port, @InBuffer(), InBytes)      
         If RealInBytes>0      
           ;AddGadgetItem(4, -1, PeekS(@InBuffer(), RealInBytes, #PB_Ascii))           
           xr.s=PeekS(@InBuffer(), RealInBytes, #PB_Ascii)
           
           xpos_v.s = Left(xr.s,4)
           xpos.q = Val(xpos_v) ;Обработка X позиции
           
           ypos_v.s = Mid(xr.s,5,4)
           ypos.q = Val(ypos_v) ;Обработка Y позиции
           
           kl_v.s = Mid(xr.s,9,1) ;Обработка ЛК
           kl.c = Val(kl_v)
           
           kr_v.s = Mid(xr.s,10,1) ;Обработка ПК
           kr.c = Val(kr_v)
           
           ;AddGadgetItem(4, -1,"X "+ xr)
           
           If kl.c = 1 
             AW_MouseClick(#PB_MouseButton_Left, xpos, ypos, 1) ;Левая клавиша
             EndIf
               
           If kr.c = 1 
             AW_MouseClick(#PB_MouseButton_Right, xpos, ypos, 1) ;Правая кнопка
           EndIf
           
           SetCursorPos_(xpos, ypos)
         EndIf      
            
       EndIf      
     EndIf      
EndProcedure      

Procedure ComOut(Send_data.s)             ; Передача данных в порт.    
      
      If IsSerialPort(#COM_Port)      ;если порт открыт    
        WriteSerialPortData(#COM_Port,@send_data,1)  ;Посылаем в порт данные из переменной Out      
      Else    
       ; Выводим сообщение об ошибке.    
       MessageRequester("Ошибка","Текущий порт не доступен!",16)    
     EndIf    
        
EndProcedure    

If OpenWindow(0, 300, 100, 320, 370, "Тестовая программа")        
     ButtonGadget(1, 90, 310, 100, 35, "Зажечь", #PB_Button_Default)          
     TextGadget(2,10,310,25,15,"Порт") ; Выводим в окно надпись "Порт".        
     ComboBoxGadget(3, 10, 325, 70, 21, #PB_ComboBox_Editable)        
     ;For i=1 To 99          
       AddGadgetItem(3,-1,"COM3");+Str(i))          
     ;Next i      
        
     SetGadgetState(3,0); Делаем активным нулевой пункт выпадающего списка.       
     EditorGadget(4, 8,  10, 305, 280,#PB_String_ReadOnly)      
     TextGadget(5,10,350,200,15,"")                             ;Здесь будет отображаться результат открытия порта.        
     ButtonGadget(6, 200, 310, 100, 35, "Погасить", #PB_Button_Default)      
        
     Select_ComPort()      
        
     Repeat        
          
       Event = WaitWindowEvent()        
          
       InData()                       ;принимаем данные из UART      
          
       If Event=#PB_Event_Gadget    ;если произошло срабатывание гаджета    
         Gadget = EventGadget ( )   ;узнаем какой гаджет был активирован        
         If Gadget=1                      ;если нажата кнопка          
           ComOut("A")                    ;Переходим на процедуру передачи байта.    
           InData()      
         ElseIf Gadget=3                    ;если был активирован выпадающий список          
           ComboBox.s=GetGadgetText(3) ; Считываем текст из текущего пункта выпадающего списка.        
           ; Переходим на процедуру, закрывающую текущий порт и открывающую выбранный.          
           Select_ComPort()      
                      
         ElseIf Gadget=6                 ;нажата кнопка очистки      
           ComOut("B")                    ;Переходим на процедуру передачи байта.    
           InData() 
           
         EndIf        
       EndIf        
          
     Until Event=#PB_Event_CloseWindow           
        
EndIf          
End   

0

5

Игра использует скорее всего DirectInput (зависит от игры), а не WinAPI, поэтому и не работает.

0

6

Для примера можно взять игру где нужно стрелять по курицам Morhuhn 8-)

0


Вы здесь » PureBasic - форум » Программирование на PureBasic » Библиотека AutoitX