Paso 8: Agregar algo de código
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 ' necesitan todas estas cosas de la basura - .net pone en automáticamente cuando va form1events arriba / carga
Timer1.Enabled = True ' poner esto en el código como valores por defecto en false cuando se crea
Timer1.Interval = 20000' cada 20 segundos
PictureBox1.BackColor = Color.Gray ' empezar con el gris de la cajas de comunicaciones
PictureBox2.BackColor = Color.Gray
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
Llamar DisplayPicaxeRegisters() ' Mostrar los 14 registros
Llamar ReadFTPFilename() ' leer el nombre del disco (guardar cada 20 segundos)
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
Sub FTPUpload (ByVal Filename como cadena)
Dim Archivo_local As String ' lugar para guardar datos
Dim Archivo_remoto As String ' nombre del archivo es caso sensible esto es realmente importante
Const host As String = "ftp://ftp.0catch.com" ' tenga en cuenta el 0 es un cero no un personaje O
Const username As String = "picaxe.0catch.com"
Const contraseña As String = "picaxetester"
Dim URI como cadena
Archivo_local = nombre_archivo ' tal vez no sea necesario pero si definir una ubicación por ejemplo, c:\mydirectory puede agregar fácilmente de esta manera
Archivo_remoto = "/" + Filename ' archivo en servidor ftp necesita "/" agregado en el frente
URI = host + Archivo_remoto
Tratar de
Dim ftp como System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = New System.Net.NetworkCredential(username, password) ' iniciar sesión en
ftp.KeepAlive = False ' se desconecta una vez hecho
ftp.UseBinary = True ' utilizar comunicaciones binarias
ftp.Timeout = 9000' tiempo de espera después de 9 segundos, muy útiles como ftp a veces muere
' tiempo de espera (y la frecuencia de reloj de 20 segundos) pueden necesitar ser más lenta para las conexiones de acceso telefónico a redes
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile ' empezar a enviar archivo
Dim fs como nuevo FileStream(localFile, FileMode.Open) ' Abrir archivo local
Dim filecontents(fs. Byte de longitud) como ' leer en memoria
FS. Leer (Contenidosdearchivo, 0, fs. Longitud)
FS. Close() ' cerrar el archivo
Dim requestStream como secuencia = ftp.GetRequestStream() ' iniciar enlace ftp
requestStream.Write (Contenidosdearchivo, 0, Contenidosdearchivo. Longitud) ' enviar
requestStream.Close() ' cerrar el enlace
PictureBox2.BackColor = Color.GreenYellow ' cambiar el cuadro verde a decir funcionó ok
Label2.Text = "FTP conectado" ' texto diciendo conectado
Catch ' no puede conectarse
PictureBox2.BackColor = Color.Red ' caja roja como sin conexión
Label2.Text = "FTP Upload error" ' texto diciendo conexión falló
Prueba final
End Sub
Sub FTPDownload (ByVal Filename como cadena)
' descargas archivo_remoto a archivo_local
Dim Archivo_local As String ' lugar para guardar datos
Dim Archivo_remoto As String ' nombre del archivo es caso sensible esto es realmente importante
Const host As String = "ftp://ftp.0catch.com"
Const username As String = "picaxe.0catch.com"
Const contraseña As String = "picaxetester"
Dim URI como cadena
' Archivo_local = "C:\" + nombre del archivo ' guardar en directorio raíz pero puede cambiar esto
Archivo_local = nombre de archivo ' para que pueda añadir c:\ si necesita definir ubicación real
Archivo_remoto = "/" + Filename ' añadido a la ubicación de ftp remoto
URI = host + Archivo_remoto ' conforman la dirección completa
Tratar de
Dim ftp como System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = New System.Net.NetworkCredential(username, password) ' iniciar sesión en
ftp.KeepAlive = False ' se desconecta después de terminado
ftp.UseBinary = True ' modo binario
ftp.Timeout = 9000' tiempo de espera después de 9 segundos
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile ' descargar un archivo
' leer en piezas como no saben cuán grande es el archivo
Con respuesta como System.Net.FtpWebResponse = CType (ftp.GetResponse, System.Net.FtpWebResponse)
Utilizando responseStream como IO. Corriente = respuesta. GetResponseStream
Utilizando fs como nuevo IO. FileStream (Archivo_local, IO. FileMode.Create)
Dim buffer(2047) como Byte
Dim Lee As Integer = 0
Hacer
leer = responseStream.Read (buffer, 0, tampón. Longitud) ' pieza de ftp
FS. Escribir (buffer, 0, Lee) ' y escribir presentar
Loop hasta que leer = 0' hasta no mas piezas
responseStream.Close() ' cerrar el archivo ftp
FS. Flush() ' ras claro
FS. Close() ' y cierre el archivo
Extremo usando
responseStream.Close() ' cerrar aunque nada estaba allí
Extremo usando
respuesta. Close()
PictureBox2.BackColor = Color.GreenYellow ' verde caja como trabajó
Label2.Text = "FTP conectados" "y texto diciendo que trabajó
Extremo usando
Catch ' poner aquí los códigos de error
PictureBox2.BackColor = Color.Red ' rojo de la caja ya no funciona
Label2.Text = "FTP Descargar Fail" ' y mensaje para decir esto
Prueba final
End Sub
Privada Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) maneja Timer1.Tick
Si ModifyFlag = False Then ' si el usuario cambia un byte entonces no descarga
Label3.Text = "Descargando"
System.Windows.Forms.Application.DoEvents() ' por lo que muestra el nuevo texto de la etiqueta
Llamar FTPDownload(TextBox3.Text) ' Descargar archivo remoto
Label3.Text = "Descargado"
System.Windows.Forms.Application.DoEvents()
Llamar ReadRemoteFileToRegisters() ' Guardar números de archivo en el array de registro
Label3.Text = "Hablando con picaxe"
System.Windows.Forms.Application.DoEvents()
Otra cosa
ModifyFlag = False ' restablecer la bandera
End If
Llamar SerialTxRx() ' enviar a lo picaxe y leer hacia atrás
Label3.Text = "enviado y recibido de picaxe"
System.Windows.Forms.Application.DoEvents()
Llamar al DisplayPicaxeRegisters()
Llamar SaveRegistersToLocalFile() ' guardar los números en archivo
Label3.Text = "Subir"
System.Windows.Forms.Application.DoEvents()
Llamar FTPUpload(TextBox3.Text) ' enviar hasta sitio ftp denominado como mi nombre
Label3.Text = "Descansando"
Llamar al SaveFTPFilename() ' por lo que lee al reinicia
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
Privada Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) maneja Button1.Click
Dim te como entero
' Compruebe fuera de rango primero
i = Val(TextBox1.Text)
Si yo < 0 o i > 13 entonces
TextBox1.Text = 0
End If
i = Val(TextBox2.Text)
Si yo < 0 o i > 255 entonces
TextBox2.Text = 0
End If
PicaxeRegisters(Val(TextBox1.Text)) = Val(TextBox2.Text) ' cambiar el valor
Llamar al DisplayPicaxeRegisters() ' y actualizar la pantalla
ModifyFlag = True ' y enlace ftp skip descargando
End Sub
Sub SaveRegistersToLocalFile() ' guardar array de registro en un archivo de texto local
Dim te como entero
FileOpen (1, TextBox3.Text, OpenMode.Output) ' abrir el archivo de texto en el cuadro de texto
Para i = 0 a 13
PrintLine (1, Str(PicaxeRegisters(i))) ' guardar 14 valores
Siguiente
FileClose(1) ' cerrar el archivo
End Sub
Sub ReadRemoteFileToRegisters() ' leer archivo de texto local en la matriz de registro
Dim te como entero
Dim LineOfText como cadena
Tratar de
FileOpen (1, TextBox3.Text, OpenMode.Input) ' leer el nombre del archivo remoto
Para i = 0 a 13
LineOfText = LineInput(1) ' leer en las 14 líneas
PicaxeRegisters(i) = Val(LineOfText) ' convertir texto a valores
Siguiente
FileClose(1)
Captura como excepción
FileClose(1) ' no existe así que no nada
Prueba final
End Sub
Sub ReadFTPFilename() ' para el nombre del archivo ftp remoto es lo mismo la próxima vez que se ejecuta este programa
Dim LineOfText como cadena
Tratar de
FileOpen (1, "FTPFilename.txt", OpenMode.Input) ' abrir el archivo
LineOfText = LineInput(1)
TextBox3.Text = LineOfText ' leer el nombre
FileClose(1)
Captura como excepción
FileClose(1)
Prueba final
End Sub
Sub SaveFTPFilename()
FileOpen (1, "FTPFilename.txt", OpenMode.Output) ' guardar el nombre del archivo ftp remoto
PrintLine (1, TextBox3.Text)
FileClose(1)
End Sub
Clase final