viernes, 27 de diciembre de 2013

Generador de tabla html por Puerto Serie V1.0

Este programa esta hecho, pensando en la comunicación Arduino con la Hoja de Cálculo del Open/Libre Office.
Como últimamente  estoy graficando en Calc muchos datos (temperatura, potenciometros...) procedentes de Arduinos, he decidido hacer un programa que simplifique el código en el Arduino para crear una tabla Html.

Descargar proyecto: http://www.4shared.com/zip/yIezN8Dk/Proyecto_generador_tabla_html.html

Las instrucciones en el Arduino son fáciles:
- Con "(" Abro una fila y con ")" la cierro.
- Con "<" abro una celda y con ">" la cierro
- No hay que preocuparse que un número tenga decimales, el Generador tabla html convierte los puntos en comas, para que este en el correcto formato de la hoja de cálculos.
- Se pueden introducir letras y "_".
- Cualquier otro carácter es ignorado.
- Para crear una nueva tabla se crea desde el Generador tabla html.

Ejemplo si el Arduino envia por el puerto serie: (<1><2><3><4>)(<5><6><7><8>)(<9><10><11><12>)

El Generador tabla html crea:
1  2  3  4
 5  6  7  8
9 10 11 12

Ejemplo cógido Arduino:

El Generador tabla html es fácil de usar:
- Al ejecutar crea una tabla "tabla1" vacia.
- Primeo se pulsa habilitar puertos, en port saldrán los puertos disponibles.
- Configurar: velocidad, datos...
- Al pulsar "Conectar", en la pantalla se verán los datos recibidos y los guardara automáticamente en la tabla.
- Al pulsar "Abrir" tabla Html se verán los datos recibidos traducidos a html.
-  "Desconectar" se desconecta el puerto
- " Guardar como: " permite crear una tabla nueva con el nombre del texto que hay a la derecha.





Para importar la tabla  a la hoja de cálculo: insertar / vincular con datos externos , buscar la tabla y después pulsar en actualizar.

                                                        Ejemplo comunicación Arduino Nano-  OpenOffice




Código Visual Basic:


Public Class Arduino_HojaCalculo

    Dim textin As String

    Dim textin2 As String

    Dim Direccion As String

    Dim Tipo As Object

    Dim Archivo As Object

    Dim Archivo2 As Object

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Conectar.Enabled = False

        Conectar.Visible = True

        Desconectar.Enabled = False

        Desconectar.Visible = False

        guardar.Enabled = True

        Tipo = CreateObject("Scripting.FileSystemObject")

        Direccion = "Tabla1.html"

        Archivo = Tipo.CreateTextFile(Direccion, True)

      

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Conectar.Click

        Conectar.Enabled = False

        Conectar.Visible = False

        Desconectar.Enabled = True

        Desconectar.Visible = True

        guardar.Enabled = False

        SerialPort1.BaudRate = ComboBox2.SelectedItem 'Velocidad

        SerialPort1.DataBits = ComboBox5.SelectedItem

        If ComboBox3.Text = "None" Then                 'paridad

            SerialPort1.Parity = IO.Ports.Parity.None

        ElseIf ComboBox3.Text = "Odd" Then

            SerialPort1.Parity = IO.Ports.Parity.Odd

        ElseIf ComboBox3.Text = "Even" Then

            SerialPort1.Parity = IO.Ports.Parity.Even

        ElseIf ComboBox3.Text = "Mark" Then

            SerialPort1.Parity = IO.Ports.Parity.Mark

        ElseIf ComboBox3.Text = "Space" Then

            SerialPort1.Parity = IO.Ports.Parity.Space

        End If

        If ComboBox1.Text = "None" Then                 'stopbits

            SerialPort1.Parity = IO.Ports.StopBits.None

        ElseIf ComboBox1.Text = "OnePointFive" Then

            SerialPort1.Parity = IO.Ports.StopBits.OnePointFive

        ElseIf ComboBox1.Text = "One" Then

            SerialPort1.Parity = IO.Ports.StopBits.One

        ElseIf ComboBox1.Text = "Two" Then

            SerialPort1.Parity = IO.Ports.StopBits.Two

        End If

        SerialPort1.PortName = ComPuertos.SelectedItem 'puerto

        Archivo.writeLine("")

        Archivo.Write("")

        Archivo.Write(Direc.Text)

        Archivo.WriteLine("")

        Archivo.WriteLine("")

        Archivo.WriteLine("")

        Archivo.WriteLine("")

        SerialPort1.Open()

        Timer1.Start()

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Desconectar.Click

        Conectar.Enabled = True

        Conectar.Visible = True

        Desconectar.Enabled = False

        Desconectar.Visible = False

        guardar.Enabled = True

        textrecibir.Text = ""

        SerialPort1.Close()

        Timer1.Stop()

    End Sub

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Process.Start(Direccion)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Habilitar.Click

        ComPuertos.items.clear()

        For Each PuertoDisponible As String In My.Computer.Ports.SerialPortNames

            ComPuertos.Items.Add(PuertoDisponible)

        Next

        If ComPuertos.Items.Count > 0 Then

            ComPuertos.Text = ComPuertos.Items(0)

            Conectar.Enabled = True

            Conectar.Visible = True

        Else

            MessageBox.Show("Ningún puerto encontrado")

            Conectar.Enabled = False

            Conectar.Visible = True

        End If

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim cuenta As Integer

        textin = SerialPort1.ReadExisting() '(<0><2><3><4><5>)

        ' System.Threading.Thread.Sleep(300)

        textrecibir.Text = textrecibir.Text + textin

        cuenta = textin.Length

        For i As Integer = 0 To (cuenta - 1)

            If textin(i) = "(" Then

                Archivo.WriteLine("
")

            ElseIf textin(i) = ")" Then

                Archivo.WriteLine("
")

            ElseIf textin(i) = "<" Then

                Archivo.WriteLine("")

            ElseIf textin(i) = "." Then

                Archivo.Write(",")

            ElseIf textin(i) = "0" Then

                Archivo.Write("0")

            ElseIf textin(i) = "1" Then

                Archivo.Write("1")

            ElseIf textin(i) = "2" Then

                Archivo.Write("2")

            ElseIf textin(i) = "3" Then

                Archivo.Write("3")

            ElseIf textin(i) = "4" Then

                Archivo.Write("4")

            ElseIf textin(i) = "5" Then

                Archivo.Write("5")

            ElseIf textin(i) = "6" Then

                Archivo.Write("6")

            ElseIf textin(i) = "7" Then

                Archivo.Write("7")

            ElseIf textin(i) = "8" Then

                Archivo.Write("8")

            ElseIf textin(i) = "9" Then

                Archivo.Write("9")

            ElseIf textin(i) = "A" Or textin(i) = "a" Then

                Archivo.Write("A")

            ElseIf textin(i) = "B" Or textin(i) = "b" Then

                Archivo.Write("B")

            ElseIf textin(i) = "C" Or textin(i) = "c" Then

                Archivo.Write("C")

            ElseIf textin(i) = "D" Or textin(i) = "d" Then

                Archivo.Write("D")

            ElseIf textin(i) = "E" Or textin(i) = "e" Then

                Archivo.Write("E")

            ElseIf textin(i) = "F" Or textin(i) = "f" Then

                Archivo.Write("F")

            ElseIf textin(i) = "G" Or textin(i) = "g" Then

                Archivo.Write("G")

            ElseIf textin(i) = "H" Or textin(i) = "h" Then

                Archivo.Write("H")

            ElseIf textin(i) = "I" Or textin(i) = "i" Then

                Archivo.Write("I")

            ElseIf textin(i) = "J" Or textin(i) = "j" Then

                Archivo.Write("J")

            ElseIf textin(i) = "K" Or textin(i) = "k" Then

                Archivo.Write("K")

            ElseIf textin(i) = "L" Or textin(i) = "l" Then

                Archivo.Write("L")

            ElseIf textin(i) = "M" Or textin(i) = "m" Then

                Archivo.Write("M")

            ElseIf textin(i) = "N" Or textin(i) = "n" Then

                Archivo.Write("N")

            ElseIf textin(i) = "O" Or textin(i) = "o" Then

                Archivo.Write("O")

            ElseIf textin(i) = "P" Or textin(i) = "p" Then

                Archivo.Write("P")

            ElseIf textin(i) = "Q" Or textin(i) = "q" Then

                Archivo.Write("Q")

            ElseIf textin(i) = "R" Or textin(i) = "r" Then

                Archivo.Write("R")

            ElseIf textin(i) = "S" Or textin(i) = "s" Then

                Archivo.Write("S")

            ElseIf textin(i) = "T" Or textin(i) = "t" Then

                Archivo.Write("T")

            ElseIf textin(i) = "U" Or textin(i) = "u" Then

                Archivo.Write("U")

            ElseIf textin(i) = "V" Or textin(i) = "v" Then

                Archivo.Write("V")

            ElseIf textin(i) = "W" Or textin(i) = "w" Then

                Archivo.Write("W")

            ElseIf textin(i) = "Y" Or textin(i) = "y" Then

                Archivo.Write("Y")

            ElseIf textin(i) = "Z" Or textin(i) = "z" Then

                Archivo.Write("z")

            ElseIf textin(i) = "_" Then

                Archivo.Write("_")

            ElseIf textin(i) = "-" Then

                Archivo.Write("-")

            End If

        Next

    End Sub

   

    Private Sub guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles guardar.Click

        Direccion = Direc.Text + ".html" '"C:\Users\jsslxs\Desktop\"

        Archivo = Tipo.CreateTextFile(Direccion, True)

        Archivo = Tipo.CreateTextFile(Direccion, True)

    End Sub

    Private Sub jsslxs_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles jsslxs.LinkClicked

        'jsslxs.url = "jsslxs.blogspot.com"

        System.Diagnostics.Process.Start("http://jsslxs.blogspot.com")

    End Sub

End Class

 


") ElseIf textin(i) = ">" Then Archivo.WriteLine("


5 comentarios:

  1. Estimado Benavent. Su idea en el blog (http://autron.blogspot.com.br/2013/12/generador-de-tabla-html-por-puerto.html) puede venir a ayudarme. Todavía tengo que entender todo el proceso, ya que soy nuevo en la programación de computadoras. Encima yo uso Linux y no de Windows. Pero vamos a pasar.

    Permítanme hacer una pequeña corrección a su código. En el ejemplo disponible, llamada (ejemplo_codigoarduino_para_generador_tabla_html.ino) hay un error en la línea 29. Cuando lee Serial.print (x) debe ser escrito Serial.print (x-1). Sólo entonces los senos y cosenos son correctos a la segunda cifra decimal.

    Lo siento mi mal español.

    Abrazo,
    Luiz.

    ResponderEliminar
    Respuestas
    1. Gracias Luis C, espero que te sea útil! y también gracias por tu feedback

      Eliminar
  2. Hola, este es un proyecto muy interesante.
    Lamentablemente, la página sale de http://www.4shared.com/zip/yIezN8Dk/Proyecto_generador_tabla_html.html
    ya no llama y ya no tiene acceso al código fuente del proyecto.
    ¿Puede hacer que el contenido del sitio web mencionado anteriormente esté disponible de otra manera?
    Muchas gracias y saludos
    Colonia, Alemania
    Georg Dotten
    Perdón por el mal español!

    ResponderEliminar
    Respuestas
    1. muy interesante.
      Lamentablemente, la página sale de http://www.4shared.com/zip/yIezN8Dk/Proyecto_generador_tabla_html.html
      ya no y ya no tiene acceso al código fuente del proyecto.
      ¿Puede hacer que el contenido del sitio web anterior esté disponible de alguna otra manera?
      Gracias y saludos
      Colonia, Alemania
      Georg Dotten
      Perdón por el mal español!

      Mi correo electrónico es:
      nc-dottenge@netcologne.de

      Eliminar
    2. Viele danke Georg, aber ich habe das Projekt nicht, mein alter laptop is kaput.
      Du mus meine erste Version dieses Projekts sehen. Auch ich habe das project nicht, aber ich habe Screenshots des gesamten Programmcodes gemacht

      https://autron.blogspot.com/2013/12/comunicacion-de-arduino-con-hoja-de.html

      Viele Grüsse,
      Jesús

      Eliminar