Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ_ШАГОВЫЙ ДВИГАТЕЛЬ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
8 Mб
Скачать

3. Видеофильм о шаговых двигателях

Видеофильм находится в каталоге с doc файлом выпускной квалификационной работы, имя файла –

Учебный видеофильм о шаговых двигателях.AVI

4. Текст программы управления моделью крана

Procedure delayy(time,dn) ; процедура реализует задержку, замена

For j=1 To time ; стандартной delay()

For g=1 To dn Step 1

y=100

Next g

Next j

EndProcedure

Procedure LPT_Inp(Address) ;процедура получения информации

Value = CallFunction(1, "Inp32", Address) ; из регистра состояния LPT-порта

ProcedureReturn Value ; принятый байт

EndProcedure

Procedure kod(nomer) ;подпрограмма преобразования порядкового

If nomer=0 ; номера в единицу соответствующего разряда

n=1

EndIf

If nomer=1

n=2

EndIf

If nomer=2

n=4

EndIf

If nomer=3

n=8

EndIf

If nomer=4

n=16

EndIf

If nomer=5

n=32

EndIf

If nomer=6

n=64

EndIf

If nomer=7

n=128

EndIf

ProcedureReturn n

EndProcedure

Procedure LPT_Out(Address, Value) ;процедура записи информации в

CallFunction(1,"Out32", Address, Value) ; регистр данных LPT-порта

EndProcedure

If OpenLibrary(1,"inpout32.dll")=0 ; Открываем файл inpout32.dll, для использования его функций

MessageRequester("Нет файла!", "Для работы программы требуется файл"+Chr(10)+Chr(13)+ " inpout32.dll",16 )

End ; Завершаем работу программы при отсутствии файла inpout32.dll

EndIf

lpt_out($378,0)

OpenLibrary(2,"user32.dll") ; Открываем файл user32.dll, для использования его функций

string1.s

; Создаём окно.

InitMouse()

InitKeyboard()

OpenWindow(1,10,10,640,400,"Управление Моделью Крана",#PB_Window_MinimizeGadget)

LoadImage(0,"screen_1.bmp")

ButtonGadget(2,131,137,25,25,"")

ButtonGadget(3,230,137,25,25,"")

ButtonGadget(4,178,98,25,25,"")

ButtonGadget(5,178,180,25,25,"")

ButtonGadget(6,350,20,280,25,"Режим управления клавиатурой и мышью")

ButtonGadget(7,480,360,140,25,"Выйти из программы")

;ButtonGadget(11,50,250,250,30,"Получить информацию о состоянии регистра")

;StringGadget(12,50,280,80,20, "" ,#PB_String_Numeric)

TextGadget(10,10,330,150, 30,"Длительность управляющих импульсов - мс ")

StringGadget(9,80,342,40,18, "10" ,#PB_String_Numeric )

ImageGadget(0, 0, 0, 400, 300, ImageID(0))

;StringGadget(8, 8, 200, 100, 20, "")

AddKeyboardShortcut(1, #PB_Shortcut_Escape, 7)

;AddKeyboardShortcut(1, #PB_Shortcut_Right, 3)

;AddKeyboardShortcut(1, #PB_Shortcut_Up, 4)

;AddKeyboardShortcut(1, #PB_Shortcut_Down, 5)

StartTime = ElapsedMilliseconds() ; Get the actual value

For u=1 To 10000000 Step 1

y=100

Next u

ElapsedTime = ElapsedMilliseconds()-StartTime

dn=Round(10000000/ElapsedTime*100/200, #PB_Round_Up)

;text.s=StrQ(dn)

;SetGadgetText(8,text)

Repeat ; Начало главного цикла.

If e=1

lpt_out($378,0)

OpenWindow(1,10,10,640,400,"Управление Моделью Крана",#PB_Window_MinimizeGadget)

LoadImage(0,"screen_1.bmp")

ButtonGadget(2,131,137,25,25,"")

ButtonGadget(3,230,137,25,25,"")

ButtonGadget(4,178,98,25,25,"")

ButtonGadget(5,178,180,25,25,"")

ButtonGadget(6,350,20,280,25,"Режим управления клавиатурой и мышью")

ButtonGadget(7,480,360,140,25,"Выйти из программы")

;ButtonGadget(11,50,250,250,30,"Получить информацию о состоянии регистра")

;StringGadget(12,50,280,80,20, "" ,#PB_String_Numeric)

TextGadget(10,10,330,150, 30,"Длительность управляющих импульсов - мс ")

StringGadget(9,80,342,40,18, "10" ,#PB_String_Numeric )

ImageGadget(0, 0, 0, 400, 300, ImageID(0))

;StringGadget(8, 8, 200, 100, 20, "")

AddKeyboardShortcut(1, #PB_Shortcut_Escape, 7)

;AddKeyboardShortcut(1, #PB_Shortcut_Right, 3)

;AddKeyboardShortcut(1, #PB_Shortcut_Up, 4)

;AddKeyboardShortcut(1, #PB_Shortcut_Down, 5)

e=0

EndIf

Event=WaitWindowEvent() ; Получаем идентификатор события.

Gadget=EventGadget() ; Узнаём идентификатор активного гаджета.

string1=GetGadgetText(9)

t=ValQ(string1)

If Gadget=7 And event=#PB_Event_Gadget

x=1

EndIf

If Gadget=2 And event=#PB_Event_Gadget ;движение влево

For i=1 To 10 Step 1

For j=3 To 0 Step -1

k=kod(j)

lpt_out($378,k)

Delayy(t,dn)

Next j

lpt_out($378,0)

Next i

EndIf

If Gadget=3 And event=#PB_Event_Gadget ;движение вправо

For i=1 To 10 Step 1

For j=0 To 3 Step 1

a=lpt_inp($379)

If a=126

k=kod(j)

lpt_out($378,k)

Delayy(t,dn)

EndIf

Next j

lpt_out($378,0)

Next i

EndIf

If Gadget=4 And event=#PB_Event_Gadget ;движение вверх

For i=1 To 40 Step 1

For j=4 To 7 Step 1

k=kod(j)

lpt_out($378,k)

Delayy(t,dn)

Next j

lpt_out($378,0)

Next i

EndIf

If Gadget=5 And event=#PB_Event_Gadget ;движение вниз

For i=1 To 40 Step 1

For j=7 To 4 Step -1

k=kod(j)

lpt_out($378,k)

Delayy(t,dn)

Next j

lpt_out($378,0)

Next i

EndIf

If Event=#PB_Event_Gadget And Gadget=6

j=0

i=0

s=0

InitSprite()

OpenWindowedScreen(WindowID(1), 0, 0, 40, 30, 0, 0, 0)

Repeat

a=lpt_inp($379)

j=j+1

If j>3

j=0

k=kod(j)

lpt_out($378,k)

Delayy(t/2,dn)

Else

k=kod(j)

lpt_out($378,k)

Delayy(t/2,dn)

EndIf

Until a=118

Repeat

ExamineMouse() ;слежение за состоянием курсора мыши

ExamineKeyboard() ;слежение за нажатыми клавишами

x = MouseDeltaX()

y = MouseDeltaY()

w=MouseWheel()

a=lpt_inp($379)

If (x>1 Or KeyboardPushed(#PB_Key_Right)) And (a=126)

j=j+1

s=s-1

If j>3

j=0

k=kod(j)

lpt_out($378,k)

Delayy(2*t,dn)

Else

k=kod(j)

lpt_out($378,k)

Delayy(2*t,dn)

EndIf

EndIf

If (x<-1 Or KeyboardPushed(#PB_Key_Left)) And (s<170)

j=j-1

If j<0

j=3

k=kod(j)

lpt_out($378,k)

Delayy(2*t,dn)

Else

k=kod(j)

lpt_out($378,k)

Delayy(2*t,dn)

EndIf

s=s+1

EndIf

If y<-1 Or KeyboardPushed(#PB_Key_Up)

i=i+1

If i>7

i=4

k=kod(i)

lpt_out($378,k)

Delayy(t,dn)

Else

k=kod(i)

lpt_out($378,k)

Delayy(t,dn)

EndIf

EndIf

If y>1 Or MouseButton(2) Or KeyboardPushed(#PB_Key_Down)

i=i-1

If i<4

i=7

k=kod(i)

lpt_out($378,k)

Delayy(t,dn)

Else

k=kod(i)

lpt_out($378,k)

Delayy(t,dn)

EndIf

EndIf

If w>0

For i=1 To 20 Step 1

For j=4 To 7 Step 1

k=kod(j)

lpt_out($378,k)

Delayy(t,dn)

Next j

Next i

EndIf

If w<0

For i=1 To 20 Step 1

For j=7 To 4 Step -1

k=kod(j)

lpt_out($378,k)

Delayy(t,dn)

Next j

Next i

EndIf

lpt_out($378,0)

Until KeyboardPushed(#PB_Key_Escape)

e=1

EndIf

lpt_out($378,0)

If Gadget=11 And event=#PB_Event_Gadget

a=lpt_inp($379)

text.s=StrQ(a)

SetGadgetText(12,text)

EndIf

Until Event = #PB_Event_CloseWindow Or x=1 ; Прерываем цикл если в переменной "Event" будет число равное числу в константе.

lpt_out($378,0)

TextGadget(14,100,380,150, 30,"Shevelev I.V. Syktyvkar 2010 ")

Delay(1000)

End ; Директива, завершающая программу.