Oppure

Loading
28/03 23:42
nightwolf
provando e riprovando ogni tanto mi da sempre errore sulla stringa
aaa
28/03 23:51
nightwolf
questo è un altro errore
aaa
29/03 9:40
nightwolf
lo so, ma non se ne viene a capo, adesso credo di essere ad un buon punto bisogna capire il perchè il volume mi da errore o non funziona in modo fluido
aaa
29/03 11:52
Carlo
Con serialport1.readline non hai eliminato gli errori, leggi solo il primo dato presente nel buffer, quello che sta prima di VbCrLf (\n) che solitamente non è quello più corretto, se riguardi la foto che hai postato e che riallego il dato più congruo è il secondo

Di seguito il codice che filtra tutti gli errori usabile in Timer2:
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    Dim str As String = str = RiceviDati()

    ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Ricevuto = " & str.Replace(vbCrLf, "\n"))
    ListBox1.TopIndex = ListBox1.Items.Count - 1
    ListBox1.HorizontalScrollbar = True

    Dim righe() = str.Split(vbCrLf)
    Dim uso = 0 ' la prima riga
    If righe.Length = 0 Then Return
    If righe.Length > 1 Then uso = 1 ' la seconda riga

    ' Elaboro la stringa
    Dim valoriDivisi() As String = righe(uso).Split(";")
    If valoriDivisi.Length <> 2 Then
        ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato = Errore i valori non sono due")
        Return
    End If
    ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Selezionato = " & righe(uso))
    If valoriDivisi(0) = "E" Then
        lblgradi.Text = "errore"
        ' in valoriDivisi(1) ' il tipo d'errore da mostrare dove vuoi
        ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato = Errore " & valoriDivisi(0) & " - " & valoriDivisi(1))
    Else
        ' Il primo dato è riferito ai gradi della bussola
        valoriDivisi(0) = valoriDivisi(0).Replace(".", ",") ' se ci fosse il punto decimale viene sostituito con la virgola decimale
        If Double.TryParse(valoriDivisi(0), avanzamento) Then
            If avanzamento <= 0 Or avanzamento >= 360 Then
                ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato Bussola = Errore il valore " & avanzamento.ToString() & " è fuori range")
            Else
                lblgradi.Text = avanzamento.ToString("000°")
                Pcboxbussola.Invalidate()
                ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato Bussola = " & avanzamento.ToString("000°"))
            End If
        Else
            ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato = Errore " & valoriDivisi(0).Substring(0, 3) & " non è un intero")
        End If

        '' Il dato in: valoriDivisi(1), è riferito al volume e è una stringa

        Dim volume As Integer = 0
        If Integer.TryParse(valoriDivisi(1), volume) Then
            If volume < 0 Or volume > 100 Then
                ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato Volume = Errore il valore " & volume.ToString() & " è fuori range")
            Else
                ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato Volume = " & valoriDivisi(1))
                media_pleyer.lb_volume.Text = valoriDivisi(1) + "%"
                media_pleyer.Volume_control1.value = valoriDivisi(1)
                lb_volume.Text = valoriDivisi(1) + "%"
                Volume_control1.value = valoriDivisi(1)
                media_pleyer.Timer3.Start()
                media_pleyer.AxWindowsMediaPlayer1.settings.volume = media_pleyer.Volume_control1.value
                AxWindowsMediaPlayer1.settings.volume = media_pleyer.Volume_control1.value
                video.Wmp1.settings.volume = video.Volume_control1.value
            End If
        Else
            ListBox1.Items.Add(DateTime.Now.ToLongTimeString & " - Elaborato = Errore " & valoriDivisi(1) & " non è un intero")
        End If
    End If
End Sub

sulla function rimetti SerialPort1.ReadExisting, perchè prendiamo la seconda riga se c'è
Function RiceviDati() As String
        Dim Ricevuti As String
        Try
            Ricevuti = SerialPort1.ReadExisting
            If Ricevuti = Nothing Then
                Return "E;null" ' ritorna con la E
            else
                Return Ricevuti
            End If
        Catch ex As Exception      
            Return "E;" & ex.Message ' ritorna con la E
        End Try
End Function


Ricorda che con la SOLUZIONE 3, hai la lettura sincrona...
Ultima modifica effettuata da Carlo 29/03 13:29
in programmazione tutto è permesso
29/03 12:15
nightwolf
Grazie mille, x laiuto che mi state dando, volevo rispondere a nessuno. quando ho iniziato a costruirmi il mio flipper virtuale prima di iniziare ho letto post lunghi anche 60 pagine, dove ognuno spiegava il proprio problema. Ed è grazie a quei post lunghi che l ho costruito senza avere nessun problema. Se sto avendo delle difficoltà nel completare una cosa che a parer mio è figa, non vedo il senso di chiudere un post e riaprirne un altro se poi l argomento è sempre quello.
aaa
29/03 13:55
Thejuster
Postato originariamente da nightwolf:

Grazie mille, x laiuto che mi state dando, volevo rispondere a nessuno. quando ho iniziato a costruirmi il mio flipper virtuale prima di iniziare ho letto post lunghi anche 60 pagine, dove ognuno spiegava il proprio problema. Ed è grazie a quei post lunghi che l ho costruito senza avere nessun problema. Se sto avendo delle difficoltà nel completare una cosa che a parer mio è figa, non vedo il senso di chiudere un post e riaprirne un altro se poi l argomento è sempre quello.


:ot:
Tranquillo nightwolf.
Un form di supporto serve proprio a questo.
Altrimenti non eravamo qui.

Non andiamo OT, altrimenti mi tocca cancellare i post.
mire.forumfree.it/ - Mire Engine
C# UI Designer
29/03 14:05
Thejuster puoi eliminare i miei post se li ritieni OT anche se non ho capito cosa sia OT in un thread di oltre 100 post...

Anzi già che ci sei elimina il mio user così siete più intimi.

Però cerca di essere più coerente, non dire certe cose prima e poi il contrario.

Saluti
Ultima modifica effettuata da 29/03 14:10
29/03 14:13
Thejuster
Thejuster puoi eliminare i miei post se li ritieni OT anche se non ho capito cosa dia OT in un thread fi oltre 100 post...


Questo è un OT.
Tranquillo ho eliminato anche i miei messaggi.

Anzi già che ci sei elimina il mio user così siete più intimi.


Non mi piace eliminare utenti, solitamente elimino bot non utenti.
Per il resto tranquillo, Abbiamo appuntamento stasera al bar Grog e la Cacofonia.

Però cerca di essere più coerente, non dire certe cose prima e poi il contrario.


Hai ragione, Purtroppo avvolte sono impulsivo cercherò di fare ammenda.
mire.forumfree.it/ - Mire Engine
C# UI Designer