USB-relay per USB ein und ausschalten
- C#
- .NET (FX) 4.5–4.8
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von johannes 123456.
-
-
Hallo,
da sind ganz andere ICs verbaut. Unter Anderem ein FTDI-Chip. Da lässt sich im Treiber der VCP aktivieren. Bei dem, was Du hast, ist ein Atmel-IC verbaut. Die Software von Sigma passt also nicht.
C++-Projekte kann man z.B. mit Visual Studio > C++ bearbeiten. Ich gehe davon aus, dass die Express-Versionen nich kostenlos zu haben sind. Ansonsten mal bissel in Api-Programmierung einlesen und wie man DLLs anspricht. Dann geht das auch mit VB.
Ob da wirklich ein ComPort von der Relais-Platine eingerichtet wird, siehst Du, wenn Du den Gerätemanager ohne angeschlossene Platine ansiehst. Ist Com1 dann immer noch da, ist es ein anderer.
Gruß
Peterfido
Keine Unterstützung per PN!Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „peterfido“ ()
-
Ich schaffe es einfach nicht komme nicht weiter.
Wenn mir das jemand von euch machen könnte das ich es benutzen kann würde ich euch auch etwas dafür Bezahlen.
Das ist für mich zu schwierig. Bitte um Hilfe!!!
Das ist der Link zu dem Projekt was ich nicht in vb bekomme.
m5.img.dxcdn.com/CDDriver/CD/sku.289998.rar
Mfg
Johannes
Edit: Bin so am Verzweifeln:(
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „johannes 123456“ ()
-
Hallo,
Deine HomeAutomation vom April letzten Jahres wird doch einige API-Aufrufe haben. Ich habe mir mal Deine 40 Posts durchgelesen. Von geben und nehmen hier im Forum kann ich leider nix erkennen.
Selbst wenn sich jemand findet, der das macht, dann sollte dieser auch eine solche Platine besitzen oder Deine während der Programmierphase zur Verfügung haben. Er wird bei den Enums nur auf "keinen gefunden" stossen und kann die restlichen Funktionen nicht testen können. Ansonsten installier Dir VC++ und passe das Programm so an, dass es sich von einer VB-Anwendung steuern lässt / mit dieser Kommuniziert. Visual Studio Express 2012 ist kostenlos zu bekommen. Das 2015 für Windows 10 Apps ist nicht geeignet.
Gruß
Peterfido
Keine Unterstützung per PN!Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „peterfido“ ()
-
-
Hallo,
als VB6 Programmierer ist das für mich auch nicht einfach. Ich würde erstmal alles nach VB2012 (oder so) übersetzen. Danach Fehler suchen und beseitigen. Das ist nicht mal eben schnell gemacht.
Die usb_relay_device.h könnte z.B. so aussehen (Bestimmt nich Fehler drin):
VB.NET-Quellcode
- Imports System.Runtime.InteropServices
- Enum usb_relay_device_type As Byte
- USB_RELAY_DEVICE_ONE_CHANNEL = 1
- USB_RELAY_DEVICE_TWO_CHANNEL = 2
- USB_RELAY_DEVICE_FOUR_CHANNEL = 4
- USB_RELAY_DEVICE_EIGHT_CHANNEL = 8
- End Enum
- Structure usb_relay_device_info
- Public serial_number As String
- Public device_path As String
- Public usb_relais_device_type As Byte
- Public usb_relais_device_info As String
- End Structure
- Module mdlRelais
- <DllImport("usb_relay_device.dll")> _
- Public Sub usb_relay_init()
- End Sub
- Public Sub usb_relay_exit()
- End Sub
- Public Sub usb_relay_device_enumerate(ByRef array() As usb_relay_device_info)
- End Sub
- Public Sub usb_relay_device_free_enumerate(ByRef usb_relay_device_info As usb_relay_device_info)
- End Sub
- Public Sub usb_relay_device_open_with_serial_number(ByRef serial_number As String, ByRef len As Byte)
- End Sub
- Public Sub usb_relay_device_open(ByRef usb_relay_device_info As usb_relay_device_info)
- End Sub
- Public Sub usb_relay_device_close(ByRef hHandle As Integer)
- End Sub
- Public Sub usb_relay_device_open_one_relay_channel(ByRef hHandle As Integer, ByRef index As Integer)
- End Sub
- Public Sub usb_relay_device_open_all_relay_channel(ByRef hHandle As Integer)
- End Sub
- Public Sub usb_relay_device_close_one_relay_channel(ByRef hHandle As Integer, ByRef index As Integer)
- End Sub
- Public Sub usb_relay_device_close_all_relay_channel(ByRef hHandle As Integer)
- End Sub
- Public Sub usb_relay_device_get_status(ByRef hHandle As Integer, ByRef status As Integer)
- End Sub
- End Module
In der Form dann die Initialisierung machen und schauen, was läuft und wo noch korrigiert werden muss.
VB.NET-Quellcode
- Public Class frmRelais
- Shared USB_Relais() As usb_relay_device_info
- Protected Overrides Sub Finalize()
- MyBase.Finalize()
- Try
- usb_relay_exit()
- Catch ex As Exception
- MsgBox("Fehler beim Schließen der DLL")
- End Try
- End Sub
- Public Sub New()
- ' Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- Try
- usb_relay_init()
- Catch ex As Exception
- MsgBox("Fehler beim öffnen der DLL")
- Exit Sub
- End Try
- Try
- usb_relay_device_enumerate(USB_Relais)
- Catch ex As Exception
- MsgBox("Fehler beim Auflisten der Relais")
- Exit Sub
- End Try
- Try
- MsgBox(UBound(USB_Relais))
- Catch ex As Exception
- MsgBox("Keine Relais gefunden")
- Try
- usb_relay_exit()
- Catch ex1 As Exception
- Application.DoEvents()
- End Try
- Endzeit.Enabled = True 'Beenden per Timer. (Quick n Dirty) Die Form muss erst zuende geladen werden, sonst Fehler.
- End Try
- End Sub
- Private Sub Endzeit_Tick(sender As Object, e As EventArgs) Handles Endzeit.Tick
- Application.Exit()
- End Sub
- End Class
Weiter kommt man ohne Relais nicht. - Und nein, ich mache da auch nicht weiter. Das sollte Dir aber schon mal helfen, um zu beginnen. Für den Rest würde ich einzelne Fragen im Forum stellen. Z.B. weiß ich nicht, ob ich das mit den Strukturen richtig gemacht habe, ob die DLL per ByRef ansprechbar ist, dllimport jedesmal neu angegeben werden muss und eine Funktion statt Sub benötigt wird, und und und.
Edit:
Als Funktionen würde das so aussehen. Was nun richtig ist, weiß ich nicht.
VB.NET-Quellcode
- Imports System.Runtime.InteropServices
- Enum usb_relay_device_type As Byte
- USB_RELAY_DEVICE_ONE_CHANNEL = 1
- USB_RELAY_DEVICE_TWO_CHANNEL = 2
- USB_RELAY_DEVICE_FOUR_CHANNEL = 4
- USB_RELAY_DEVICE_EIGHT_CHANNEL = 8
- End Enum
- Structure usb_relay_device_info
- Public serial_number As String
- Public device_path As String
- Public usb_relais_device_type As Byte
- Public usb_relais_device_info As String
- End Structure
- Module mdlRelais
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_init()
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_exit()
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_enumerate(ByRef array() As usb_relay_device_info)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_free_enumerate(ByRef usb_relay_device_info As usb_relay_device_info)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_open_with_serial_number(ByRef serial_number As String, ByRef len As Byte)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_open(ByRef usb_relay_device_info As usb_relay_device_info)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_close(ByRef hHandle As Integer)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_open_one_relay_channel(ByRef hHandle As Integer, ByRef index As Integer)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_open_all_relay_channel(ByRef hHandle As Integer)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_close_one_relay_channel(ByRef hHandle As Integer, ByRef index As Integer)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_close_all_relay_channel(ByRef hHandle As Integer)
- End Function
- <DllImport("usb_relay_device.dll")> _
- Public Function usb_relay_device_get_status(ByRef hHandle As Integer, ByRef status As Integer)
- End Function
- End Module
Da es nun Funktionen sind, müssen die Aufrufe im Formular angepasst werden.
Gruß
Peterfido
Keine Unterstützung per PN!Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „peterfido“ ()
-
Wow wirklich Danke dafür.
Das mit der usb_relay_device.h habe ich nicht so ganz kapiert. Wo und wie erstelle ich die ?
Erstelle ich die in meinem Program ? Vll steh ich auch nur gerade voll auf dem Schlauch.
Den unteren Code mit den Funktionen könnte ich doch ganz normal in meiner Form nutzen und dann die jeweilige Funktion zB per Button verwenden oder ?
Edit:
Hätte gestern probiert die dll ins program zu importieren da hat er mir aber einen Fehler angezeigt.
-
Hallo,
Zeile 17 gibt den entsprechenden Hinweis. Das ist ein Modul. Sollte aber auch in der Form laufen. Module haben den Vorteil, dass man diese in anderen Projekten weiternutzen kann. Nutzt man nur FORM, dann muss man sich das nötige immer wieder neu raus suchen.
Auch möglich, dass es jedesmal die dllimport braucht und dann auf SUBs gehen muss. Es gibt halt viele Möglichkeiten.
Edit:
das Ganze kannst Du Dir (fast) sparen. Im Download ist doch ein Kommandozeilenprogramm enthalten. Das kannst Du mit jedem Programm fernsteuern. Dazu einfach mal die Readme.txt lesen.
Gruß
Peterfido
Keine Unterstützung per PN!Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „peterfido“ ()
-
-
-
Weil ich das nicht verstehe wie ich das machen soll.
vll könntest du mir helfen.
Habe das jetzt mit der CommandApp ausprobiert schaffe es aber nicht.
in der readme steht:
1. Open the first relay of the device serial number is afEd5
CommandApp_USBRelay afEd5 open 01
Wie mache ich das kann mir da bitte jemand helfen?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „johannes 123456“ ()
-
-
Benutzer online 1
1 Besucher
-
Ähnliche Themen
-
5 Benutzer haben hier geschrieben
- johannes 123456 (17)
- peterfido (7)
- Gonger96 (4)
- Mokki (3)
- Eierlein (1)