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>
 



 















 
 

