Arduino & Visual Basic 6 (Light Controller) (2 / 4 steg)
Steg 2: Visual Basic 6.0 (del 1)
Det andra steget skulle börja att koda VB programmet. I kod vissa funktioner som klass som detta gör att jag kan skapa dll. Första klass skulle läsa text arkivera och förvara dem i en matris inuti programmet. Jag hittade koden i "Programmering Visual Basic 6.0" manual. Denna funktion tillåter mig att ladda förprogrammerade kommandon i programmet att köra.Programkod
Offentliga funktion FileToArray(ByVal filename As String) As String
På fel GoTo fel
Dim items() As String, jag som heltal
"Läs filens innehåll och dela den i en strängmatris. (Utgång här om något fel inträffar).
items() = Strings.Split(ReadTextFileContents(filename), vbCrLf)
För i = LBound(items()) till UBound(items())
FileToArray = FileToArray & vbCrLf & items(i)
Nästa
MsgBox "Kommandon lästs in!"
Gå ur funktion
Fel:
MsgBox "fel i FileToArray:" & Err.Description
Slutet funktion
"Läs hela sammanhang i en fil
Offentliga funktion ReadTextFileContents(filename As String) As String
Dim fnum As Integer, isOpen som boolesk
På fel GoTo Error_Handler ' få nästa fri filnummer.
fnum = FreeFile()
Öppna filnamnet för Input som #fnum ' om exekveringsflödet fick här, filen har varit öppen utan fel.
isOpen = True "Läs hela innehållet i en enda operation.
ReadTextFileContents = Input(LOF(fnum), fnum) ' avsiktligt flöda in fel hanteraren ska stänga filen.
Error_Handler: "öka felet (om någon), men först stänga filen.
Om isOpen sedan sista #fnum
Om Err sedan Err.Raise Err.Number, Err.Description
Slutet funktion
_____________________________________________________________________________________________
Efter det hittade jag programmet att ladda inkorg meddelanden från Gmail (http://www.j4mie.org/2008/02/15/how-to-make-a-physical-gmail-notifier/ ). Jag praktisk den här funktionen om du vill aktivera lastning kommandon från din Gmail-inkorg att köra Light Controller.
Programkod
Option Explicit
Privata m_TheFile As String, m_TheSection som Variant
Privat Username As String, lösenord som sträng, iTemp() As String
Privata pForm som Form, pTimer som Timer, ptxtBox som lärobok, pInet som Inet
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
Privat deklarera funktionen WritePrivateProfileString så Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName som någon, ByVal lpString som någon, ByVal lpFileName As String) så länge
Public Sub initGmailAccount (TheFile As String, TheSection som Variant, fForm som Variant, fTimer som Variant, ftxtBox som Variant, fInet som Variant)
På fel GoTo ERRR
m_TheFile = TheFile
m_TheSection = TheSection
Ställa in pForm = fForm: Ange pTimer = fTimer: Ange ptxtBox = ftxtBox: Ange pInet = fInet
Log "INI:" & m_TheFile & vbCrLf & "avsnitt:" & m_TheSection
pTimer.Enabled = False ' stoppa timern!
pTimer.Interval = SimpleGet("interval") * 1000 "ställa in timern!
pTimer.Enabled = True ' starta timern!
Log "intervall:" & pTimer.Interval / 1000 & "sekunder"
Användarnamn = SimpleGet("username")
Log "användarnamn:" & användarnamn
Lösenord = SimpleGet("password")
Log "lösenord: ***"
Log "Inställningar lastas..."
Exit Sub
ERRR:
Log "fel i LoadSettings:" & Err.Description
Återuppta nästa
End Sub
Public Function CheckMail (ByVal ToTextFile som sträng) som Boolean
På fel GoTo ERRR ' felhantering. ett måste.
Dim STRTemp As String "i"strtemp"sätter vi hela webbsidan
Dim mailCount As String, mailTitle As String, mailSummary As String
STRTemp = pInet.OpenURL ("https://" & användarnamn & ":" & lösenord & "
STRTemp = UCase(STRTemp)
mailCount = höger (STRTemp, Len(STRTemp) - InStr (1, STRTemp, "FULLCOUNT") - 9)
mailCount = vänster (mailCount, InStr (1, mailCount, "<") - 1)
mailTitle = höger (STRTemp, Len(STRTemp) - InStr (1, STRTemp, "titel > L") - 5)
mailTitle = vänster (mailTitle, InStr (1, mailTitle, "<") - 1)
Om StrComp (mailTitle = "LIGHTCONTROL", vbTextCompare) = 0 & mailCount = "1" då
mailSummary = höger (STRTemp, Len(STRTemp) - InStr (1, STRTemp, "Sammanfattning") - 7)
mailSummary = vänster (mailSummary, InStr (1, mailSummary, "<") - 1)
"last meddelande till offentlig variabel
iTemp() = Strings.Split (mailSummary, ";")
"spara Mail-data till en textfil
Öppna ToTextFile för utdata som #1
Dim jag som heltal
För i = LBound(iTemp()) till UBound(iTemp())
Skriva ut #1, iTemp(i)
Nästa
Nära #1
CheckMail = sant
Annat
Log "Mail inte tillgänglig!"
CheckMail = False
Slut om
Gå ur funktion
ERRR:
Log "fel i CheckMail:" & Err.Description
Återuppta nästa
Slutet funktion
Offentliga Sub Log (Text som sträng)
På fel GoTo ERRR
ptxtBox.Text = Text & vbCrLf & ptxtBox.Text
Exit Sub
ERRR:
MsgBox "ett fel uppstod när loggning:" & Err.Description
Återuppta nästa
End Sub
Public Function SimpleGet (Var_namn som sträng) som sträng
Statiska sLocalBuffer As String * 500
Dim l som heltal
l = GetPrivateProfileString (m_TheSection, Var_namn, vbNullString, sLocalBuffer, 500, m_TheFile)
SimpleGet = vänster$ (sLocalBuffer, l)
Slutet funktion
Public Sub SimplePut (TheItem som Variant, TheVal som Variant)
Ring WritePrivateProfileString så (m_TheSection, CStr(TheItem), CStr(TheVal), m_TheFile)
"Spola buffert
Ring WritePrivateProfileString så (0, 0, 0 &, m_TheFile)
End Sub