Stap 6: De code schrijven
Kopieer en plak de onderstaande code. De opmaak met inbegrip van de kleur van de tekst zal wel weer zoals in de screenshot hierboven.
Invoer System.IO
Hiermee importeert u tekenreeksen = Microsoft.VisualBasic ' dus kunt dingen zoals links (en rechts (voor strijkers
Public Class Form1
Openbare Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' voor de verklaringen van de slaap
Dim WithEvents serialPort als nieuwe IO. Ports.SerialPort ' seriële poort verklaren
Dim PicaxeRegisters(0 To 13) As Byte ' registreert b0 aan b13
Dim ModifyFlag As Boolean
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) verwerkt Me.Load
Timer1.Enabled = True ' zet dit in code als standaardwaarden op false wanneer gemaakt
Timer1.interval = 5000' elke 10 seconden
PictureBox1.BackColor = Color.Gray ' starten met de comms vakken grijs
ModifyFlag = False ' als een waarde handmatig wijzigen dan overslaan downloaden
RichTextBox1.Multiline = True ' dus meer dan één regel kunnen worden weergegeven
Label1.Text = "Picaxe communicatie; rood = niet werken, groen = ok "
Label2.Text = "Locatie van gegevensbestand"
Label3.Text = "Datum en tijd"
Label4.Text = "Picaxe registers"
TextBox3.Text = "c:\Datafile.csv" ' naam en locatie van het gegevensbestand
Bel DisplayPicaxeRegisters() ' de 14 registers weergeven
End Sub
Sub SerialTxRx()
Dim DataPacket(0 To 17) As Byte ' volledige gegevenspakket "Data" + 14 bytes
Dim i As Integer ' ik is altijd handig for-lussen enz
Voor i = 0 tot en met 3
DataPacket(i) Asc (Mid ("Data", ik + 1, 1)) = "het woord"Data"toevoegen aan het pakket
Volgende
Voor i = 0 tot en met 13
DataPacket(i + 4) = PicaxeRegisters(i) ' alle bytes aan het pakket toevoegen
Volgende
Als serialPort.IsOpen dan
serialPort.Close() ' in het geval dat al geopend
End If
Probeer
Met serialPort
. PortName "COM1" = "de meeste nieuwe computers standaard naar com1 maar elke computer pre 1999 met een seriële muis waarschijnlijk standaard ingesteld op com2
. BaudRate = 2400 ' 2400 is de maximale snelheid voor kleine picaxes
. Pariteit = IO. Ports.Parity.None ' geen pariteit
. DataBits = 8 ' 8 bits
. StopBits = IO. Ports.StopBits.One ' one-stop bits
. ReadTimeout = 1000' milliseconden dus een time-out optreedt in 1 seconde als geen reactie
. Open() ' de seriële poort openen
. DiscardInBuffer() ' de input buffer wissen
. Schrijven (DataPacket, 0, 18) ' Stuur de datapacket matrix
Bel Sleep(300) ' 100 milliseconden minimum te wachten op gegevens terug te komen en meer als de gegevensstroom is langer
. Lezen (DataPacket, 0, 18) ' lezen terug in de matrix van de packet gegevens
. Close() ' Sluit de seriële poort
Eindigen met
Voor i = 4 tot en met 17
PicaxeRegisters (i - 4) DataPacket(i) = ' de nieuwe gegevenspakket te verplaatsen in de array registreren
Volgende
PictureBox1.BackColor = Color.GreenYellow ' werken
Catch ex als uitzondering
PictureBox1.BackColor = Color.Red ' werkt niet
Einde proberen
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) verwerkt Timer1.Tick
Bel SerialTxRx() ' Stuur naar de picaxe en lees het terug
System.Windows.Forms.Application.DoEvents() ' zodat windows niet hangen
Bel DisplayPicaxeRegisters() ' registers op het scherm te vernieuwen
Bel SaveRegistersToLocalFile() ' getallen opslaan in bestand
Label3.Text = nu ' datum en tijd op scherm vernieuwen
End Sub
Sub DisplayPicaxeRegisters()
Dim i As Integer
Dim registernumber As String
RichTextBox1.Multiline = True ' zodat kan meer dan één regel wordt weergegeven in het tekstvak
RichTextBox1.Clear() ' laat u het tekstvak leeg
Voor i = 0 tot en met 13
registernumber = Trim(Str(i)) ' trim uit voorloopspaties
Als ik vervolgens < 10
registernumber = "0" + registernumber ' 0 toevoegen aan de nummers onder 10
End If
RichTextBox1.AppendText (registernumber + "=" + Str(PicaxeRegisters(i)) + Chr(13))
Volgende ' chr(13) is zo nieuw retourregel vervoer
End Sub
Sub SaveRegistersToLocalFile() ' opslaan register matrix in een lokaal tekstbestand opgeslagen
' gebruik van een bestand met de extensie .csv voor excel (komma gescheiden)
Dim i As Integer
Dim DateTime As String
Dim LineOfText As String
FileOpen (1, TextBox3.Text, OpenMode.Append) ' het tekstbestand met de naam in het tekstvak openen
Voor i = 0 tot en met 13
LineOfText = LineOfText + Str(PicaxeRegisters(i)) + ","
Volgende
DateTime = nu
LineOfText = LineOfText + DateTime ' de datum toevoegen
PrintLine (1, LineOfText)
FileClose(1) ' Sluit het bestand
End Sub
Einde klasse