Relaiskarte mit AutoIT steuern, aber wie?

  • Hey Leute,

    kennt jemand von Vellemann die Relaiskarte K8056? Ich habe von diesen Relaiskarten 2 Stück und möchte nun versuchen dafür ein Programm zu schreiben. Gibt zwar eine Beispielanwendung bei aber die ist in VB geschrieben. Doch nur ich komme damit nicht so recht bislang klar. Wäre super, wenn ihr mir vll helfen könntet.


    Michael

    PS: Anhang hab ich die Daten vom Hersteller beigefügt.

  • Du scheinst der einzigste zu sein zumindest spukt die SuFu nichts dafür aus. Wie wäre es also mit etwas Dokumentation zu der Karte, auch das VB-Programm wäre hilfreich,

    mfg autoBert

  • Hab den VB Code als Anhang in 3 gesplitteten Dateien im Anhang gepackt, da eine Alleine zugroß war. Also über die Begrenzung drüber ging.

    und hier der Link zur Adresse vom Hersteller: http://www.velleman.eu/support/downloads/?code=K8056

    und hier nun der Link noch zu Conrad: http://www.conrad.de/ce/de/product/…LAISKARTE-K8056


    Michael

    PS: An sich benutze ich auf den PC wo ich das mit der Relaiskarte mache WinXP. Oder gibts vll eine ältere Version, die sich dafür besser eignet?

    Einmal editiert, zuletzt von lwl2011Bochum (5. November 2011 um 00:22)

  • Also, die eigentliche Funktion / das VB Script habeich gefunden:

    Spoiler anzeigen

    Netterweise haben die Die Buttons nicht näher beschriftet. Dem PDF von der Conrad Seite entnehme kannst man entnehmen wofür die Buchstabe stehen:
    E: Emergency Stop
    D: Display Adress
    S: set a Relay
    C: Clear Relay
    T: Toggle Relais
    A: Change Adress of Card
    F: Force all Cards to address 1
    B: Send a Byte

    Da scheint auch eine Dos-Komandozeilen exe dabei zu sein. Ich habe die karte nicht und deshalb auch keine Lust die ganze Software zu installieren. Das VB Projekt konnte ich so finden (siehe Spoiler oben), eigentlich müsste man es nur nachbastel (als was an die Com-Ports (Comm im Text) gesendet wird.

    Die rufen die MSCOMM.OCX im VB Projekt auf - die wirst du nicht brauchen, die habe die dabei gepackt weil (wie ich meine) damals (das zeug ist ja schon älter) in den einfachen VB Versionen kein Controll zum ansteuern der COM Ports dabei war.

    BLinz

  • Ja nur wie gesagt will ich dies in AutoIT gestalten, aber naja ich werd mir da vll noch mal mehr mit beschäftigen müssen. Vll bekomme ich da noch was hin. vorallem wenn eine DOS Datei bei ist die man per Parameter aufrufen kann, dann mache ichs so und nutze AutoIT nur als "Oberfläche" aber gucken wir mal.


    Michael

  • Na komm,

    du hast ja auch schon ähnliche Fragen zum Thema hier im Forum gestellt,
    Wenn deine Karte also mit der Software die dazu gehört funktioniert,
    du dir eine UDF wie z.B. die hier schnappst: http://www.autoitscript.com/forum/topic/12…t-com-port-udf/
    und die aus dem VB Projekt die Strings anschaust die die einzelnen Buttons senden sollte es doch möglich sein.

    Schenk mir eine Karte und ich würde es schreiben :) Nur Theorethisch ist es mir zu hart.

    Du solltest mit einer Mini-Version anfangen die einfach nur einen Ausgang ein und wieder ausschaltet (mit einer Meldung dazwischen) - dann weist du wie es geht. (Ich schreibe fast immer erstmal einen Testkandidaten)

    In dem anderen Thread von dir haben sie dich auf das hier hingewiesen: http://www.autoit.de/index.php?page=Thread&postID=36155
    da wird sogar die MSCOMM.OCX genutzt die du hast - Ja ist schlecht dokumentiert, aber das ganze ist nicht so lang als das man es nicht Zeile für Zeile mal durchgehen könnte. An dem Beispiel kannst du den ersten Abschnitt doch so übernehmen, die Baud-Rate anpassen und dann deinen eigenen Befehl senden.

    Das passt du an deine Baud rate an:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $hor, $vert,$hor_old, $vert_old
    dim $smg, $exit_btn, $window1, $window1_handle,$hGraphic,$hPen,$mess_txt
    dim $recieve_data,$recieve_label,$outstr
    $outstr="D"
    $hor = 0
    $vert = 0
    $hor_old = 0
    $vert_old = 0

    [/autoit] [autoit][/autoit] [autoit]

    $MsComm1 = ObjCreate("MSCOMMLib.MsComm.1")
    if not IsObj($MsComm1) then
    FileInstall("MSCOMM32.OCX", EnvGet("SystemRoot") & "\System32\MSCOMM32.OCX")
    Run(@ComSpec & " /c C:\WINDOWS\SYSTEM32\REGSVR32.EXE C:\WINDOWS\SYSTEM32\MSCOMM32.OCX")
    RegWrite("HKEY_CLASSES_ROOT\Licenses\DB4C0D00-400B-101B-A3C9-08002B2F49FB", "", "REG_SZ", "mgkgtgnnmnmninigthkgogggvmkhinjggnvm")
    RegWrite("HKEY_CLASSES_ROOT\Licenses\7BC20EDC-4A42-101B-A3C9-08002B2F49FB", "", "REG_SZ", "gifblihbhiiihbciocfbkifbqcfcdiebbiqh")
    $MsComm1 = ObjCreate("MSCOMMLib.MsComm.1")
    endif

    [/autoit] [autoit][/autoit] [autoit]

    $MsComm1.Settings = "1200,N,7,2"
    $MsComm1.Handshaking = 0
    ;~ $MsComm1.InBufferSize = 20
    ;~ $MsComm1.InputLen = 14
    $MSComm1.DTREnable = True
    $MSComm1.RTSEnable = False
    $MsComm1.CommPort = 2
    $MsComm1.PortOpen = True

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Weiter unten in dem Multimeter Beispiel findest du

    [autoit]

    func _Read_mm()
    $recieve_data = ""
    $MsComm1.Output = $outstr
    $recieve_data = $MsComm1.Input

    [/autoit]

    Output ist das senden - also musst du dir nur noch den passenden String zusammenbauen - schau in den VB Code zu Buttons und ansonsten: probieren probieren

    BLinz