Paso 6: Escribir el código
Copie y pegue el código siguiente. El formato como el color del texto volverá a aparecer como en el pantallazo anterior.
Las importaciones de System.IO
Las importaciones de cadenas = Microsoft.VisualBasic ' por lo que puede usar cosas como izquierda (y derecha (para cuerdas
Public Class Form1
Público Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' para los Estados de sueño
Dim WithEvents serialPort como nuevo IO. Ports.SerialPort ' declarar puerto serie
Dim PicaxeRegisters(0 To 13) como Byte ' registros de b0 a b13
Dim ModifyFlag como Boolean
Privada Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) maneja Me.Load
Timer1.Enabled = True ' poner esto en el código como valores por defecto en false cuando se crea
Timer1.Interval = 5000' cada 10 segundos
PictureBox1.BackColor = Color.Gray ' empezar con el gris de la cajas de comunicaciones
ModifyFlag = False ' si modificar un valor manualmente y luego saltar descargar
RichTextBox1.Multiline = True ' por lo que puede mostrar más de una línea
Label1.Text = "Picaxe comunicaciones; rojo = no funciona, verde = ok "
Label2.Text = "Ubicación del archivo de datos"
Label3.Text = "Fecha y hora"
Label4.Text = "Registros de Picaxe"
TextBox3.Text = "c:\Datafile.csv" ' nombre y ubicación del archivo de datos
Llamar DisplayPicaxeRegisters() ' Mostrar los 14 registros
End Sub
Sub SerialTxRx()
Dim DataPacket(0 To 17) como Byte ' paquete de datos completo "Datos" + 14 bytes
Dim i As Integer ' siempre es útil para los bucles etc.
Para i = 0 a 3
DataPacket(i) = Asc (Mid ("datos", i + 1, 1)) ' agrega la palabra "Datos" en el paquete
Siguiente
Para i = 0 a 13
DataPacket(i + 4) = PicaxeRegisters(i) ' agregar todos los bytes en el paquete
Siguiente
Si serialPort.IsOpen entonces
serialPort.Close() ' en caso de que ya abrió
End If
Tratar de
Con serialPort
. PortName = "COM1" ' más nuevos equipos por defecto com1 pero cualquier computadora pre 1999 con un mouse serial com2 mostrará probablemente
. Velocidad en baudios = 2400 ' 2400 es la velocidad máxima de picaxes pequeño
. Paridad = IO. Ports.Parity.None ' sin paridad
. DataBits = 8 ' 8 bits
. StopBits = IO. Ports.StopBits.One ' bits de parada
. ReadTimeout = 1000' milisegundos tan tiempo en 1 segundo si no hay respuesta
. Open() ' abrir el puerto serie
. DiscardInBuffer() ' borrar el búfer de entrada
. Escribir (DataPacket, 0, 18) ' enviar la matriz datapacket
Llamar Sleep(300) ' mínimos esperar datos volver y más si la secuencia de datos es mayor a 100 milisegundos
. Leer (DataPacket, 0, 18) ' leer en el conjunto de paquetes de datos
. Close() ' cerrar el puerto serie
Terminar con
Para i = 4 a 17
PicaxeRegisters (i - 4) = DataPacket(i) ' mover el nuevo paquete de datos en la matriz de registro
Siguiente
PictureBox1.BackColor = Color.GreenYellow ' trabajo
Captura como excepción
PictureBox1.BackColor = Color.Red ' no funciona
Prueba final
End Sub
Privada Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) maneja Timer1.Tick
Llamar SerialTxRx() ' enviar a lo picaxe y leer hacia atrás
System.Windows.Forms.Application.DoEvents() ' para que no cuelgue windows
Llamar DisplayPicaxeRegisters() ' actualizar registros en la pantalla
Llamar SaveRegistersToLocalFile() ' guardar los números en archivo
Label3.Text = ahora ' Actualizar fecha y hora en pantalla
End Sub
Sub DisplayPicaxeRegisters()
Dim te como entero
Dim registernumber As String
RichTextBox1.Multiline = True ' por lo que puede mostrar más de una línea en el cuadro de texto
RichTextBox1.Clear() ' limpiar el cuadro de texto
Para i = 0 a 13
registernumber = Trim(Str(i)) ' ajuste off lleva espacios
Si yo < 10 entonces
registernumber = "0" + registernumber ' Añadir 0 para números menores de 10
End If
RichTextBox1.AppendText (registernumber + "=" + Str(PicaxeRegisters(i)) + Chr(13))
Siguiente ' Chr (13) es tan nuevo retorno de carro de línea
End Sub
Sub SaveRegistersToLocalFile() ' guardar array de registro en un archivo de texto local
' usar un archivo con extensión .csv para excel (separados por comas)
Dim te como entero
Dim DateTime como cadena
Dim LineOfText como cadena
FileOpen (1, TextBox3.Text, OpenMode.Append) ' abrir el archivo de texto en el cuadro de texto
Para i = 0 a 13
LineOfText = LineOfText + Str(PicaxeRegisters(i)) + ","
Siguiente
Fecha y hora = ahora
LineOfText = LineOfText + DateTime ' Añadir la fecha
PrintLine (1, LineOfText)
FileClose(1) ' cerrar el archivo
End Sub
Clase final