Velleman K8055 och VB
Velleman K8055 och VB
Vet att detta har avandlats tidigare, men jag gav nog upp innan jag fick någon klarhet i det hela.
Jag har Vellemans usb i/o-kort som jag försöker programmera med Visual Basic 2005 express ed. och lyckas inte med detta. Är det någon här som vet om det går med express versionen, eller ska man använda någon annan version?
Tacksam för alla tips!
Jag har Vellemans usb i/o-kort som jag försöker programmera med Visual Basic 2005 express ed. och lyckas inte med detta. Är det någon här som vet om det går med express versionen, eller ska man använda någon annan version?
Tacksam för alla tips!
- Mathias@Åland
- Inlägg: 241
- Blev medlem: 22 juni 2006, 20:19:11
- Ort: Åland
- Kontakt:
Ett exempel:
Velleman har den senaste DLL-filen här.
Lägg K8055D.DLL i samma mapp som programmet eller i systemmappen.
Kod: Markera allt
Public Class Form1
Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
Private Declare Sub CloseDevice Lib "k8055d.dll" ()
Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer
Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)
Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean
Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer
Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer
Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)
Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)
Private Declare Sub Version Lib "k8055d.dll" ()
Private Declare Function SearchDevices Lib "k8055d.dll" () As Byte
Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Byte
Const CARD_ADDRESS As Byte = 0 'Card address = 0
Private Sub test()
OpenDevice(CARD_ADDRESS) 'Connect to card
SetAllDigital() 'All digital outputs ON
OutputAllAnalog(50, 255) 'Analog output 1 = 50, analog output 2 = 255
System.Threading.Thread.Sleep(1000) 'Wait 1s
ClearAllDigital() 'All digital outputs OFF
ClearAllAnalog() 'Both analog outputs OFF
CloseDevice() 'Disconnect
End Sub
Private Sub testButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles testButton.Click
test()
End Sub
Private Sub exitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exitButton.Click
Me.Close()
End Sub
End Class
Lägg K8055D.DLL i samma mapp som programmet eller i systemmappen.
- Mathias@Åland
- Inlägg: 241
- Blev medlem: 22 juni 2006, 20:19:11
- Ort: Åland
- Kontakt:
Lägg till en Timer som läser av ingång1
Nånting sånt?
Kod: Markera allt
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If ReadDigitalChannel(1) = True Then
SetDigitalChannel(5)
Else
ClearDigitalChannel(5)
End If
End Sub
Jag är dålig på VB, men spontant:
Programmet reagerar långsamt för att du har satt timern för snabbt, om du kör timern på högsta hastighet så kommer programmet inte att hinna med annat än att kolla ingång 1.
Om du avslutar programmet utan att stänga av timern så kan jag tänka mig att du får något felmeddelande.
Programmet reagerar långsamt för att du har satt timern för snabbt, om du kör timern på högsta hastighet så kommer programmet inte att hinna med annat än att kolla ingång 1.
Om du avslutar programmet utan att stänga av timern så kan jag tänka mig att du får något felmeddelande.
>Om du avslutar programmet utan att stänga av timern så kan jag tänka mig att du får något felmeddelande.
Nej, det får man inte men däremot får du felmeddelande om du inte "stänger" kontakten med kortet med hjälp av "CloseDevice()".
Lägg till en Avsluta-knapp så slipper du det irritationsmomentet i alla fall.
Nej, det får man inte men däremot får du felmeddelande om du inte "stänger" kontakten med kortet med hjälp av "CloseDevice()".
Lägg till en Avsluta-knapp så slipper du det irritationsmomentet i alla fall.
Kod: Markera allt
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CloseDevice()
End Sub