Hallo,
Ik heb volgende Visual Basic code:
Public Class Form1
Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long
Private Declare Sub CloseDevice Lib "k8055d.dll" ()
Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) As Long
Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long, ByVal Data As Long)
Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Long)
Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean
Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Long
Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long
Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Long)
Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If OpenDevice(0) = 0 Then
MsgBox("Succesvol geconnecteerd!")
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Interval = 1000
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Deur As Boolean
Deur = ReadDigitalChannel(1)
If Deur = False Then
MsgBox("Open")
End If
End Sub
End Class
Het probleem is als de deur dan open gaat (dus Deur = False) dan blijft de MsgBox komen. Hoe kan ik ervoor zorgen dat deze box maar één keer opengaat???
Arjan Swets
cnc filmpjes op Http://www.arjan-swets.com
dit is meer iets voor dit forum: http://www.vbib.be/PNphpBB2-viewforum-f-66.phtml
Stan1
Read the fuc.... manual and read the fuc.... datasheet! {Proton IDE: V2.0.1.2 / Proton Compiler: V3.5.4.5}
HM, ik weet niet of deze vraag hier hoort maar toch....
Gebruik een boolean variabel die je op true zet wanneer je het bericht weergegeven hebt, je controleerd de waarde voordat je het bericht weergeeft.
Dus Zoiets:
Bovenaan (public Getoond as boolean)
If Deur = False Then
if getoond = false then MsgBox("Open") : getoond = true
else
getoond = false
End If
hadv
Just find out what you like and let it kill you
Maar houd er dan wel rekening mee dat als de deur weer dichtgaat je die variabele ook aanpast.
Maar volgens mij is de code nog laaaaaang niet af, dus...
Stan1
Read the fuc.... manual and read the fuc.... datasheet! {Proton IDE: V2.0.1.2 / Proton Compiler: V3.5.4.5}
Op 8 maart 2011 01:07:56 schreef hadv:
Maar houd er dan wel rekening mee dat als de deur weer dichtgaat je die variabele ook aanpast.
Maar volgens mij is de code nog laaaaaang niet af, dus...
Mispoes...... 
Als ik zijn code bekijk is de variabel: deur=false waneer de deur open is, waneer deze sluit (na else) deur is dan gesloten, word de variabel getoond weer op false gezet!
En dus weer klaar voor een nieuw rondje.....
Ik heb nog wat verder gezocht en ben tot de conclusie gekomen dat ik met een timer moet werken. 
Hoe voeg ik een timer aan dit stukje code toe?
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
If ReadDigitalChannel(1) = False Then
MsgBox("Deur geopend!")
End If
End If
End Sub
Het vorige is me gelukt! 
Maar nu heb ik dit stukje code, het probleem is dat de Msgbox blijft verschijnen op de interval van de timer.
De Msgbox mag maar één keer verschijnen.
Hoe los ik dit op?
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 1000
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If CheckBox1.Checked = True Then
If ReadDigitalChannel(1) = True Then
MsgBox("Deur open!")
Timer1.Enabled = False
End If
End If
End SubDisable de timer eens voor het laten verschijnen van de Msgbox.
Dus zo:
If ReadDigitalChannel(1) = True Then
Timer1.Enabled = False
MsgBox("Deur open!")
[Bericht gewijzigd door Anton Mulder op (56%)]
Progger
GMT+1
het werkt, maar waarschijnlijk eenmalig 
wat je eigenlijk met doen is een geheugen werken, maar dan gewoon kijken naar de oude waarde:
if checkbox1.checked <> readinput then 'waarde is anders als vorige
checkbox1.checked = readinputwaarde 'sla waarde op
if checkbox1.checked = true then msgbox ("deur is nu open");
if checkbox1.checked = false then msgbox ("deur is nu dicht");
end if;
Het werkt!!!