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.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
 
5>4>3>2>0>
 



 
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.
ResponderEliminarPermí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.
Gracias Luis C, espero que te sea útil! y también gracias por tu feedback
EliminarHola, este es un proyecto muy interesante.
ResponderEliminarLamentablemente, 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!
muy interesante.
EliminarLamentablemente, 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
Viele danke Georg, aber ich habe das Projekt nicht, mein alter laptop is kaput.
EliminarDu 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