Oppure

Loading
29/03 14:22
Bene, allora hai fatto quasi tutto, attendo che cancelli il mio user.
30/03 10:34
nightwolf
buon giorno a tutti e buon sabato, so di essere logorroico, ma non se ne viene a capo in questo progetto, mettendo il codice di carlo, adesso mi dice:
ricevuto=false
elaborato=errori i valori non sono due
questo sono i due video di arduino che funziona e visual basic
youtu.be/…
youtu.be/…
cosa vuol dire che i valori non sono due?
aaa
30/03 11:01
nightwolf
cosa vuol dire questa scritta di errore
Eccezione generata: 'System.InvalidCastException' in Microsoft.VisualBasic.dll
aaa
30/03 11:58
Carlo
Postato originariamente da nightwolf:

buon giorno a tutti e buon sabato, so di essere logorroico, ma non se ne viene a capo in questo progetto, mettendo il codice di carlo, adesso mi dice:
ricevuto=false
elaborato=errori i valori non sono due
questo sono i due video di arduino che funziona e visual basic
youtu.be/…
youtu.be/…
cosa vuol dire che i valori non sono due?

è scritto tutto sul codice.
L'errore non è in timer2, perché se non ricevi nulla è ovvio che i dati non sono due.
la function l'hai modificata?
Per caso hai messo WithEvents? Quello non lo devi mettere finquando leggi con timer2
La COM è collegata?
Vedo che non invii più le due cifre decimali sui gradi, in VB alcune istruzioni sono diventate superflue ma non dovrebbero causare problemi.
Ultima modifica effettuata da Carlo 30/03 12:19
in programmazione tutto è permesso
30/03 12:04
Carlo
Postato originariamente da nightwolf:

cosa vuol dire questa scritta di errore
Eccezione generata: 'System.InvalidCastException' in Microsoft.VisualBasic.dll


Stai cercando di copiare un oggetto generico in uno tipizzato senza aver effettuato la conversione di tipo o cast.

Se hai modificato la dicharazione della seriale in: Dim WithEvents serialport1 As New SerialPort

Timer2 lo devi spegnere perché devi leggere i dati nell'evento:
Private Sub serialport_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles serialport1.DataReceived
    Dim sp As SerialPort = DirectCast(sender, SerialPort) ' cast dell'oggetto sender in SerialPort 
    Dim str As String = sp.ReadExisting() ' Legge tutti i dati presenti nel buffer di input
    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
    If righe.Length = 0 Then Return ' forse non serve
    If righe.Length > 1 Then uso = 1

    ' 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) & " 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
Ultima modifica effettuata da Carlo 30/03 12:24
in programmazione tutto è permesso
30/03 13:08
nightwolf
Postato originariamente da Carlo:

Postato originariamente da nightwolf:

cosa vuol dire questa scritta di errore
Eccezione generata: 'System.InvalidCastException' in Microsoft.VisualBasic.dll


Stai cercando di copiare un oggetto generico in uno tipizzato senza aver effettuato la conversione di tipo o cast.

Se hai modificato la dicharazione della seriale in: Dim WithEvents serialport1 As New SerialPort



perdonami ma sta dichiarazione di seriale dove va messa, perchè mi da errore in serialport1 dicendo che è gia dichiarata, abbi pazienza, l ho messa insieme alle altre variabili e niente.:d
grazie
aaa
30/03 13:31
nightwolf
aaa
30/03 13:32
nightwolf
questa è la mia intera solution
aaa