Arduino & Visual Basic 6 (licht Controller) (3 / 4 stap)

Stap 3: Visual Basic 6.0 (deel 2)

Na de fundamentele klassen, ik gecodeerd de parser-functie om te beperken van de invoer van de gebruiker en het zou communiceren met de functie die gegevens naar de Arduino stuurt. Ik gebruikte parser, zodat ik opdrachten uit andere bronnen laden kan en ik de volgorde van het programma op elk gewenst moment veranderen kan gewoon door het veranderen van het tekstbestand. Deze techniek is zeer nuttig op de lange termijn. Knipperen van sequenties moet niet worden gehercodeerd in VB naar het patroon van de weergave wijzigen. Mijn parser code wordt hieronder weergegeven:

Programma-Code

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ' te gebruiken sleep(xxxx)
Privé lSide As String, rSide As String
Privé bestand als tekenreeks, sectie As String, Comm als MsComm, txtFeedback als TextBox, txtStatus als TextBox

Public Sub Init_Parser(FileName As String, FileSection As String, CommPort As Variant, txtBoxFeedback As Variant, statusBox As Variant)
File = Bestandsnaam
Sectie = FileSection
Instellen van Comm = CommPort
Set txtFeedback = txtBoxFeedback
Set txtStatus = statusBox
End Sub

Public Sub StringSort(ByVal item As String)

Als Len(item) > = 20 Then ' willekeurige beperking om te controleren als er sprake is van een verkeerde opdracht
Log "bestand codefout: te lang"
Exit Sub
End If ' beperken de lengte van de snaren te controleren voor foutbestand

item = Trim(item)
Als InStr (item, "") = 0 Then ' als er geen ruimte in code is
lSide = item: rSide = vbNullString
Anders
lSide = Left (punt, InStr (item, "") - 1)
rSide = rechts (object, Len(item) - InStr (item, ""))
End If
Commandant
End Sub

Public Sub Commander()
Dim fCommand As String
Op GoTo fout

fCommand = Left (lSide, 2)
Selecteer zaak fCommand ' bibliotheek
Geval "CO"
txtStatus.Text = "Het verbinden … van de licht" & vbCrLf & txtStatus.Text
Light.InitLightController bestand, sectie, Comm, txtFeedback
Koffer "CT"
txtStatus.Text = "Verbinding verbreken licht..." & vbCrLf & txtStatus.Text
Light.ExitLight
Geval "LH"
txtStatus.Text = "Instelling actieve lichten..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Geval "LI"
txtStatus.Text = "Instelling licht intensiteit..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Kast "LO"
txtStatus.Text = "Configureren lichten..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Geval "RE"
txtStatus.Text = "Lichten Reset..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Geval 'Nl'
txtStatus.Text = "Vertraging In proces..." & vbCrLf & txtStatus.Text
Light.SendData lSide

Geval anders
GoTo fout

Einde selecteren

txtStatus.Text = lSide & "" & rSide & ": uitgevoerd..." & vbCrLf & txtStatus.Text

Exit Sub

Fout:
Log "bestand codefout: syntaxis" & lSide & "" & rSide & "Niet geldig"
Toets = 1

End Sub

'***************************************************************************************
' pop omhooggaand berichtvenster weer te geven fout
'***************************************************************************************
Public Sub Log (tekst als tekenreeks)
Op GoTo fout
MsgBox tekst & Err.Description
Exit Sub
Fout:
MsgBox "fout voordat ze zich aanmelden:" & Err.Description + vbCritical
Resume Next
End Sub

_______________________________________________________________________________________________________
Het gegevenstype Variant wordt gebruikt in plaats van MSComm of textbox, omdat deze eigenschappen kon niet worden doorgegeven in een dll-bestand. De juiste manier om het te doen is te declareren als het type Variant en stel vervolgens de naam van de variabele als een privé-object na. Een andere functie die ik gebruikt om rechtstreekse communicatie van VB6 en Arduino is de klasse "licht functie". Wanneer alle gegevens wordt verzonden naar de Arduino, zal het programma wachten op een echo van Arduino. Deze techniek wordt gebruikt als een aanpassing van eenvoudige handshaking-protocol in seriële communicatie tussen de laptop en de Arduino. Als een echo niet voelde is, zal de timeout-teller brand en pop uit een berichtvenster om de gebruiker over het probleem te waarschuwen.

Programma-Code
Privé opdracht als tekenreeks, TextLength zolang, time-out zo lang
Privé bestandsnaam As String, File_Section As String
Privé MComm als MsComm, tBox als TextBox

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Sub InitLightController(PortSettingFileName As String, FileSection As String, MsComm As Variant, txtFeedback As Variant)
File_Name = PortSettingFileName
File_Section = FileSection
MComm instellen = MsComm
Instellen van de tBox = txtFeedback
TimeOut = 200000

' Output geladen COMPOORT instellingen
Log "bestand:" & File_Name & vbCrLf & "sectie:" & File_Section

' Open COMpoort en sluit met Arduino
Met MComm
Als. PortOpen dan. PortOpen = False ' sluit en het nummer van de com-poort instellen
. CommPort = SimpleGet("comport")
. Instellingen = SimpleGet("settings")
. EOFEnable = True
Log "Com-poort:" &. CommPort & vbCrLf & "instellingen:" &. Instellingen
Eindigen met

SendData ("CO")
End Sub

Public Sub SendData (ByVal Commandx As String)
Op GoTo fout
Opdracht = Commandx
' eerst controleren, opdracht
Opdracht = Trim(Command) ' ontdoen van extra spaties aan de zijkant
Als (InStr (opdracht, "") <> 0) of (Len(Command) > 10) toen ' opdracht mag niet langer zijn dan 10 char of spaties bevatten
GoTo fout ' Stuur geen als opdracht indeling verkeerd is
End If

Dim i As Integer, Char zoals String

Voor i = 1 tot 2 ' omdat de lengte van ecpected teken is alleen 2
Char = Mid (Command, i, 1)

Als (Char > = "A" en Char < = "Z") dan ' niets doen als eerste 2 tekens alfabetten
Anders
GoTo fout
End If
Volgende ik
' automatisch overslaan voor opdrachten zonder gehele getallen CO, CT, RE
Voor i = 3 te Len(Command) ' zorg ervoor dat de rest van de opdracht zijn gehele getallen
Char = Mid (Command, i, 1)

Als (Char > = "0" en Char < = "9") dan ' niets doen als overige tekens cijfers zijn
Anders
GoTo fout
End If
Volgende ik

TextLength = Len(Command) ' Stel verwachte textlength echo

Met MComm
. DTREnable = False
. RTSEnable = False ' verzoek signaal uitschakelen
Als. PortOpen = False Then. PortOpen = True ' poort openen
. Uitvoer Commandx = ' Verstuur tekst
. RThreshold = TextLength ' Save verzonden tekenreekslengte
End With ' openlaten van de poort te wachten op de echo signaal om verder te gaan
OnComm ' wachten op antwoord van de echo van de Arduino

Exit Sub
Fout:
Als (Err.Description) dan
MsgBox Err.Description
Anders
MsgBox 'Invalid Command!'
End If
End Sub

Private Sub Log(Text As String)
Op fout GoTo ERRR
tBox.Text = tekst & vbCrLf & tBox.Text
Exit Sub
ERRR:
MsgBox "fout voordat ze zich aanmelden:" & Err.Description
Resume Next
End Sub

' Handmatige OnComm-functie voor het detecteren van echo van verzonden gegevens
Private Sub OnComm()
Dim InString As String, telling als lang

Doen
DoEvents
Slaap (1)
Als Count > TimeOut dan
MsgBox "Time Out Reached!!!" & vbCrLf & "No Reply van Arduino!"
Exit Sub
End If
Loop totdat MComm.CommEvent comEvReceive en MComm.InBufferCount = > = TextLength

Slaap (5)

' Alle beschikbare gegevens op te halen.
MComm.InputLen = 0

' Controleren of gegevens.
Als MComm.InBufferCount > 0 Then ' gegevens lezen.
InString = MComm.Input
' controleren of het ontvangen van gegevens is zoals verwacht.
Als InStr (InString, opdracht) > 0 Then ' als opdracht een echo is

Anders
GoTo fout
End If

Als Len(InString) > 0 Then ' Output echo op textbox
tBox.Text = InString & tBox.Text
End If
End If

Als MComm.PortOpen dan MComm.PortOpen = False ' poort sluiten na ontvangst van antwoord

Exit Sub
Fout:
Als (Err.Description) dan
MsgBox Err.Description
Anders
MsgBox "Fout van de functie ontvangen!"
End If
End Sub

Public Sub ExitLight()
SendData ("Ref")
SendData ("CT")
Als MComm.PortOpen dan MComm.PortOpen = False ' als poort geopend is, sluit als voor afslag
End Sub

Public Function SimpleGet (VarName As String) As String
Statische sLocalBuffer As String * 500
Dim l As Integer

l = GetPrivateProfileString (File_Section, VarName, vbNullString, sLocalBuffer, 500, bestandsnaam)
SimpleGet = links$ (sLocalBuffer, l)

End Function

Gerelateerde Artikelen

Arduino & Visual Basic 6.0 (Continuous Servo Motor)

Arduino & Visual Basic 6.0 (Continuous Servo Motor)

dit Instructable is bijna vergelijkbaar met de eerder geboekte Light-Controller. Het bevat dezelfde structuur en patroon bij het beheersen van de Servo Motor. Ik sommige ideeën vorm Galil motorische controle structuren gebruikt om mijn parser. Nameli
Controle van de Arduino met visual basic 6.0

Controle van de Arduino met visual basic 6.0

Dit instructable is onderdeel van mijn boek Arduino + visual basic 6.0 (aanbrengen in uw eigen software controle arduino Robot.Visual basic 6.0 is een zeer oude versie sommigen kunnen vragen waarom we gebruik wilt maken van visual basic 6.0. Visual b
Arduino en Visual Basic RF Over temperatuur vochtigheid meting

Arduino en Visual Basic RF Over temperatuur vochtigheid meting

Arduino met behulp van 433 MHz RF met momentane vertoning van temperatuur en vochtigheid waarden zoals we met de visual basic-programma doen, kunnen we zien.http://make.robimek.com/Arduino-Visual-Basic-Wireless-temperature-humidity-Control/Laten we b
Controle van een DC-motor met Arduino en Visual Basic

Controle van een DC-motor met Arduino en Visual Basic

Hallo vrienden dit is mijn eerste post in instructables.com waar ik zal proberen om meer nieuwheid des vaak.Thema is vandaag met Arduino en Visual Basic.Het project dat we nu zien is een dc-motor controller met Arduino en Visual Basic.Om te controler
Kinect besturingselementen Arduino wired Servos using Visual Basic 2010

Kinect besturingselementen Arduino wired Servos using Visual Basic 2010

UPDATE JAN 2012: deze gids wordt gepresenteerd op Microsofts MSDN Channel9http://channel9.MSDN.com/Coding4Fun/blog/Kinecting-to-Arduino-with-Visual-BasicINTRODUCTIEIn dit project gebruik ik links of rechts bewegingen in Kinect om de draaihoek van twe
Voor het programmeren van de Arduino Bluetooth seriële communicatie in Visual Basic 2010 Express

Voor het programmeren van de Arduino Bluetooth seriële communicatie in Visual Basic 2010 Express

Thier zijn verschillende Android/softwareprogramma waarmee je robot bluetooth arduino met uw android. Maar u kunt niet vinden voor gebruik met uw windows-PC. Dus programma ik een beetje een In Visual Basic Express 2010. Hoop dat het wel handig als ee
Met behulp van Visual Basic 2010 naar besturingselement Arduino Uno

Met behulp van Visual Basic 2010 naar besturingselement Arduino Uno

ik weet dat dit is gebeurd in het verleden een paar keer dus hier een meer is. Dit is een skelet Visual Basic 2010 en Arduino Sketch die ik gemengd samen op proef de PC aan Arduino Uno verbinding via seriële. Het blijkt gewoon LED 13 in- of uitschake
Arduino Robot Control console programma met de visual basic

Arduino Robot Control console programma met de visual basic

Zullen wij onze robot-console voor het beheer van dit project met Visual Basic.Zullen wij erin slagen onze robot via Bluetooth.Gereedschap aan ons formulier:13 de cijfertoets2 nummer combobox1 stuk texbox1 stuk GroupBox1 stuk SerialPorthttp://make.ro
Arduino - Control Servo met Visual Basic

Arduino - Control Servo met Visual Basic

Hi guys,Vandaag zal ik laten zien hoe u kunt controleren een servo met Visual basic. Voordat dit project heb ik nooit gebruikt Visual basic dus als iemand vindt dat een fout in mijn code gelieve hier een reactie achterlaten en help me het verbeteren
Arduino Remote RGB geleid door Visual Basic

Arduino Remote RGB geleid door Visual Basic

VereistenEen Arduino (im ' using Arduino Uno)Visual Basic Express 2010 u kunt VB downloaden vanaf hierRGB LedStap 1: Toepassing makenIn dit instructable, we zullen maken een programma controle RGB Led.Voer de volgende stappen uit:Klik op Nieuw Projec
Hoe te auto-detecteer en verbinden met Arduino in Visual Studio met behulp van Visual Basic

Hoe te auto-detecteer en verbinden met Arduino in Visual Studio met behulp van Visual Basic

Hoe automatisch detecteren met welke poort de arduino of geekduino is verbonden aan het gebruik van visual basic en automatisch verbinding maken met het!! (later zal overigens hoe automatisch detecteren wanneer het is unplugged!).Opmerking: knop is n
Maken van Arduino seriële poort met visual basic

Maken van Arduino seriële poort met visual basic

Zullen we de programma-interface aansluiten op de seriële poort met Visual Studio.Laten we eens kijken naar de details van het programma.Hulpmiddelen dat zullen we ons formulier gebruiken:3 stuks knop2 nummer ComboBox3 stuk labelseriële poortStap 1:
CONTROLERENDE DC met VISUAL BASIC

CONTROLERENDE DC met VISUAL BASIC

in deze instructables waar ik proberen zal om meer nieuwheid des vaak.Thema is vandaag met Arduino en Visual Basic. Het project dat we nu zien is een dc-motor controller met Arduino en Visual Basic. Om te controleren van een dc motor is niet genoeg s
Hoe u kunt besturen met Visual Basic GizDuino

Hoe u kunt besturen met Visual Basic GizDuino

Dit zal u begeleiden door de set-up, bedrading van de externe bedrading en codering van GizDuino en de VBA-bij het beheersen van 4 LEDs.De Instructables is onderverdeeld in 3:1. schets voor GizDuino2. de VBA-code- en ontwerpweergaven3. de bedrading v