Hela världen microcontroller länk för under $20 (8 / 15 steg)

Steg 8: Lägga till lite kod



Se steg 12 av den annan instructable för placeringen av knappen som vänder mellan form och kod. Växla till kodvy och klistra in följande kod i. Färgerna ska alla igen som i skärmdumpen. Om en linje inte har kopierat ordentligt på ett wordwrap problem sedan bort utrymmen tills felmeddelandet går bort. Jag har försökt att kommentera de flesta av raderna så koden åtminstone några logiskt. Ta bort den offentliga klass lite så texten är tom innan du klistrar in detta - här koden har redan en allmän klass. Om ett objekt som en textruta har inte placerats i formuläret eller har fel namn då kommer det i kod med en snirklig blå linje under den.

Import System.IO
Importerar strängarna = Microsoft.VisualBasic "så kan använda saker som vänster (och rätt (för strängar
Public Class Form1
Offentligt deklarera Sub sömn Lib "kernel32" (ByVal dwMilliseconds As Integer) "för sömn uttalanden
Dim WithEvents serialPort som nya IO. Ports.SerialPort "serieport deklarera
Dim PicaxeRegisters(0 To 13) som Byte "registrerar b0 till b13
Dim ModifyFlag som Boolean
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) hanterar Me.Load "behöver allt sånt skräp - .net uttrycker det i automatiskt när gå form1events ovan / ladda
Timer1.Enabled = True ' sätta detta i koden som standard false när skapade
Timer1.Interval = 20000' var 20 sekund
PictureBox1.BackColor = Color.Gray ' börja med den comms lådor grå
PictureBox2.BackColor = Color.Gray
ModifyFlag = False "om ändra värdet manuellt då hoppa nedladdning
RichTextBox1.Multiline = True "så kan visa mer än en rad
Kalla DisplayPicaxeRegisters() "Visa 14 register
Kalla ReadFTPFilename() "Läs filnamnet av disken (omsparade varje 20 sekunder)
End Sub
Sub SerialTxRx()
Dim DataPacket(0 To 17) som Byte ' hela datapaket "Data" + 14 byte
Dim jag As Integer ' jag är alltid bra för loopar etc
För i = 0 till 3
DataPacket(i) = Asc (mitten av ("Data", jag + 1, 1)) ' lägga till ordet "Data" i paketet
Nästa
För i = 0 till 13
DataPacket(i + 4) = PicaxeRegisters(i) ' lägga till alla byte i paketet
Nästa
Om serialPort.IsOpen sedan
serialPort.Close() "ifall redan öppnat
Slut om
Försök
Med serialPort
. PortName = "COM1" "de flesta nya datorer som standard till com1 men någon pre 1999 computern med en seriell mus kommer förmodligen standard till com2
. Baud = 2400 ' 2400 är Max hastigheten för små picaxes
. Paritet = IO. Ports.Parity.None ' ingen paritet
. DataBits = 8 ' 8 bitar
. StopBits = IO. Ports.StopBits.One "en stoppbit
. ReadTimeout = 1000' millisekunder så gånger i 1 sekund om inget svar
. Open() "öppna den seriella porten
. DiscardInBuffer() ' Rensa indatabufferten
. Skriva (DataPacket, 0, 18) "Skicka datapacket matrisen
Kalla Sleep(300) "100 millisekunder minsta vänta för data att komma tillbaka och mer om dataströmmen är längre
. Läs (DataPacket, 0, 18) "Läs tillbaka i matrisen data packet
. Close() ' stänga den seriella porten
Avsluta med
För i = 4 till 17
PicaxeRegisters (i - 4) = DataPacket(i) ' flytta nya datapaketet i arrayen register
Nästa
PictureBox1.BackColor = Color.GreenYellow ' arbetar
Fånga som undantag
PictureBox1.BackColor = Color.Red ' inte arbetande
Slutet försök
End Sub
Sub FTPUpload (ByVal filnamn som sträng)
Dim localFile As String "plats att lagra data
Dim remoteFile As String "filnamn är så känsliga detta är verkligen viktigt
CONST host As String = "ftp://ftp.0catch.com" "notera 0 är en nolla inte ett tecken O
CONST användarnamn As String = "picaxe.0catch.com"
CONST lösenord As String = "picaxetester"
Dim URI som sträng
localFile = filnamn "kanske inte behövs men om definierar en plats t.ex c:\mydirectory lätt kan tillfoga hitåt
remoteFile = "/" + filnamn "fil på FTP-servern behöver" / "till framför
URI = värd + remoteFile
Försök
Dim ftp som System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = ny System.Net.NetworkCredential(username, password) "logga in
ftp.KeepAlive = False ' kommer att koppla bort en gång gjort
ftp.UseBinary = True ' använda binär komm
ftp.Timeout = 9000' timeout efter 9 sekunder - mycket användbar som ftp ibland dör
"timeout (och klockfrekvens på 20 sekunder) kan behöva vara långsammare för uppringda anslutningar
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile ' börja skicka filen
Dim fs som nya FileStream(localFile, FileMode.Open) "öppna lokal fil
Dim filecontents(fs. Längd) som Byte ' läsa i minnet
FS. Läsa (filecontents, 0, fs. Längd)
FS. Close() ' Stäng filen
Dim requestStream som ström = ftp.GetRequestStream() ' starta FTP-länk
requestStream.Write (filecontents, 0, filecontents. Längd) "skicka den
requestStream.Close() ' Stäng länken
PictureBox2.BackColor = Color.GreenYellow ' ändra rutan till green att säga fungerade ok
Label2.text = "FTP-ansluten" "texten säger att det anslutna
Fånga "kan inte ansluta
PictureBox2.BackColor = Color.Red ' om du vill red som ingen anslutning
Label2.text = "FTP ladda upp misslyckas" "text säger Anslutning misslyckades
Slutet försök
End Sub

Sub FTPDownload (ByVal filnamn som sträng)
' hämtar remotefile till localfile
Dim localFile As String "plats att lagra data
Dim remoteFile As String "filnamn är så känsliga detta är verkligen viktigt
CONST host As String = "ftp://ftp.0catch.com"
CONST användarnamn As String = "picaxe.0catch.com"
CONST lösenord As String = "picaxetester"
Dim URI som sträng
"localFile ="C:\"+ filnamn ' lagra i rotkatalogen men kan ändra detta
localFile = filnamn "så kan lägga till c:\ om måste definiera faktiska placering
remoteFile = "/" + filnamn ' lagt till remote FTP-plats
URI = värd + remoteFile "utgör fullständiga adress
Försök
Dim ftp som System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = ny System.Net.NetworkCredential(username, password) "logga in
ftp.KeepAlive = False ' kommer att kopplas från efter färdig
ftp.UseBinary = True "binärt läge
ftp.Timeout = 9000' timeout efter 9 sekunder
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile ' Hämta en fil
"Läs i bitar som inte vet hur stor filen är
Med hjälp av svar som System.Net.FtpWebResponse = bförebild (ftp.GetResponse, System.Net.FtpWebResponse)
Med hjälp av responseStream som IO. Ström = svar. GetResponseStream
Med fs som nya IO. FileStream (localFile, IO. FileMode.Create)
Dim buffer(2047) som Byte
Dim läsa As Integer = 0
Göra
Läs = responseStream.Read (buffert, 0, buffert. Längd) ' bit från ftp
FS. Skriva (buffert, 0, Läs) "och skriva till fil
Loop tills läste = 0' tills inga fler bitar
responseStream.Close() ' Stäng FTP-filen
FS. Flush() "spola klart
FS. Close() "och stäng filen
Sluta med
responseStream.Close() ' stänga den även om ingenting var där
Sluta med
svar. Close()
PictureBox2.BackColor = Color.GreenYellow ' green box som det fungerade
Label2.text = "FTP-ansluten" "och texten säger att det fungerat
Sluta med
Fånga "sätta felkoder här
PictureBox2.BackColor = Color.Red ' röd låda som det fungerade
Label2.text = "FTP-Hämta misslyckas" "och meddelande att säga detta
Slutet försök
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) hanterar Timer1.Tick
Om ModifyFlag = False Then "om användaren har ändrat en byte sedan inte hämta
Label3.text = "Hämtar"
System.Windows.Forms.Application.DoEvents() "så att nya etikettext visas
Ring FTPDownload(TextBox3.Text) ' Hämta fjärrfil
Label3.text = "Hämtade"
System.Windows.Forms.Application.DoEvents()
Kalla ReadRemoteFileToRegisters() "spara filnummer till arrayen register
Label3.text = "Talande till picaxe"
System.Windows.Forms.Application.DoEvents()
Annat
ModifyFlag = False ' återställa flaggan
Slut om
Kalla SerialTxRx() "Skicka till picaxe och läsa den tillbaka
Label3.text = "skickat och tagit emot från picaxe"
System.Windows.Forms.Application.DoEvents()
Kalla DisplayPicaxeRegisters()
Kalla SaveRegistersToLocalFile() "spara nummer till fil
Label3.text = "Ladda upp"
System.Windows.Forms.Application.DoEvents()
Kalla FTPUpload(TextBox3.Text) "skicka tillbaka upp till FTP-platsen benämn så mitt namn
Label3.text = "Vilar"
Kalla SaveFTPFilename() "så läser i när starta om
End Sub
Sub DisplayPicaxeRegisters()
Dim jag som heltal
Dim registernumber As String
RichTextBox1.Multiline = True "så kan visa mer än en rad i textrutan
RichTextBox1.Clear() ' Rensa textrutan
För i = 0 till 13
registernumber = Trim(Str(i)) ' trim av ledande utrymmen
Om jag < 10 sedan
registernumber = "0" + registernumber "lägga till 0 i siffror under 10
Slut om
RichTextBox1.AppendText (registernumber + "=" + Str(PicaxeRegisters(i)) + Chr(13))
Nästa "chr(13) är transport tillbaka så ny linje
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) hanterar Button1.Click
Dim jag som heltal
"först kontrollera utanför intervallet
Jag = Val(TextBox1.Text)
Om jag < 0 eller jag > 13 sedan
TextBox1.Text = 0
Slut om
Jag = Val(TextBox2.Text)
Om jag < 0 eller jag > 255 sedan
TextBox2.Text = 0
Slut om
PicaxeRegisters(Val(TextBox1.Text)) = Val(TextBox2.Text) ' ändra värdet
Kalla DisplayPicaxeRegisters() "och uppdatera datavisningen
ModifyFlag = True "och nästa FTP-länken hoppa nedladdning
End Sub
Sub-SaveRegistersToLocalFile() ' Spara registret matris i en lokal textfil
Dim jag som heltal
ArkivÖppna (1, TextBox3.Text, OpenMode.Output) ' öppna textfilen i textrutan som heter
För i = 0 till 13
PrintLine (1, Str(PicaxeRegisters(i))) ' Spara 14 värden
Nästa
FileClose(1) ' Stäng filen
End Sub
Sub-ReadRemoteFileToRegisters() ' läsa lokal textfil i arrayen register
Dim jag som heltal
Dim LineOfText som sträng
Försök
ArkivÖppna (1, TextBox3.Text, OpenMode.Input) ' läsa namnet remote
För i = 0 till 13
LineOfText = LineInput(1) ' läsa i 14 rader
PicaxeRegisters(i) = Val(LineOfText) ' konvertera text till värden
Nästa
FileClose(1)
Fånga som undantag
FileClose(1) "filen finns inte så gör ingenting
Slutet försök
End Sub
Sub-ReadFTPFilename() "så avlägsen ftp filen heter samma sak nästa gång programmet körs
Dim LineOfText som sträng
Försök
ArkivÖppna (1, "FTPFilename.txt", OpenMode.Input) "öppna filen
LineOfText = LineInput(1)
TextBox3.Text = LineOfText ' läsa namnet
FileClose(1)
Fånga som undantag
FileClose(1)
Slutet försök
End Sub
Sub SaveFTPFilename()
ArkivÖppna (1, "FTPFilename.txt", OpenMode.Output) ' Spara namnet remote ftp
PrintLine (1, TextBox3.Text)
FileClose(1)
End Sub
Slutet klass

Se Steg
Relaterade Ämnen

Hela världen flyttar företaget - att vara förberedd med exakt Information är avgörande

En hel del komplikationer är involverade i hela världen frakt. Dock kan du förenkla processen för det första genom forearming dig med rätt typ av information om det land där du måste leverera dina varor och andra, genom att välja en effektiv och påli...

Vad i hela världen är 3D-utskrifter?

3D-utskrifter. Att vissa människor kanske dessa två ord låter så främmande som Algebra för en tre år gammal, medan andra kanske har sett, använt eller även byggt en 3D-skrivare. Oavsett, 3D-utskrifter är fortfarande en fantastisk teknik. Denna handle...

Den bästa Chocolate Chip Cookie någonsin i hela världen

detta är en mycket lätt, mycket förlåtande cookie.Det är enkelt och smakar bra.Jag får komplimanger vänster och höger när jag gör detta.Detta är också den enda choklad kaka recept jag använder.Jag inte avvika eftersom detta är verkligen bäst!Steg 1:...

Hela världen Yule Log: Handgjorda Mobile App

instruktioner för att göra din Worldwide Julvedträet: Mobile App med hjälp av Drillteam Holiday kort.(Inte på vår lista? Slå oss en signal på wwyl så skickar vi dig en.)World Wide Julvedträet började utgjuta sin LED skenet av goodwill i November 2008...

Min kraft och vatten Generator - en gåva till hela världen.

Detta är en ganska rättfram design att omvandla solenergi till antingen el och vatten eller tryckluft- och sedan massor av vatten och el.Det är enkelt att göra och oändligt skalbart, och med volym - vilket innebär stora antal enheter, det är ett syst...

Titta på TV-kanaler från hela världen gratis på ditt hem TV och förvandla din TV till en billig hem-PC

Med hjälp av en $50 Android Mini PC (hittas via Amazon eller eBay), ex-pats eller alla som vill berika sina kunskaper i främmande språk titta på utländska TV-stationer på deras hem TV. Android Mini PC ansluter till en HDTV uppsättning, och med tilläg...

De bästa mexikanska Chip dopp i hela världen! :) (väl min värld)

OK! Så, är ditt chip doppar tråkigt och tråkigt? Väl måste du prova min familj recept chip dopp! Det kan inte locka så mycket uppmärksamhet av dess färg, men det är ljuvlig! :) Prova det, dess enkel och lätt att göra, och lämnar dina smaklökar nöjd!...

Baby Orb "Nästa revolutionära sak komma till barn över hela världen!"

Har du släktingar eller barn egen som bara sömmar för att få sin drink över deras ansikte och här är lösningen, baby orb. Med är det lätt att hantera design barn kommer att kunna dricka mer effektivt.Steg 1: Revolutionerande Baby Orb locket. Det kan...

Hur man kan låta hela världen kontroll din skrivbordslampa

Projektet var ett försök att använda den elektriska imp för att tillåta min skrivbordslampa kontrolleras av, Tja... Vem som helst. Du kan se de grundläggande funktionerna i videon och kan hämta koden för mikrokontroller här. Du kan också kolla in lam...

En planka från hela världen

I detta instructable jag kommer att visa dig hur jag konverterade en liten bit av regelbundna trä till en vacker stämpel konst som jag hänger på mitt kontor.Steg 1: Vad du behöver för detta projekt... 1 - du behöver en planka, jag använde en 7,5 X 5...

Camping tips och tricks

I över 30 år har min familj gjort årliga resor till Vermont att campa i det sena falla. Under åren har det växt från att bara fyra av oss (min mamma, pappa, syster och mig) över ett dussin människor, familj och nära vänner.Jag vet en massa människor...

Kub världen

Jag var du surfar på webben, slumpmässigt att klicka, när jag plötsligt kom över tanken på icke-sfäriska glober - jordglober av jorden som inte är faktiskt jordglober - dodecahedrons, octahedrons och kuber.Jag bestämde mig för jag måste göra en, så h...

Hur man utför världens Awesomest kort knep

Hej alla!Jag är killen som gjorde "världens största kort knep" tutorial förra sommaren. Jag har varit borta ett tag, men jag är tillbaka för gott nu med lite mer bra tutorials. Den här första är förmodligen min favorit trick i hela världen! Det...

Ett bättre papper plan - för hela mänskligheten!

jag ställa ut att hitta ett bättre papper plan! Jag gick över hela världen, och sen hittade jag äntligen en som förändrade allt! Följ den bilden steg och instruktioner, och använda design klokt!Steg 1: papper Få ut en normal ark kontorspapper...Steg...

Hur man Couchsurf och bo någonstans i världen gratis

CouchSurfing är inte min uppfattning. Men det är en stor passion till mig. Couchsurfing är enkelt, det bästa sättet att uppleva liv och många kulturer, människor, och livfulla bakgrunder av denna galna space rock (jord, för dem som inte funderar utan...

Förnya en gammal världen

Hej alla!Så, jag älskar att resa och jag älskar speciellt kartor och glober.Jag har sett en massa saker på nätet om saker du kan göra med glober och jag beslöt att försöka min egen vinkling. Planen var att göra en svarta tavlan jordglob som jag såg n...

Ommatid sfäriska Display: att bygga inhägnad och optiska världen

Detta är pièce de résistance av min artist residency vid piren 9: en interaktiv sfäriska LED-display med 76 beröring-känslig belyst aspekter. IR-detektorer på varje aspekt reagera på beröring och underlätta taktil interaktion.Detta Instructable Detal...

Mest irriterande ljudet i världen

Detta är party trick som slutar partiet. Väckarklockan för dina syskon som tjänar du en wedgie. Detta är den mest irriterande ljud i världen. Det är verkligen. Och det är irriterande att svårigheter förhållandet är underbar. Oh ja, och det är allt på...

Världen av ihållande vision

Hej alla,Denna handledning visar dig hur man bygger din egen jordglob av uthållighet av vision.Först, vad är en jordglob av ihållande vision? Tanken är att rotera en kolumn med lysdioder snabb nog för att ge intrycket av en hela jordklotet pixlar (va...