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