Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    193

    [VB6]Bit porta parallela

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto dovresti postare il codice all'interno dei tag CODE /CODE per essere piu' chiaro ...

    Comunque, già il ciclo di ritardo non è corretto perchè un semplice for è troppo dipendente dalla velocità del computer ... Usa la Sleep (che è dichiarata).

    Inoltre il ritardo deve essere fatto sia dopo il Set sia dopo il Reset ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    193
    Ciao
    Il code l'ho inserito,scusate.
    Per quanto riguarda il ritardo li ho tenuti tutti e due per provarli entrambi.
    L'ho anche aggiunto sia dopo set che dopo il reset ma il mio problema è di capire come cambiare lo stato del bit 1 e del bit 17 per far ruotare il motore..... e anche giusto per capire come si fà.
    grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il bit 17 ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    193
    ciao
    Scusate non il bit1 e il bit17 ma il Pin1 e il Pin17.
    Grazie

  6. #6
    Senza vedere le 2 librerie che hai usato è difficile darti una mano, comunque come diceva oregon il sistema migliore per impostare un ritardo (o pausa) è utilizzare il metodo sleep, ora non sono molto pratico di vb6 però ho sviluppato un'applicazione che utilizzava la seriale in vb.net e utilizzavo:

    codice:
    system.threading.thread.sleep
    tra l'invio dei dati al dispositivo, questo perchè tale dispositivo e anche la porta seriale in se hanno un buffer di lettura/scrittura che deve avere il tempo di svuotarsi prima di ricevere/inviare altri dati.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da seifter
    ciao
    Scusate non il bit1 e il bit17 ma il Pin1 e il Pin17.
    Grazie
    Perchè usi questi pin ? Sono pin di I/O ... se ti serve solo l'output, puoi usare i pin 2 e 3 (ovvero i bit 0 e 1).

    Per controllare i pin 1 e 17 devi modificare quel codice ...

    E' possibile vedere lo schema elettrico ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    193
    Per quanto riguarda la funzione di sleep ok ma il mio problema e eleggere i 2 pin da 0 a 1.
    non lo so fare e non arrivo a come fare.
    Grazie

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai risposto a nessuna delle mie domande ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    193
    Ciao
    Oregon scusa ma sono da cellulare e quando ho risposto il tuo post noln lo vedevo.
    devo usare quei pin perché l'interfaccia parallela ha qui pin collegati all'uscita per il driver del motore.
    come ho detto sopra ho provato con mach3 settando i pin come da piedini sulla scheda e funziona,solo che non posso utilizzare mach3 per gestire ciò che mi serve.
    per questo devo fare questa applicazione vb.
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.