[VB6] gestione buffer mscomm

di il
1 risposte

[VB6] gestione buffer mscomm

Premetto che non conosco molto bene questo sw, io per lo più traffico con i compilatori MikroC e Mikrobasic relativo ai microcontrollori PIC.
Sono riuscito a leggere dei segnali analogici convertirli in digitale a 10bit e inviarli attraverso la seriale e visualizzarli su LCD e su Yperterminal.
Ora sto combattendo con l'interfaccia col PC.
Sto provando con VB6 e con Excel ma ho difficoltà.
Il mio intendimento è quello di porre su un grafico cartesiano tre variabili acquisite dagli adc del pic.
Più precisamente un tracciacurve x valvole dove Ianodica in ordinata, Vanodica in ascissa in funzione di diverse tensioni di griglia.

Qualcuno mi può dare qualche spunto e stralcio di codice per gestire i buffer dalla porta seriale?
Sono 253 variabili testo (5 caratteri) a gruppi di 3 con virgola e punto e virgola usati come separatori.

es: " 1023, 45, 945; 1021, 4, 45; ecc...."

Grazie
Antonio

1 Risposte

  • Re: [VB6] gestione buffer mscomm

    Vado un passo alla volta.
    Ho cominciato con la lettura del buffer ed ho il primo

    problema, apro il programma e invio i dati ma OnComm() non li

    rileva se chiudo il programma e lo riapro comincia a leggere il

    buffer e lo visualizza su txtRicezione.
    Un amico mi ha dato una mano e ho cominciato anche l'algoritmo

    di estrazione.
    
    Private Sub Esci_Click()
    End
    End Sub
    
    Private Sub Form_Load()
    ' Apre la porta seriale
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,n,8,1"
    On Error Resume Next
    MSComm1.PortOpen = True
    If Err Then
    MsgBox "Impossibile aprire la porta" & MSComm1.CommPort & 
    
    vbCrLf & Error$
    End If
    MSComm1.RThreshold = 1
    End Sub
    
    Private Sub MSComm1_OnComm()
        Dim Messaggio$
        Dim buffer As String
        Dim terne() As String
        Dim i As Integer
        Dim j As Integer
        Dim terna As String
        Dim valoriTerna() As String
        Dim valoreTerna As Integer
        
        Messaggio$ = MSComm1.Input
        If Len(Messaggio$) Then
          txtRicezione = txtRicezione.Text & Messaggio$
          buffer = txtRicezione
         'buffer = "1023, 45, 945; 1021, 4, 45;"
        
          terne = Split(buffer, ";")
            
            For i = 0 To UBound(terne)
                terna = terne(i)
                valoriTerna = Split(terna, ",")
                    For j = 0 To UBound(valoriTerna)
                        valoreTerna = CInt(Trim(valoriTerna(j)))
                        MsgBox "Terna " & cstr(i) & " - Valore " 
    
    &cstr( j )& " : " & cstr(valoreTerna)
                    Next j
            Next i
    
    
        End If
    End Sub
    
    Grazie dell'aiuto
    Antonio
Devi accedere o registrarti per scrivere nel forum
1 risposte