Stap 8: Sommige code toevoegen
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) behandelt Me.Load ' moeten al deze onzin spul - .net het in automatisch wanneer zet ga form1events bovenstaande / laden
Timer1.Enabled = True ' zet dit in code als standaardwaarden op false wanneer gemaakt
Timer1.interval = 20000' elke 20 seconden
PictureBox1.BackColor = Color.Gray ' starten met de comms vakken grijs
PictureBox2.BackColor = Color.Gray
ModifyFlag = False ' als een waarde handmatig wijzigen dan overslaan downloaden
RichTextBox1.Multiline = True ' dus meer dan één regel kunnen worden weergegeven
Bel DisplayPicaxeRegisters() ' de 14 registers weergeven
Bel ReadFTPFilename() ' Lees de bestandsnaam uit de schijf (resaved elke 20 sec)
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
Sub FTPUpload (ByVal Filename As String)
LocalFile As String Dim ' plaats voor het opslaan van gegevens
Externbestand As String Dim ' bestandsnaam is hoofdlettergevoelig dit is echt belangrijk
Const host As String = "ftp://ftp.0catch.com" ' merk op de 0 is een nul niet een personage O
Const username As String = "picaxe.0catch.com"
Const wachtwoord As String = "picaxetester"
Dim URI As String
localFile = bestandsnaam ' misschien niet nodig maar als een locatie BV c:\mydirectory kunt toevoegen gemakkelijk deze manier definiëren
externbestand = "/" + bestandsnaam ' bestand op de FTP-server moet "/" toegevoegd aan de voorzijde
URI = host + externbestand
Probeer
Dim ftp als System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = nieuwe System.Net.NetworkCredential(username, password) ' inloggen
ftp.KeepAlive = False ' zal worden verbroken zodra gedaan
ftp.UseBinary = True ' binaire comms gebruiken
ftp.Timeout = 9000' timeout na 9 seconden - zeer nuttig als ftp soms sterft
' timeout (en de klokfrequentie van 20 seconden) wellicht trager is voor inbel-verbindingen
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile ' beginnen met het verzenden van bestand
Dim fs als nieuwe FileStream(localFile, FileMode.Open) ' lokaal bestand openen
Dim filecontents(fs. Lengte) As Byte ' in het geheugen gelezen
FS. Lezen (filecontents, 0, fs. Lengte)
FS. Close() ' Sluit het bestand
Dim requestStream als stroom ftp.GetRequestStream() = ' start de FTP-verbinding
requestStream.Write (filecontents, 0, filecontents. Lengte) ' verzenden
requestStream.Close() ' Sluit de koppeling
PictureBox2.BackColor = Color.GreenYellow ' verandering het vak groen wil ok werkte
Label2.Text = "FTP verbonden" "tekst zegt het aangesloten
Overstaptijd voor de ' kan geen verbinding maken
PictureBox2.BackColor = Color.Red ' vak rood als geen verbinding
Label2.Text = "FTP Upload Fail" "tekst zegt verbinding is mislukt
Einde proberen
End Sub
Sub FTPDownload (ByVal Filename As String)
' externbestand naar localfile gedownload
LocalFile As String Dim ' plaats voor het opslaan van gegevens
Externbestand As String Dim ' bestandsnaam is hoofdlettergevoelig dit is echt belangrijk
Const host As String = "ftp://ftp.0catch.com"
Const username As String = "picaxe.0catch.com"
Const wachtwoord As String = "picaxetester"
Dim URI As String
' localFile = "C:\" + bestandsnaam ' opslaan in de hoofdmap, maar dit kunt wijzigen
localFile = bestandsnaam ' zodat c:\ kunnen toevoegen als nodig werkelijke locatie definiëren
externbestand = "/" + bestandsnaam ' toegevoegd aan verre ftp-locatie
URI = host + externbestand ' make-up volledig adres
Probeer
Dim ftp als System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = nieuwe System.Net.NetworkCredential(username, password) ' inloggen
ftp.KeepAlive = False ' zal worden verbroken na
ftp.UseBinary = True ' binaire modus
ftp.Timeout = 9000' timeout na 9 seconden
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile ' een bestand downloaden
' lezen in stukken als weet niet hoe groot het bestand is
Met behulp van de reactie als System.Net.FtpWebResponse = CType (ftp.GetResponse, System.Net.FtpWebResponse)
Met behulp van responseStream als IO. Stroom = antwoord. GetResponseStream
Met behulp van fs als nieuwe IO. FileStream (localFile, IO. FileMode.Create)
Dim buffer(2047) As Byte
Dim lezen As Integer = 0
Doen
lezen = responseStream.Read (buffer, 0, buffer. Lengte) ' stuk van ftp
FS. Schrijven (buffer, 0, lees) ' en naar het bestand schrijven
Loop totdat lezen = 0' tot geen meer stukken
responseStream.Close() ' sluit u het ftp-bestand
FS. Flush() ' duidelijk spoelen
FS. Close() ' en sluit het bestand
Eindigt met
responseStream.Close() ' sluiten zelfs als niets er was
Eindigt met
reactie. Close()
PictureBox2.BackColor = Color.GreenYellow ' groene vak als het werkte
Label2.Text = "FTP verbonden" ' en tekst zeggen dat het werkte
Eindigt met
Vangen ' foutcodes hier plaatst
PictureBox2.BackColor = Color.Red ' red box als het niet werkte
Label2.Text = "FTP Download Fail" ' en bericht om dit te zeggen
Einde proberen
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) verwerkt Timer1.Tick
Als ModifyFlag = False Then ' als gebruiker gewijzigd een byte dan niet downloaden
Label3.Text = "Downloaden"
System.Windows.Forms.Application.DoEvents() ' dus de nieuwe tekst in een label worden weergegeven
Bel FTPDownload(TextBox3.Text) ' extern bestand downloaden
Label3.Text = "Gedownload"
System.Windows.Forms.Application.DoEvents()
Bel ReadRemoteFileToRegisters() ' bestandsnummers in de register-array opslaan
Label3.Text = "Talking te picaxe"
System.Windows.Forms.Application.DoEvents()
Anders
ModifyFlag = False ' reset van de vlag
End If
Bel SerialTxRx() ' Stuur naar de picaxe en lees het terug
Label3.Text = "verzonden en ontvangen van picaxe"
System.Windows.Forms.Application.DoEvents()
Oproep DisplayPicaxeRegisters()
Bel SaveRegistersToLocalFile() ' getallen opslaan in bestand
Label3.Text = "Uploaden"
System.Windows.Forms.Application.DoEvents()
Bel FTPUpload(TextBox3.Text) ' Stuur back-up op FTP-site met de naam als mijn naam
Label3.Text = "Rusten"
Bel SaveFTPFilename() ' dus leest wanneer herstarten
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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) behandelt Button1.Click
Dim i As Integer
' eerst buiten het bereik
Ik = Val(TextBox1.Text)
Als ik < 0 of ik 13 > Klik
TextBox1.Text = 0
End If
Ik = Val(TextBox2.Text)
Als ik < 0 of ik > dan 255
TextBox2.Text = 0
End If
PicaxeRegisters(Val(TextBox1.Text)) = Val(TextBox2.Text) ' wijzigen van de waarde
Bel DisplayPicaxeRegisters() ' en de weergave vernieuwen
ModifyFlag = True ' en de volgende ftp link overslaan downloaden
End Sub
Sub SaveRegistersToLocalFile() ' opslaan register matrix in een lokaal tekstbestand opgeslagen
Dim i As Integer
FileOpen (1, TextBox3.Text, OpenMode.Output) ' het tekstbestand met de naam in het tekstvak openen
Voor i = 0 tot en met 13
PrintLine (1, Str(PicaxeRegisters(i))) ' 14 waarden opslaan
Volgende
FileClose(1) ' Sluit het bestand
End Sub
Sub ReadRemoteFileToRegisters() ' Lees lokaal tekstbestand opgeslagen in de array registreren
Dim i As Integer
Dim LineOfText As String
Probeer
FileOpen (1, TextBox3.Text, OpenMode.Input) ' de bestandsnaam van het externe lezen
Voor i = 0 tot en met 13
LineOfText = LineInput(1) ' lezen in de 14 regels
PicaxeRegisters(i) = Val(LineOfText) ' tekst converteren naar waarden
Volgende
FileClose(1)
Catch ex als uitzondering
FileClose(1) "bestand bestaat niet zo doen niets
Einde proberen
End Sub
Sub ReadFTPFilename() ' dus de naam van de externe ftp-bestand is hetzelfde volgende keer dit programma wordt uitgevoerd
Dim LineOfText As String
Probeer
FileOpen (1, "FTPFilename.txt", OpenMode.Input) ' het bestand openen
LineOfText = LineInput(1)
TextBox3.Text = LineOfText ' de naam lezen
FileClose(1)
Catch ex als uitzondering
FileClose(1)
Einde proberen
End Sub
Sub SaveFTPFilename()
FileOpen (1, "FTPFilename.txt", OpenMode.Output) ' de naam van het externe ftp-bestand opslaan
PrintLine (1, TextBox3.Text)
FileClose(1)
End Sub
Einde klasse