Étape 8: Ajouter du code
Imports System.IO
Importations de cordes = Microsoft.VisualBasic ' pour permettre d’utiliser les choses comme gauche (et à droite (pour les chaînes
Public Class Form1
Public Declare Sub sommeil Lib « kernel32 » (ByVal dwMilliseconds As Integer) ' pour les déclarations de sommeil
Dim WithEvents serialPort comme nouveau IO. Ports.SerialPort ' port série déclarer
Dim PicaxeRegisters(0 To 13) As Byte ' enregistre b0 à b13
Dim ModifyFlag As Boolean
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' besoin tout ce truc de détritus - .net met dans automatiquement quand aller form1events ci-dessus / charge
Timer1.Enabled = True ' mettre cela dans le code par défaut false lors de la création
Timer1.Interval = 20000' toutes les 20 secondes
PictureBox1.BackColor = Color.Gray ' commencer avec le gris de boîtes de comms
PictureBox2.BackColor = Color.Gray
ModifyFlag = False ' si modifier une valeur manuellement puis sauter Télécharger
RichTextBox1.Multiline = True ' alors peut afficher plusieurs lignes
Appeler DisplayPicaxeRegisters() ' afficher les 14 registres
Appeler ReadFTPFilename() ' lire le nom de fichier sur le disque (réenregistré toutes les 20 secondes)
End Sub
Void SerialTxRx()
Dim DataPacket(0 To 17) As Byte ' paquet entier de données "Data" + 14 octets
Dim i As Integer ' i est toujours utile pour les boucles etc.
For i = 0 à 3
DataPacket(i) = Asc (Mid ("Data", i + 1, 1)) ' ajouter le terme « Données » au contenu du paquet
Prochaine
For i = 0 à 13
DataPacket(i + 4) = PicaxeRegisters(i) ' ajoute tous les octets du paquet
Prochaine
Si serialPort.IsOpen alors
serialPort.Close() "juste au cas où déjà ouvert
End If
Essayez
Avec serialPort
. PortName = « COM1 » ' la plupart nouveaux ordinateurs par défaut à com1, mais n’importe quel ordinateur avant 1999 avec une souris série probablement par défaut à com2
. BaudRate = 2400 2400 ' est la vitesse de maxiumum pour petits picaxes
. Parité = IO. Ports.Parity.None ' aucune parité
. DataBits = 8 ' 8 bits
. StopBits = IO. Ports.StopBits.One ' un bit d’arrêt
. ReadTimeout = 1000' millisecondes alors arrive à expiration en 1 seconde si aucune réponse
. Open() ' ouvrir le port série
. DiscardInBuffer() ' effacer la mémoire tampon d’entrée
. Écrire (DataPacket, 0, 18) ' envoyer le tableau datapacket
Appeler Sleep(300) ' minimal à attendre pour les données de revenir et de plus si le flux de données est plus longue de 100 millisecondes
. Lire (DataPacket, 0, 18) ' lire dans le tableau de paquets de données
. Close() ' fermer le port série
Se termine par
Pour i = 4 à 17
PicaxeRegisters (i - 4) = DataPacket(i) ' déplacer le nouveau paquet de données dans le tableau de Registre
Prochaine
PictureBox1.BackColor = Color.GreenYellow ' travailler
Catch ex As Exception
PictureBox1.BackColor = Color.Red ' ne fonctionne ne pas
End Try
End Sub
Sub FTPUpload (ByVal Filename As String)
Dim localFile As String ' endroit pour stocker des données
Dim fichierdistant As String ' nom de fichier respecte la casse c’est vraiment important
Const hôte As String = « ftp://ftp.0catch.com » ' noter la valeur 0 est un zéro pas un caractère O
Const username As String = « picaxe.0catch.com »
Const password As String = « picaxetester »
Dim URI As String
localFile = Filename "peut-être ne pas nécessaire mais si définir un emplacement, par exemple, c:\mydirectory peut ajouter facilement de cette façon
fichierdistant = « / » + nom de fichier "fichier sur serveur ftp doit « / » ajouté à l’avant
URI = hôte + fichierdistant
Essayez
Dim ftp comme System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = New System.Net.NetworkCredential(username, password) ' ouvrir une session
ftp.KeepAlive = False ' va être débrancher une fois fait
ftp.UseBinary = True ' utiliser le binaire comms
ftp.Timeout = 9000' timeout au bout de 9 secondes - très utiles comme ftp parfois dies
' timeout (et la fréquence d’horloge de 20 secondes) peuvent devoir être plus lent pour les connexions par modem
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile ' commencer à envoyer des fichiers
Dim fs As New FileStream(localFile, FileMode.Open) ' ouvrir le fichier local
Dim filecontents(fs. Longueur) As Byte ' lues en mémoire
FS. Lire (filecontents, 0, fs. Longueur)
FS. Close() ' fermer le fichier
Dim requestStream As Stream = ftp.GetRequestStream() ' commencer lien ftp
requestStream.Write (filecontents, 0, filecontents. Longueur) « Envoyez-le
requestStream.Close() ' fermer la liaison
PictureBox2.BackColor = Color.GreenYellow ' changer la boîte au vert pour dire a fonctionné ok
Label2.Text = « FTP connecté » ' texte disant qu’il connecté
Catch ' ne peut pas se connecter
PictureBox2.BackColor = Color.Red ' boîte à rouge comme aucun lien
Label2.Text = « FTP Upload Fail » ' texte disant : la connexion a échoué
End Try
End Sub
Sub TéléchargementFTP (ByVal Filename As String)
« téléchargements fichierdistant à fichierlocal
Dim localFile As String ' endroit pour stocker des données
Dim fichierdistant As String ' nom de fichier respecte la casse c’est vraiment important
Const hôte As String = « ftp://ftp.0catch.com »
Const username As String = « picaxe.0catch.com »
Const password As String = « picaxetester »
Dim URI As String
"localFile = « C:\ » + nom de fichier" stocker dans le répertoire racine, mais peut changer cela
localFile = Filename "pour permettre d’ajouter c:\ si besoin définir l’emplacement réel
fichierdistant = « / » + nom de fichier ' ajouté à l’emplacement ftp distant
URI = hôte + fichierdistant "composent adresse complète
Essayez
Dim ftp comme System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = New System.Net.NetworkCredential(username, password) ' ouvrir une session
ftp.KeepAlive = False ' va se déconnecter après avoir terminé
ftp.UseBinary = True ' mode binaire
ftp.Timeout = 9000' timeout après 9 secondes
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile ' télécharger un fichier
« lire en morceaux car ne sais pas comment le fichier est grande
À l’aide de réponse comme System.Net.FtpWebResponse = CType (ftp.GetResponse, System.Net.FtpWebResponse)
À l’aide de responseStream As IO. Stream = réponse. GetResponseStream
À l’aide de fs comme nouveau IO. FileStream (localFile, IO. FileMode.Create)
Dim buffer(2047) As Byte
Dim lire As Integer = 0
Faire
lire = responseStream.Read (buffer, 0, mettre en mémoire tampon. Longueur) « morceau de ftp
FS. Écrire (buffer, 0, lire) "et écrire dans le fichier
Boucle tant que lu = 0' jusqu'à ce que pas plus de morceaux
responseStream.Close() ' fermer les fichiers par ftp
FS. Flush() ' flush clair
FS. Close() ' et fermez le fichier
Mettre fin à l’aide
responseStream.Close() ' fermer même si rien n’était là
Mettre fin à l’aide
réponse. Close()
PictureBox2.BackColor = Color.GreenYellow ' catégorie verte, comme cela a fonctionné
Label2.Text = « FTP connecté » "et le texte disant qu’il a travaillé
Mettre fin à l’aide
Catch ' mettre ici les codes d’erreur
PictureBox2.BackColor = Color.Red ' rouge boîte tel qu’il n’a pas fonctionné
Label2.Text = « Échec de téléchargement FTP » "et le message de le dire
End Try
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Si ModifyFlag = False Then ' si l’utilisateur a changé un octet ne puis télécharger
Label3.Text = « Téléchargement »
System.Windows.Forms.Application.DoEvents() ' ce nouveau texte de l’étiquette affiche
Appeler FTPDownload(TextBox3.Text) ' Télécharger le fichier distant
Label3.Text = « Téléchargé »
System.Windows.Forms.Application.DoEvents()
Appeler ReadRemoteFileToRegisters() ' enregistrer les numéros de fichier dans le registre de tableau
Label3.Text = « Talking à picaxe »
System.Windows.Forms.Application.DoEvents()
D’autre
ModifyFlag = False ' réinitialiser l’indicateur
End If
Appeler SerialTxRx() ' Envoyer à le picaxe et il a collationné
Label3.Text = "envoyés et reçus de picaxe"
System.Windows.Forms.Application.DoEvents()
Appel DisplayPicaxeRegisters()
Appeler SaveRegistersToLocalFile() ' enregistrer les numéros de fichier
Label3.Text = « Envoi »
System.Windows.Forms.Application.DoEvents()
Appeler FTPUpload(TextBox3.Text) ' Envoyer à ftp site nommé comme mon nom
Label3.Text = « Au repos »
Appeler SaveFTPFilename() ' donc lectures quand redémarrer
End Sub
Void DisplayPicaxeRegisters()
Dim i As Integer
Dim registernumber As String
RichTextBox1.Multiline = True ' alors peut afficher plusieurs lignes dans la zone de texte
RichTextBox1.Clear() ' efface la zone de texte
For i = 0 à 13
registernumber = Trim(Str(i)) ' assiette hors espaces
Si j’ai < 10 puis
registernumber = « 0 » + registernumber ' ajouter 0 à un nombre inférieur à 10
End If
RichTextBox1.AppendText (registernumber + « = » + Str(PicaxeRegisters(i)) + Chr(13))
Prochain ' Chr (13) est tellement nouvelle ligne de transport retour
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
' vérifier hors de portée d’abord
J’ai = Val(TextBox1.Text)
Si j’ai < 0 ou j’ai 13 > puis
TextBox1.Text = 0
End If
J’ai = Val(TextBox2.Text)
Si j’ai < 0 ou j’ai > 255 puis
TextBox2.Text = 0
End If
PicaxeRegisters(Val(TextBox1.Text)) = Val(TextBox2.Text) ' modifier la valeur
Appeler DisplayPicaxeRegisters() ' et actualisera l’affichage de la
ModifyFlag = True ' et le lien ftp suivant sauter téléchargement
End Sub
Sub SaveRegistersToLocalFile() ' enregistrer tableau de Registre dans un fichier texte local
Dim i As Integer
FileOpen (1, TextBox3.Text, OpenMode.Output) ' ouvrir le fichier texte nommé dans la zone de texte
For i = 0 à 13
PrintLine (1, Str(PicaxeRegisters(i))) ' enregistrer des valeurs de 14
Prochaine
FileClose(1) ' fermer le fichier
End Sub
Sub ReadRemoteFileToRegisters() ' Lire fichier texte local dans le tableau de Registre
Dim i As Integer
Dim LineOfText As String
Essayez
FileOpen (1, TextBox3.Text, OpenMode.Input) ' lire le nom de fichier distant
For i = 0 à 13
LineOfText = LineInput(1) ' lire dans les 14 lignes
PicaxeRegisters(i) = Val(LineOfText) "convertir le texte en valeurs
Prochaine
FileClose(1)
Catch ex As Exception
FileClose(1) ' il n’existe pas alors ne rien
End Try
End Sub
Sub ReadFTPFilename() ' le nom du fichier ftp distant est donc le même prochaine fois que ce programme est exécuté
Dim LineOfText As String
Essayez
FileOpen (1, "FTPFilename.txt", OpenMode.Input) ' ouvrir le fichier
LineOfText = LineInput(1)
TextBox3.Text = LineOfText ' lire le nom
FileClose(1)
Catch ex As Exception
FileClose(1)
End Try
End Sub
Void SaveFTPFilename()
FileOpen (1, "FTPFilename.txt", OpenMode.Output) ' enregistrer le nom de fichier ftp distant
PrintLine TextBox3.Text (1)
FileClose(1)
End Sub
End Class