Ciao a tutti
Ho la necessità di pilotare un motore passo passo tramite parallela,ho già provato il funzionamento dell'elettronica e della meccanica utilizzando un software di gestione per cnc (Mach3) ora mi trovo a dover creare un programma in vb per pilotare questo motore.
Diciamo che il programma è semplice perchè deve solo contenere una textbox in cui scrivere il numero di passi da eseguire e un commandbutton per fare eseguire il contenuto della txt.
Ora sapendo che nel programma usato per il test vengono utilizzati solo 2 Pin per lo spostamento del motore "Pin1" e "Pin 17" uno invia il numero di step da eseguire e l'altro il senso di rotazione del motore.
Ho cercato su internet tutto il materiale che poteva servirmi e devo dire che ne ho trovato ma il problema è che sinceramente non sò come applicare quello che ho trovato...
Ho scaricato 2 librerie per la porta parallela "io.dll" e "impout32.dll" ma mi sono arenato su come elegere a 1 il valore del pin1 tramite binario....
Ho trovato questo codice e ho cercato di adattarlo alla mia esigenza ma non riesco a farlo funzionare ne a capire se mi setta il bit giusto:
codice:
'Dichiarazione di Inp e Out per l'utilizzo di inpout32.dll
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" _
(ByVal PortAddress As Integer) _
As Integer
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" _
(ByVal PortAddress As Integer, _
ByVal Value As Integer)
Private Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)
Const PAR1 = &H378 'costante che si riferisce alla porta parallela
'costanti di step e dir degli assi
Const DirZ = 5
Const StepZ = 6
'Funzione che setta uno specifico bit della porta selezionata
Public Sub BitSet(ByVal Port As Long, ByVal Bit As Byte)
If Bit < 0 Or Bit > 7 Then Exit Sub
Out Port, Inp(Port) Or (2 ^ Bit)
End Sub
'Funzione che resetta uno specifico bit della porta selezionata
Public Sub BitReset(ByVal Port As Long, ByVal Bit As Byte)
If Bit < 0 Or Bit > 7 Then Exit Sub
Out Port, Inp(Port) And (255 - 2 ^ Bit)
End Sub
'Funzione di ritardo fra BitSet e BitReset (personalmente è meglio un
'ritardo con ciclo perchè il minimo ritardo applicabile con sleep è di 1 millisecondo)
Public Sub Wait(ByVal ms As Long)
Sleep (ms)
End Sub
'Questa è la routine di ritardo
Sub CicloRitZ()
Dim a As Long
For a = 0 To 70000
Next a
End Sub
Private Sub cmdEsegui_Click()
'Questo è il ciclo che sposterà il motore in funzione di quanti passi deve fare
Dim nstep As String
nstep = txtMisura.Text
For ciclo = 1 To nstep
BitSet PAR1, StepZ 'setta il bit StepZ della porta PAR1
CicloRitZ 'ciclo di ritardo
BitReset PAR1, StepZ 'resetta il bit StepZ della porta PAR1
Next ciclo
End Sub
Ogni aiuto è graditissimo
Grazie