Étape 6: Écrire le code
Copiez et collez le code ci-dessous. La mise en forme dont la couleur du texte réapparaît comme dans la capture d’écran ci-dessus.
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
Timer1.Enabled = True ' mettre cela dans le code par défaut false lors de la création
Timer1.Interval = 5000' toutes les 10 secondes
PictureBox1.BackColor = Color.Gray ' commencer avec le gris de boîtes de comms
ModifyFlag = False ' si modifier une valeur manuellement puis sauter Télécharger
RichTextBox1.Multiline = True ' alors peut afficher plusieurs lignes
Label1.Text = "Picaxe communications ; rouge = ne fonctionne ne pas, vert = ok "
Label2.Text = « Emplacement du fichier de données »
Label3.Text = « Date et heure »
Label4.Text = « Picaxe registres »
TextBox3.Text = « c:\Datafile.csv » ' nom et emplacement du fichier de données
Appeler DisplayPicaxeRegisters() ' afficher les 14 registres
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
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Appeler SerialTxRx() ' Envoyer à le picaxe et il a collationné
System.Windows.Forms.Application.DoEvents() ' donc ne se bloque pas windows
Appeler DisplayPicaxeRegisters() ' actualiser les registres sur l’écran
Appeler SaveRegistersToLocalFile() ' enregistrer les numéros de fichier
Label3.Text = maintenant ' actualiser la date et l’heure sur l’écran
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
Sub SaveRegistersToLocalFile() ' enregistrer tableau de Registre dans un fichier texte local
"utiliser un fichier avec l’extension .csv pour excel (séparés par des virgules)
Dim i As Integer
Dim DateTime As String
Dim LineOfText As String
FileOpen (1, TextBox3.Text, OpenMode.Append) ' ouvrir le fichier texte nommé dans la zone de texte
For i = 0 à 13
LineOfText = LineOfText + Str(PicaxeRegisters(i)) + «, »
Prochaine
DateTime = maintenant
LineOfText = LineOfText + DateTime ' ajouter la date
PrintLine (1, LineOfText)
FileClose(1) ' fermer le fichier
End Sub
End Class