Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Migrazione da QBasic a VisualB6
Forum - Visual Basic 6 - Migrazione da QBasic a VisualB6

Avatar
1n4148 (Normal User)
Newbie


Messaggi: 7
Iscritto: 10/06/2011

Segnala al moderatore
Postato alle 18:20
Venerdì, 10/06/2011
Salve  ho un problema con il Fluke45 che funziona benissimo in QB ma non riesce bene in visual basic.
Ho trovato già in questo forum una vecchia discussione con lo stesso argomento ma la risposta non ha dato risultati buoni. Spero che nel frattempo ci siano stati sviluppi e possiate aiutarmi.
Vi ringrazio anticipatamente ed allego i listati:

'                                FLUKE45.BAS
'     FLUKE45.BAS Programma di registrazione dati di frequnza e magnetiche
'     - inizializza la porta di comunicazione RS-232 e setta il FLUKE 45
'     - testa la regolarit… dei comandi dal FLUKE 45
'     - Visualizza e registra i dati in TESTDATA.PRN

CLS : 'KEY OFF
Valore$ = ""        'Definisce la stringa che conterr… i dati
Prompt$ = ""        '    "     "     "    di comando
CMD$ = ""           '    "     "     "    di comando del FLUKE 45
In$ = ""            '    "     "     "    di input dei dati
Esc$ = CHR$(27)     '    "     "     "    di comando per terminare
CONT = 0            'Inizializza il contatore delle letture
'
    OPEN "COM1:9600,n,8,,cs,ds,cd" FOR RANDOM AS #1
'
'     "ohms"        Per misure di resistenze

    IF ERRORCODE <> 0 THEN PRINT " ERROR NON E' POSSIBILE APRIRE LA COM1: ": END
  
    CMD$ = "rems; ohms; format 1" 'Misure di resistenza
    Inizio = TIMER
    GOSUB Legge         'SUBRUTINE CHE INVIA IL COMANDO E ATTENDE LA RISPOSTA
'
    
    LOCATE 25, 10: PRINT " Premi un tasto per registrare   Premi ESC per uscire =;"
'
    WHILE In$ <> Esc$
        PRINT #1, "meas?"    'Richiesta della misura successiva
        LINE INPUT #1, Valore$                  'Legge la misura
        Prompt$ = INPUT$(5, #1)                 'Legge il prompt + la portante <LF>
      
        LOCATE 12, 36: PRINT Valore$
        
        In$ = INKEY$ 'Legge la pressione di un tasto
      
        IF In$ = "" OR In$ = Esc$ THEN GOTO Fine

Fine:
    WEND
    PRINT #1, "rst"
    Fine = TIMER
    LOCATE 14, 1: PRINT "Test Completato - il risultato Š memorizzato in 'TESTDATA.PRN'";
    LOCATE 15, 1: PRINT "100 letture effettuate in "; Fine - Inizio; "secondi"
    CLOSE #1, #2
    END


Legge:
       '
     PRINT #1, CMD$
     Prompt$ = INPUT$(4, #1)            'Preleva il prompt
     PRINT "*"; Echo$; "*", "*"; Prompt$; "*"
     IF INSTR(1, Prompt$, "=>") <> 0 THEN RETURN 'Comando andato a buon fine
     IF INSTR(1, Prompt$, "?>") <> 0 THEN PRINT "Di sintassi nel comando!!"
     IF INSTR(1, Prompt$, "!>") <> 0 THEN PRINT "Comando errato!!"
     PRINT "Esecuzione del programma terminata"
     END

in VB6 i comandi sono i seguenti:

Private Sub BtnApri_Click()
Dim Comando As String

Dim Buffer As String

    Comando = ""        '    Stringa di comando del FLUKE 45
    
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.InputLen = 0
    If MSComm1.PortOpen = False Then
      MSComm1.PortOpen = True
      Label1.Caption = "Comm Port " & MSComm1.CommPort & MSComm1.PortOpen
    End If
    Comando = "rems; ohms; format 1"
    MSComm1.Output = Comando + vbCrLf
    'Lo strumento si dovrebbe porre in MODE REMOTE OHMS
    'ma questo non avviene; tutto il resto di conseguenza è inutile
   Do
      LblInput = MSComm1.Input
      DoEvents
   Loop Until LblInput <> ""
   LblInput = MSComm1.Input
End Sub

Private Sub CmdChiudi_Click()
    ' Chiude la porta seriale.
    MSComm1.PortOpen = False
    End
End Sub


L'output va a buon fine. ma l'input non arriva mai. Si ha qualche successo se si procede passo passo.



PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 19:07
Venerdì, 10/06/2011
di preciso vb6 che riga ti segnala? che errori da?

poi con:
"Si ha qualche successo se si procede passo passo. "
che intendi?

Il Vb6 non da alcun errore. in merito alla seconda parte: voglio dire che se si esegue il programma con F8 qualche volta arriva il dato i input avviato invece con F5 il loop non si conclude mai. - 1n4148 - 11/06/11 11:48
PM