Vi espongo il mio problema:
Dovrei creare un software che piloti un motore PP tramite parallela e vb6,la meccanica è già pronta l'elettronica pure e con mach3 funziona tutto.
Ora però dovrei creare una piccola interfaccia che mi permetta in base alla lunghezza dell'utensile che inserisco di posizionare un finecorsa meccanico montato su di una barra filettata passo 1 nella posizione da mè programmata.
Ho montato un finecorsa di zero che mi serve a sapere la posizione esatta ogni volta che vado a spostare quello meccanico prima vado a toccare lo zero e poi vado alla quota z.
ho cercato sul forum e ho letto un post precedente copiando questo 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 DirX = 0
'Const StepX = 1
'Const DirY = 2
'Const StepY = 3
Const DirZ = 17
Const StepZ = 1
'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
txtTest.Text = nstep
End Sub
Ma naturalmente non succede nulla...
Su Mach 3 i pin sono impostati come Dir= 17 Step =1 e il finecorsa su pin 11.
Nel codice precedente non capisco dove settare il numero dei pin della porta.
Grazie
Giancarlo