Ik ben bezig met een programmatje voor mijn stappenmotor. Ik maak dit in Microsoft Visual Basic 2005 Express Edition Beta (is dat VB6?). Ik kan nu de printerpoort aansturen met inpout.dll en dan zie ik ook reactie bij de motor. als ik echter met 4 knopjes de spoelen 1 voor 1 spanning geef gaat het goed, maar zodra ik een loop instel dat de motor door blijft draaien gaat het fout. ik kom op geen mogelijkheid meer uit die loop en het programmatje loopt vast 
ik heb al verschillende dingen geprobeerd. ik heb 1 knop voor draaien (cmdTurnL), een stopknop (cmdStop) en een aanpasbaar getal (nmrDelay). verder een variabele die 1 is als de motor moet draaien en 0 als hij moet stoppen. hier de code van een aantal:
dit is voor de stopknop en is overal hetzelfde:
Do Loop:
Do Until:
Do While
While:
Dit zijn de laatste 4 die ik geprobeerd heb. de Out(Val(888), Val(xx)) is het signaal dat naar de printerpoort gaat.
Als ik nu dus op de knop cmdTurnL klik gaat de motor wel draaien met de snelheid die nmrDelay aangeeft. maar als ik op de stopknop druk, loopt het programma vast. in mijn ogen zou de printerpoort dan weer op 0 gezet moeten worden en intTurn dan 0 moeten worden en de loop stoppen omdat die niet meer aan de voorwaarden voldoet. wie kan mij helpen ?
ik heb al verschillende dingen geprobeerd. ik heb 1 knop voor draaien (cmdTurnL), een stopknop (cmdStop) en een aanpasbaar getal (nmrDelay). verder een variabele die 1 is als de motor moet draaien en 0 als hij moet stoppen. hier de code van een aantal:
dit is voor de stopknop en is overal hetzelfde:
Visual Basic:
1
2
3
4
| Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click intTurn = 0 Out(Val(888), Val(0)) End Sub |
Do Loop:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| Private Sub cmdTurnL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTurnL.Click intTurn = 1 Do Out(Val(888), Val(1)) Sleep(nmrDelay.Value) Out(Val(888), Val(3)) Sleep(nmrDelay.Value) Out(Val(888), Val(2)) Sleep(nmrDelay.Value) Out(Val(888), Val(6)) Sleep(nmrDelay.Value) Out(Val(888), Val(4)) Sleep(nmrDelay.Value) Out(Val(888), Val(12)) Sleep(nmrDelay.Value) Out(Val(888), Val(8)) Sleep(nmrDelay.Value) Out(Val(888), Val(9)) Sleep(nmrDelay.Value) If intTurn = 0 Then Exit Do End If Loop End Sub |
Do Until:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| Private Sub cmdTurnL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTurnL.Click intTurn = 1 Do Until intTurn = 0 Out(Val(888), Val(1)) Sleep(nmrDelay.Value) Out(Val(888), Val(3)) Sleep(nmrDelay.Value) Out(Val(888), Val(2)) Sleep(nmrDelay.Value) Out(Val(888), Val(6)) Sleep(nmrDelay.Value) Out(Val(888), Val(4)) Sleep(nmrDelay.Value) Out(Val(888), Val(12)) Sleep(nmrDelay.Value) Out(Val(888), Val(8)) Sleep(nmrDelay.Value) Out(Val(888), Val(9)) Sleep(nmrDelay.Value) Loop End Sub |
Do While
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| Private Sub cmdTurnL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTurnL.Click intTurn = 1 Do While intTurn = 1 Out(Val(888), Val(1)) Sleep(nmrDelay.Value) Out(Val(888), Val(3)) Sleep(nmrDelay.Value) Out(Val(888), Val(2)) Sleep(nmrDelay.Value) Out(Val(888), Val(6)) Sleep(nmrDelay.Value) Out(Val(888), Val(4)) Sleep(nmrDelay.Value) Out(Val(888), Val(12)) Sleep(nmrDelay.Value) Out(Val(888), Val(8)) Sleep(nmrDelay.Value) Out(Val(888), Val(9)) Sleep(nmrDelay.Value) Loop End Sub |
While:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| Private Sub cmdTurnL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTurnL.Click intTurn = 1 While intTurn = 1 Out(Val(888), Val(1)) Sleep(nmrDelay.Value) Out(Val(888), Val(3)) Sleep(nmrDelay.Value) Out(Val(888), Val(2)) Sleep(nmrDelay.Value) Out(Val(888), Val(6)) Sleep(nmrDelay.Value) Out(Val(888), Val(4)) Sleep(nmrDelay.Value) Out(Val(888), Val(12)) Sleep(nmrDelay.Value) Out(Val(888), Val(8)) Sleep(nmrDelay.Value) Out(Val(888), Val(9)) Sleep(nmrDelay.Value) End While End Sub |
Dit zijn de laatste 4 die ik geprobeerd heb. de Out(Val(888), Val(xx)) is het signaal dat naar de printerpoort gaat.
Als ik nu dus op de knop cmdTurnL klik gaat de motor wel draaien met de snelheid die nmrDelay aangeeft. maar als ik op de stopknop druk, loopt het programma vast. in mijn ogen zou de printerpoort dan weer op 0 gezet moeten worden en intTurn dan 0 moeten worden en de loop stoppen omdat die niet meer aan de voorwaarden voldoet. wie kan mij helpen ?
Mijn nieuwe portfolio (Under Construction) | Benieuwd wat Solar Team Twente gaat doen?