Hallo,
hier erkäre ich ein wenig wie man einen Zimmer-Alarmanlage baut. Als erstes die bennötigten Materialien:
- Lichtschranke mit Lichtwiderstand kostet 15 € bei Conrad (oder Türschalter) (Best-Nr.: 196037 - 62)
- LaserPointer der auf den Widerstand strahlt.
- Piepser kostet 5 - 10 € bei Conrad Online-Shop
- LPT-Schnittstelle an PC oder Notebook
- Genug Kabel kostet ca. 2 € bei Mobau Klein
Hier erst einmal der Code den ihr braucht! :
Vorher müsst ihr in die Form folgende Controls einfügen :
- 3 Buttons (Bereinigen; Alarm; Datum)
- Textbox (MultiLine aktivieren)
- Eine Form
- 2 Timer (Check, Timer1)
So als erstes die Subs für die LPT-Schnittstelle
Das einfach in den Code der Form1 einfügen (Nicht im LoadEvent, auserhalb eines Events)
Jetzt die Zeit und das Datum lesen:
Jetzt den Timer1 zum aktualisieren des Datums und der Uhrzeit verwenden (Interval auf 1000 setzen)
Jetzt die Codes für alle Buttons :
Jetzt zum Herz : Wir müssen mit dem Timer Check alle paar Sekunden überprüfen ob der Eingang geschaltet wurde. Als erstes müsst ihr zwei Kabel an die Pins 6 und 12 anschließen. An diese Kabel wird später die Lichtschranke angeschlossen. Jetzt folgt ersteinmal der Code zum überprüfen:
Hier trägt er Texte in die Textbox ein wann die Tür geöffnet oder geschlossen wurde. Wenn ihr die Lichtschranke zusammengebaut habt müsst ihr sie nurnoch in die Nähe der Tür ausrichten und einen Laserpointer auf den Lichtwiderstand richten. Jetzt die Lichtschranke anschließen an die Zwei kabel die wir an die Pins 6 und 12 angeschlossen hatten.
Viel Spaß
hier erkäre ich ein wenig wie man einen Zimmer-Alarmanlage baut. Als erstes die bennötigten Materialien:
- Lichtschranke mit Lichtwiderstand kostet 15 € bei Conrad (oder Türschalter) (Best-Nr.: 196037 - 62)
- LaserPointer der auf den Widerstand strahlt.
- Piepser kostet 5 - 10 € bei Conrad Online-Shop
- LPT-Schnittstelle an PC oder Notebook
- Genug Kabel kostet ca. 2 € bei Mobau Klein
Hier erst einmal der Code den ihr braucht! :
Vorher müsst ihr in die Form folgende Controls einfügen :
- 3 Buttons (Bereinigen; Alarm; Datum)
- Textbox (MultiLine aktivieren)
- Eine Form
- 2 Timer (Check, Timer1)
So als erstes die Subs für die LPT-Schnittstelle
VB.NET-Quellcode
- ' API Funktionen der InpOut32.dll
- Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" ( _
- ByVal PortAdress As Integer) As Integer
- Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" ( _
- ByVal PortAdress As Integer, _
- ByVal Value As Integer)
- Public Enum LPT
- LPT1 = &H378
- LPT2 = &H278
- End Enum
- Public Enum LPT_Daten_Pin
- ' Als PinNummer
- Pin2 = 0
- Pin3 = 1
- Pin4 = 2
- Pin5 = 3
- Pin6 = 4
- Pin7 = 5
- Pin8 = 6
- Pin9 = 7
- ' Als SignalName
- Data0 = 0
- Data1 = 1
- Data2 = 2
- Data3 = 3
- Data4 = 4
- Data5 = 5
- Data6 = 6
- Data7 = 7
- End Enum
- Public Enum LPT_Kontroll_Pin
- ' Als PinNummer
- Pin1 = 0
- Pin14 = 1
- Pin16 = 2
- Pin17 = 3
- ' Als SignalName
- Strobe = 0
- AutoFdx = 1
- InitPrnt = 2
- SlctInp = 3
- End Enum
- Public Enum LPT_Input_Pin
- ' Als PinNummer
- Pin15 = 3
- Pin13 = 4
- Pin12 = 5
- Pin10 = 6
- Pin11 = 7
- ' Als SignalName
- Err = 3
- Slct = 4
- PE = 5
- Ack = 6
- Busy = 7
- End Enum
- ' Zur Zwischenspeicherung der Ausgangszustände und des Ports
- Private oldDaten As Byte
- Private oldKontroll As Byte
- Private Basisadresse As Integer
- Public Sub Init_LPT(ByVal DruckerPort As LPT, _
- Optional ByVal DatenByte As Byte = 0, _
- Optional ByVal KontrollByte As Byte = 0)
- ' Diese Funktion muß als erstes aufgerufen werden
- ' hiermit werden alle Ausgänge des LPT Ports auf GND (0) gelegt
- ' Optional können andere Ausgangswerte angegeben werden
- Basisadresse = DruckerPort
- Schreibe_DatenByte(DatenByte)
- Schreibe_KontrollByte(KontrollByte)
- End Sub
- Public Sub Schreibe_DatenByte(ByVal Wert As Byte)
- ' Dieser Sub gibt ein Byte am DatenPort aus
- Dim Ausgabe As Integer
- Dim Port As Integer
- oldDaten = Wert
- Port = CInt(Basisadresse)
- Ausgabe = Wert
- Out(Port, Ausgabe)
- End Sub
- Public Sub Schreibe_KontrollByte(ByVal Wert As Byte)
- ' Dieser Sub gibt ein Byte am KontrollPort aus
- Dim Ausgabe As Integer
- Dim Port As Integer
- oldKontroll = Wert
- Port = CInt(Basisadresse) + 2
- Ausgabe = Wert Or 32
- Ausgabe = Ausgabe Xor 43
- Out(Port, Ausgabe)
- End Sub
- Public Function Lese_InputByte() As Byte
- ' Diese Funktion liefert ein am InputPort gelesenes Byte zurück
- ' Die Bits 0,1,2 sind unbenutzt und werden immer als 1 = gesetzt zurückgegeben
- Dim Ausgabe As Integer
- Dim Port As Integer
- Port = CInt(Basisadresse) + 1
- Ausgabe = Inp(Port)
- ' Bit7 muß invertiert werden & die 3 LSB auf 1 setzen
- If Ausgabe >= 128 Then Ausgabe = Ausgabe - 128 Else Ausgabe = Ausgabe + 128
- Ausgabe = Ausgabe Or 7
- Lese_InputByte = CByte(Ausgabe)
- End Function
- Public Sub Schreibe_DatenString(ByVal Wert As String)
- ' Dieser Sub gibt ein Byte am DatenPort aus
- ' Der Übergabewert ist ein String aus 8 Zeichen mit 0en und 1en
- ' welche als Binärwerte interpretiert werden
- ' das Erste Zeichen ist das MSB das letzte Zeichen das LSB
- Dim Ausgabe As Byte
- Ausgabe = String2Byte(Wert)
- Schreibe_DatenByte(Ausgabe)
- End Sub
- Public Sub Schreibe_KontrollString(ByVal Wert As String)
- ' Dieser Sub gibt ein Byte am KontrollPort aus
- ' Der Übergabewert ist ein String aus 8 Zeichen mit 0en und 1en
- ' welche als Binärwerte interpretiert werden
- ' das Erste Zeichen ist das MSB das letzte Zeichen das LSB
- Dim Ausgabe As Byte
- Ausgabe = String2Byte(Wert)
- Schreibe_KontrollByte(Ausgabe)
- End Sub
- Public Function Lese_InputString() As String
- ' Diese Funktion liefert ein am InputPort gelesenes Byte in StringForm zurück
- ' Das MSB ist das erste und das LSB das letzte Zeichen
- ' Die Bits 0,1,2 sind unbenutzt und werden immer als 1 = gesetzt zurückgegeben
- Dim Ausgabe As Byte
- Dim AusString As String
- Ausgabe = Lese_InputByte
- AusString = Byte2String(Ausgabe)
- Lese_InputString = AusString
- End Function
- Private Function String2Byte(ByVal Wert As String) As Byte
- ' Diese Funktion wandelt einen 8 Zeichen String mit 0en & 1en
- ' in ein Byte. Im String ist das MSB das erste und LSB das letzte Zeichen
- Dim zähler As Integer
- Dim Ausgabe As Byte
- For zähler = 0 To 7
- If Mid$(Wert, zähler + 1, 1) = "1" Then
- Ausgabe = Ausgabe + 2 ^ (7 - zähler)
- End If
- Next
- String2Byte = Ausgabe
- End Function
- Private Function Byte2String(ByVal Wert As Byte) As String
- ' Diese Funktion wandelt ein Byte in einen String um
- ' Im String ist das MSB das erste und das LSB das letzte Zeichen
- Dim zähler As Integer
- Dim Ausgabe As String = Nothing
- For zähler = 7 To 0 Step -1
- If Wert >= 2 ^ zähler Then
- Ausgabe = Ausgabe & "1"
- Wert = Wert - 2 ^ zähler
- Else
- Ausgabe = Ausgabe & "0"
- End If
- Next
- Byte2String = Ausgabe
- End Function
- Public Function Lese_InputBit(ByVal Pin As LPT_Input_Pin) As Boolean
- ' Diese Funktion prüft ob das übergebene Bit auf High liegt (5Volt)
- ' und gibt ein True zurück wenn dem so ist. Liegt der Eingang auf Low
- ' wird False zurückgegeben
- Dim Ausgabe As String
- Dim Position As Integer
- Dim Rückgabe As Boolean
- Position = 8 - Pin
- Ausgabe = Lese_InputString
- If Mid$(Ausgabe, Position, 1) = "1" Then Rückgabe = True Else Rückgabe = False
- Lese_InputBit = Rückgabe
- End Function
- Public Sub Schreibe_KontrollBit(ByVal Pin As LPT_Kontroll_Pin, ByVal Ein As Boolean)
- ' Dieser Sub schaltet einen Ausgangspin des Kontrollport auf High (5Volt)
- ' wenn Ein = True, bei Ein = False wird das Pin auf GND (0Volt) gelegt
- ' Alle anderen Ausgänge des Kontrollport bleiben unverändert
- Dim Ausgabe As Byte
- Ausgabe = 2 ^ Pin
- Ausgabe = oldKontroll Or Ausgabe
- If Ein = False Then Ausgabe = Ausgabe Xor 2 ^ Pin
- Schreibe_KontrollByte(Ausgabe)
- End Sub
- Public Sub Schreibe_DatenBit(ByVal Pin As LPT_Daten_Pin, ByVal Ein As Boolean)
- ' Dieser Sub schaltet einen Ausgangspin des Datenport auf High (5Volt)
- ' wenn Ein = True, bei Ein = False wird das Pin auf GND (0Volt) gelegt
- ' Alle anderen Ausgänge des Kontrollport bleiben unverändert
- Dim Ausgabe As Byte
- Ausgabe = 2 ^ Pin
- Ausgabe = oldDaten Or Ausgabe
- If Ein = False Then Ausgabe = Ausgabe Xor 2 ^ Pin
- Schreibe_DatenByte(Ausgabe)
- End Sub
Das einfach in den Code der Form1 einfügen (Nicht im LoadEvent, auserhalb eines Events)
Jetzt die Zeit und das Datum lesen:
Jetzt den Timer1 zum aktualisieren des Datums und der Uhrzeit verwenden (Interval auf 1000 setzen)
Jetzt die Codes für alle Buttons :
VB.NET-Quellcode
- Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- TextBox1.Clear()
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- MsgBox(datadate)
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- '' Hier kommt euer Alarm
- End Sub
Jetzt zum Herz : Wir müssen mit dem Timer Check alle paar Sekunden überprüfen ob der Eingang geschaltet wurde. Als erstes müsst ihr zwei Kabel an die Pins 6 und 12 anschließen. An diese Kabel wird später die Lichtschranke angeschlossen. Jetzt folgt ersteinmal der Code zum überprüfen:
VB.NET-Quellcode
- Init_LPT(LPT.LPT1)
- ' Alle Ausgänge des DatenPort einschalten
- Schreibe_DatenByte(255)
- ' Im DatenPort BitNr4=Data4=Pin6 auf Low=GND=0=False schalten ohne
- ' die anderen Ausgänge zu verändern
- Schreibe_DatenBit(LPT_Daten_Pin.Data4, False)
- ' Prüfen ob im Inputport das BitNr5=PE=Pin12 auf Low=GND=0=Flase liegt
- If Lese_InputBit(LPT_Input_Pin.PE) = False Then
- If Closee = True Then
- TextBox1.AppendText(vbNewLine & datadate & " Zimmertür wurde geöffnet")
- 'Dim NewImage As Image = Form2.copyFrame(Form2.PictureBox1, New RectangleF(0, 0, Form2.PictureBox1.Width, Form2.PictureBox1.Height))
- 'NewImage.Save("c:\" & datadate & " Beweisfoto.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
- ' Alarm-Sound wiedergeben!!!
- Closee = False
- End If
- Else
- If Closee = False Then
- TextBox1.AppendText(vbNewLine & datadate & " Zimmertür wurde geschlossen")
- Closee = True
- End If
- End If
- ' Im Kontrollport die Bits 0 und 3 setzen, restliche Ausgänge = 0
- Schreibe_KontrollString("00001001")
Hier trägt er Texte in die Textbox ein wann die Tür geöffnet oder geschlossen wurde. Wenn ihr die Lichtschranke zusammengebaut habt müsst ihr sie nurnoch in die Nähe der Tür ausrichten und einen Laserpointer auf den Lichtwiderstand richten. Jetzt die Lichtschranke anschließen an die Zwei kabel die wir an die Pins 6 und 12 angeschlossen hatten.
Viel Spaß
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TS-Development“ ()