Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    4

    [vb.net 2012] Lettura dati da seriale su db Mysql

    Salve a tutti, mi trovo qui perchè ho un problema con un applicazione in vb net.
    Ho un microcontrollore(Arduino 2009) collegato a un pc.
    Arduino è gia programmato per inviare tramite seriale una stringa con le varie informazioni prelevate dai sensori.
    La stringa per farvi capire con un esempio è cosi: "#temperatura:26#umidita:45#luce:On"
    Allora in vb dovrei creare un app che continui a leggere la stringa dalla seriale, sempre dalla stringa preleva i vari dati che gli servono (scartando il resto), e carica i vari dati su un database in mysql!
    Premetto che ho gia fatto l app con i timer e funziona alla grande, ma ovviamente non vanno bene..perche mi blocca l applicazione.
    Devo usare i thread.
    Il problema è che con questi maledetti thread non ci capisco nulla.
    Se mi aiutaste a creare sti maledetti thread, di cui uno legge continuamente dalla seriale e il secondo thread carichi i vari dati sul database con l UPDATE.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    4
    Beh visto che nessuno sa darmi una mano, mi riuscite almeno ad aiutare nel creare thread con la lettura dei dati da seriale?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    4
    codice:
    Imports System.Threading
    Imports MySql.Data.MySqlClient
    Public Class Form1
        Public ThreadEst As Thread
        Dim lettura As String ' lettura da seriale
        Dim temp As String ' lettura temp
        Dim um As String ' lettura umidità
        Dim con As MySqlConnection = New MySqlConnection("Data Source=localhost;Database=test;User ID=root;Password=;")
        Dim MyCommand As New MySqlCommand
    
        Public Sub ChangeX(ByVal x As Integer)
            con.Open()
            MyCommand.Connection = con
            MyCommand.CommandText = "UPDATE salotto SET temp = '" & temp & "', um = '" & um & "'"
            MyCommand.ExecuteNonQuery()
            con.Close()
        End Sub
        Public Sub Changeb(ByVal b As Integer)
            temp = (Mid(lettura, 6, 2))
            um = (Mid(lettura, 14, 2))
            TextBox1.Text = temp
            TextBox2.Text = um
        End Sub
        Public Sub cancella()
            SerialPort1.Open()
            lettura = SerialPort1.ReadLine
            SerialPort1.Close()
        End Sub
        Delegate Sub ChangeY(ByVal x As Integer)
        Dim FunzioneEsterna As ChangeY = AddressOf Me.ChangeX
        Dim FunzioneEsterna2 As ChangeY = AddressOf Me.Changeb
        Dim FunzioneEsterna3 As ChangeY = AddressOf Me.cancella
        Public Sub MainThreadEst()
            Do
                Thread.Sleep(100)
                Dim cancella As Integer = 1
                MyBase.Invoke(FunzioneEsterna3, cancella)
    
    
                Thread.Sleep(1000)
                Dim changeb As Integer = 1
                MyBase.Invoke(FunzioneEsterna2, changeb)
                Thread.Sleep(1000)
                Dim changex As Integer = 1
                MyBase.Invoke(FunzioneEsterna, changex)
            Loop
    
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim threadesterno = New System.Threading.Thread(AddressOf MainThreadEst)
            threadesterno.Name = "TrdEsterno"
            threadesterno.Start()
        End Sub
    End Class

    Con questo codice leggo la stringa dalla seriale, sempre dalla stringa tolgo le parti che non m interessano e le carico sul database.
    Funziona perfettamente, ma non capisco perchè l applicazione ogni 3 secondi fa un freeze!
    Se ho usato i thread perchè accade questo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    4
    Risolto, era l apertura e la chiusura della porta com sul thread che faceva il freeze!
    Comunque beh mi sto aiutando da solo!
    C'è ne fosse uno che mi avesse risposto!

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.