Arduino & Visual Basic 6 (Light Controller) (3 / 4 steg)

Steg 3: Visual Basic 6.0 (del 2)

Efter de grundläggande klasserna, jag kodade parser funktion för att begränsa användarens inmatningar och den vill kommunicera med den funktion som skickar data till Arduino. Jag använde parser så att jag kunde ladda kommandon från andra källor och jag kan ändra sekvensen program när som helst bara genom att ändra text-filen. Denna teknik är mycket bra på lång sikt. Blinkar sekvenser behöver inte kodas i VB att ändra displayen mönster. Min parser koden visas nedan:

Programkod

Privat deklarera Sub sova Lib "kernel32" (ByVal dwMilliseconds As Long) "att använda sleep(xxxx)
Privata lSide As String, rSide As String
Privat fil As String, avsnitt som sträng, Comm som MsComm, txtFeedback som lärobok, txtStatus som lärobok

Public Sub Init_Parser(FileName As String, FileSection As String, CommPort As Variant, txtBoxFeedback As Variant, statusBox As Variant)
Fil = filnamn
Avsnitt = FileSection
Ställa in Comm = CommPort
Ange txtFeedback = txtBoxFeedback
Ange txtStatus = statusBox
End Sub

Public Sub StringSort(ByVal item As String)

Om Len(item) > = 20 då "random begränsning att kontrollera om kommandot är fel
Log "fil koden misstag: för lång"
Exit Sub
Slut om "begränsa strängar längden till check för felfilen

item = Trim(item)
Om InStr (post, "") = 0 då "om det finns något utrymme i kod
lSide = objekt: rSide = vbNullString
Annat
lSide = vänster (posten, InStr (post, "") - 1)
rSide = höger (objekt, Len(item) - InStr (post, ""))
Slut om
Commander
End Sub

Public Sub Commander()
Dim fCommand As String
På fel GoTo fel

fCommand = vänster (lSide, 2)
Välj ärende fCommand ' bibliotek
Fallet "CO"
txtStatus.Text = "Ansluter ljus..." & vbCrLf & txtStatus.Text
Light.InitLightController fil, avsnitt, Comm, txtFeedback
Fallet "CT"
txtStatus.Text = "Koppla från ljus..." & vbCrLf & txtStatus.Text
Light.ExitLight
Fallet "LH"
txtStatus.Text = "Inställningen aktiv lampor..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Fallet "LI"
txtStatus.Text = "Inställningen ljus intensitet..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Fallet "LO"
txtStatus.Text = "Konfigurera lampor..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Fallet "RE"
txtStatus.Text = "Lampor återställa..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Fallet "DE"
txtStatus.Text = "Försening i processen..." & vbCrLf & txtStatus.Text
Light.SendData lSide

Fallet annat
Gå till fel

End Select

txtStatus.Text = lSide & "" & rSide & ": avrättades..." & vbCrLf & txtStatus.Text

Exit Sub

Fel:
Log "fil koden misstag: Syntax" & lSide & "" & rSide & "Giltigt"
Nyckel = 1

End Sub

'***************************************************************************************
"popup-meddelande om du vill visa fel
'***************************************************************************************
Offentliga Sub Log (Text som sträng)
På fel GoTo fel
MsgBox Text & Err.Description
Exit Sub
Fel:
MsgBox "ett fel uppstod när loggning:" & Err.Description + vbCritical
Återuppta nästa
End Sub

_______________________________________________________________________________________________________
Variant-datatyp används i stället för MSComm eller lärobok eftersom dessa egenskaper inte kunde överföras i en DLL-fil. Rätt sätt att göra det är att deklarera som typen Variant och sedan ange variabelnamnet som ett privat objekt efter. En annan funktion jag används för att tillåta direkt kommunikation av VB6 och Arduino är klassen "ljus funktion". När data skickas till Arduino, väntar programmet på ett eko från Arduino. Denna teknik används som en anpassning av enkla handskakning protokoll i seriell kommunikation mellan den bärbara datorn och Arduino. Om ett eko inte är kände, kommer räknaren timeout eld och popmusik ute en meddelanderuta att uppmärksamma användaren om problemet.

Programkod
Privata kommando som sträng, TextLength så länge, TimeOut så länge
Privata filnamn som sträng, File_Section som sträng
Privat civilingenjörsexamen som MsComm, tBox som lärobok

Privat deklarera Sub sova Lib "kernel32" (ByVal dwMilliseconds As Long)
Privata Declare funktionen GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName som någon, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nStorlek som lång, ByVal lpFileName As String) som lång

Public Sub InitLightController(PortSettingFileName As String, FileSection As String, MsComm As Variant, txtFeedback As Variant)
Filnamn = PortSettingFileName
File_Section = FileSection
Ställa in civilingenjörsexamen = MsComm
Ställa in tBox = txtFeedback
TimeOut = 200000

"Output laddade COMPORT inställningar
Log "File:" & filnamn & vbCrLf & "avsnitt:" & File_Section

"Öppna ComPort och Anslut med Arduino
Med Civilingenjörsexamen
Om. PortOpen då. PortOpen = False ' Stäng och ställa in com-portens nummer
. CommPort = SimpleGet("comport")
. Inställningar = SimpleGet("settings")
. EOFEnable = sant
Log "Com-Port:" &. CommPort & vbCrLf & "inställningar:" &. Inställningar
Avsluta med

SendData ("CO")
End Sub

Public Sub SendData (ByVal Commandx som sträng)
På fel GoTo fel
Kommandot = Commandx
"kontrollera kommandot först
Kommandot = Trim(Command) ' ta bort extra blanksteg vid sidan
Om (InStr (kommandot, "") <> 0) eller (Len(Command) > 10) sedan "kommandot får inte vara längre än 10 char eller innehålla mellanslag
Gå till fel "skickar inte om kommandot format är fel
Slut om

Dim jag som heltal, röding som sträng

För i = 1 till 2 ' eftersom längden på ecpected karaktär är endast 2
Char = Mid (kommandot, i, 1)

Om (Char > = "A" och Char < = "Z") sedan "gör ingenting om 2 första tecken är alfabet
Annat
Gå till fel
Slut om
Nästa jag
"automatiskt hoppa för kommandon utan heltal CO, CT, RE
För i = 3 till Len(Command) ' se till att resten av kommandot är heltal
Char = Mid (kommandot, i, 1)

Om (Char > = "0" och Char < = "9") sedan "göra ingenting om återstående tecknen är siffror
Annat
Gå till fel
Slut om
Nästa jag

TextLength = Len(Command) ' ange förväntade textlength eko

Med Civilingenjörsexamen
. DTREnable = False
. RTSEnable = False "inaktivera begäran om att skicka signal
Om. PortOpen = falskt då. PortOpen = True "öppna porten
. Output = Commandx ' Skicka Text
. RThreshold = TextLength ' Spara skickade stränglängd
Slut med "lämna port öppen vänta på echo signalen att gå vidare
OnComm ' vänta för echo svar från Arduino

Exit Sub
Fel:
Om (Err.Description) sedan
MsgBox Err.Description
Annat
MsgBox "Ogiltigt kommando!"
Slut om
End Sub

Private Sub Log(Text As String)
På fel GoTo ERRR
tBox.Text = Text & vbCrLf & tBox.Text
Exit Sub
ERRR:
MsgBox "ett fel uppstod när loggning:" & Err.Description
Återuppta nästa
End Sub

"Manuell OnComm funktion att upptäcka eko av skickas data
Private Sub OnComm()
Dim InString som sträng, räknas som länge

Göra
DoEvents
Sömn (1)
Om räkningen > TimeOut då
MsgBox "Tid till nått!" & vbCrLf & "Inget svar från Arduino!"
Exit Sub
Slut om
Loop tills MComm.CommEvent = comEvReceive och MComm.InBufferCount > = TextLength

Sömn (5)

' Hämta alla tillgängliga data.
MComm.InputLen = 0

' Kontrollera om data.
Om MComm.InBufferCount > 0 då ' läsa data.
InString = MComm.Input
' Kontrollera om data som tas emot är som förväntat
Om InStr (InString, kommando) > 0 då "om kommandot ett eko

Annat
Gå till fel
Slut om

Om Len(InString) > 0 då "Output echo på textruta
tBox.Text = InString & tBox.Text
Slut om
Slut om

Om MComm.PortOpen sedan MComm.PortOpen = False ' stänger port efter att ha fått svar

Exit Sub
Fel:
Om (Err.Description) sedan
MsgBox Err.Description
Annat
MsgBox "Tar emot funktionen fel!"
Slut om
End Sub

Public Sub ExitLight()
SendData ("RE")
SendData ("CT")
Om MComm.PortOpen sedan MComm.PortOpen = False "om porten är öppen, stänga om innan utgång
End Sub

Public Function SimpleGet (Var_namn som sträng) som sträng
Statiska sLocalBuffer As String * 500
Dim l som heltal

l = GetPrivateProfileString (File_Section, Var_namn, vbNullString, sLocalBuffer, 500, filnamn)
SimpleGet = vänster$ (sLocalBuffer, l)

Slutet funktion

Se Steg
Relaterade Ämnen

Arduino & Visual Basic 6.0 (kontinuerlig Servo Motor)

detta Instructable är nästan lik till Light Controller postat tidigare. Den innehåller samma struktur och mönster i styr Servo Motor. Jag använde några idéer form Galil motorisk kontroll strukturer för att skapa min parser. Nämligen, SH (Servo här) o...

Styra Arduino med visual basic 6.0

Detta instructable är en del av min bok Arduino + visual basic 6.0 (gör din egen mjukvara till kontroll arduino Robot.Visual basic 6.0 är en mycket gammal version som vissa människor kan fråga varför vi vill använda visual basic 6.0. Visual basic 6.0...

Arduino och Visual Basic RF över temperatur luftfuktighet mätning

Vi kan se Arduino med 433 MHz RF med omedelbar visning av temperatur och luftfuktighet värden som vi gör med visual basic-programmet.http://make.robimek.com/Arduino-Visual-Basic-Wireless-temperature-humidity-Control/Låt oss börja med temperatur och l...

Kontroll av en DC motor med Arduino och Visual Basic

Hej vänner detta är mitt första inlägg i instructables.com där jag kommer att försöka ge mer nyhet des ofta.Idag är temat med Arduino och Visual Basic.Det projekt som vi ser idag är controller en dc-motor med Arduino och Visual Basic.För att styra en...

Kinect kontroller Arduino wired servon med Visual Basic 2010

uppdatering JAN 2012: denna guide är med på Microsofts MSDN Channel9http://channel9.msdn.com/Coding4Fun/Blog/Kinecting-to-Arduino-with-Visual-BasicINTRODUKTIONI detta projekt använda jag vänster och höger hand rörelser i Kinect för att kontrollera ro...

Hur att programmera Arduino Bluetooth seriell kommunikation i Visual Basic Express 2010

Thär är olika Android Program/programvara för att styra din robot arduino bluetooth med din android. Men du kan inte hitta en att använda med din windows-dator. Så programmet jag en liten en i Visual Basic Express 2010. Hoppas det kan vara bra som en...

Med Visual Basic 2010 till kontroll Arduino Uno

jag vet att detta har skett tidigare några gånger så här är en mer. Detta är ett skelett Visual Basic 2010 och Arduino skiss som jag blandade ihop prov PC till Arduino Uno anslutning via följetong. Det visar helt enkelt LED 13 på eller av.Visual Basi...

3 kanal arduino Powered Christmas Light Controller!

För julen i år, jag ville göra ett riktigt häftigt projekt men inte riktigt vet vad man ska göra. Som jag fick julen ljus ut att dekorera, var det en gammal trasig Christmas light timer. Jag tog isär och tittade på lågspänning kretsen. Innan detta ha...

Arduino Remote RGB ledde av Visual Basic

KravEn Arduino (jag använder Arduino Uno)Visual Basic Express 2010 du kan hämta VB från härRGB LedSteg 1: Skapa programI detta instructable, vi kommer att göra ett program för att kontrollera RGB ledde.Följ följande steg:Klicka på nytt projektVälj ny...

Arduino - Control Servo med Visual Basic

Hi guys,Idag ska jag visa hur du kan kontrollera ett servo med Visual basic. Före detta projekt har jag aldrig använt Visual basic så om någon finner något misstag i min kod vänligen lämna en kommentar här och hjälpa mig att förbättra den.Du kan besö...

Hur man automatiskt identifiera och ansluta till Arduino i Visual Studio med Visual Basic

Hur att automatiskt upptäcka vilken port arduino eller geekduino är ansluten till använder visual basic och ansluta automatiskt till det! (senare kommer jag att lägga hur Auto upptäcka när det är unplugged!).Obs: knappen är inte nödvändigt men det i...

Att göra Arduino serieport med visual basic

Vi kommer att göra programmets gränssnitt ansluta till serieporten med Visual Studio.Låt oss titta på detaljerna i programmet.Verktyg att vi kommer att använda vårt formulär:3 stycken knappen 2 nummer ComboBox3 piece etikettseriell portSteg 1: Formul...

KONTROLLERANDE DC med VISUAL BASIC

i detta instructables där jag kommer att försöka ge mer nyhet des ofta.Idag är temat med Arduino och Visual Basic. Det projekt som vi ser idag är controller en dc-motor med Arduino och Visual Basic. För att styra en dc motor är inte tillräckligt spän...

Hur man kontrollerar GizDuino med Visual Basic

Detta vägleder dig till uppsättningen upp, elkablar den yttre kretsen och kodning GizDuino och VBA i att kontrollera 4 lysdioder.Instructables delas in i 3:1. skiss för GizDuino2. VBA-kod och design3. ledningar för den yttre kretsen.* GizDuino är en...

Arduinoen Robot Control konsol Program med visual basic

Vi kommer att göra vår robot console för att hantera detta projekt med Visual Basic.Vi kommer att hantera vår robot via Bluetooth.Verktyg som krävs för att vårt formulär:13 sifferknapp2 nummer combobox1 bit texbox1 bit GroupBox1 bit SerialPorthttp://...

Automatisk tvättrum Light Controller krets

detta är en annan mycket användbar krets i vår verkliga livet heter Automatisk tvättrum Light Controller krets. Det hjälper oss i automatiskt slå på/av tvättrum lampor enligt situationen dvs om en person går in tvättrummet, lamporna kommer att slå oc...

Ett roligt spel/Trick i Microsoft Visual Basic

Hej alla! I detta Instructable, jag kommer att visa dig hur att förvåna dina vänner med ett spel baserat på webbplatsen Peter svar, ett trick där användaren berättar en vän att ställa en fråga till den stora "Peter", först framställningar Peter...

Skapa ett Program i Visual Basic: webbläsare

detta Instructable förklarar processen att skapa en enkel webbapplikation webbläsare i VB.NETDen är utformad som en uppföljning till mitt första VB.NET Instructable: skapa din första Program i Visual Basic. Det rekommenderas att du läst igenom det in...

Anpassade XP - Visual Basic Scripting anpassa!

Är ett enkelt sätt att ändra utseende av XP är att använda några $1000 dollar GUI * program, rätt? FEL! Du kan spendera pengar på program, men varför betala om du kan göra det gratis? I denna guide kommer att jag visa dig hur man gör det så lätt att...