1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Chrischn

Beiträge von Chrischn

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 21. Oktober 2009 um 14:23

    Aber das Include wird definitif aufgerufen. Hatte zum Test noch mal ne MSGBox eingebaut...

    thx Chrischn

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 21. Oktober 2009 um 14:05

    KLOTZ


    "OCRArrayLevel2.au3"

    Spoiler anzeigen
    [autoit]


    $OCR[0][0] = 194
    $OCR[0][1] = "a"
    $OCR[1][0] = 281
    $OCR[1][1] = "b"
    $OCR[2][0] = 183
    $OCR[2][1] = "c"
    $OCR[3][0] = 240
    $OCR[3][1] = "d"
    $OCR[4][0] = 220
    $OCR[4][1] = "e"
    $OCR[5][0] = 167
    $OCR[5][1] = "f"
    $OCR[6][0] = 208
    $OCR[6][1] = "g"
    $OCR[7][0] = 204
    $OCR[7][1] = "h"
    $OCR[8][0] = 96
    $OCR[8][1] = "i"
    $OCR[9][0] = 121
    $OCR[9][1] = "j"
    $OCR[10][0] = 226
    $OCR[10][1] = "k"
    $OCR[11][0] = 122
    $OCR[11][1] = "l"
    $OCR[12][0] = 263
    $OCR[12][1] = "m"
    $OCR[13][0] = 271
    $OCR[13][1] = "n"
    $OCR[14][0] = 216
    $OCR[14][1] = "o"
    $OCR[15][0] = 202
    $OCR[15][1] = "p"
    $OCR[16][0] = 237
    $OCR[16][1] = "q"
    $OCR[17][0] = 248
    $OCR[17][1] = "r"
    $OCR[18][0] = 199
    $OCR[18][1] = "s"
    $OCR[19][0] = 130
    $OCR[19][1] = "t"
    $OCR[20][0] = 190
    $OCR[20][1] = "u"

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

    "Hauptscript.au3"

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

    Global $OCR[1000][2]

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

    While 1
    Include(2)
    Sleep(2000)
    WEnd

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

    Func Include($L)
    If $L = 1 Then
    #Include <OcrArrayLevel1.au3>
    EndIf
    If $L = 2 Then
    #Include <OcrArrayLevel2.au3>
    EndIf
    _ArrayDisplay($OCR)
    EndFunc

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

    Problem: Verändere ich wärend das Script läuft die "OCRArrayLevel2.au3" , so wirkt sich das nicht auf das Script aus.( Keine Änderungen im ArrayDisplay.....

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 21. Oktober 2009 um 13:56

    ja danke ,,, dad versteh ich wohl... aber ich kann die Ursache für mein Problem noch immer nicht finden...
    werde gleich mal nen Klotz Skript posten...

  • 2 Funktionen gleichzeitig - Programm hängt sich auf

    • Chrischn
    • 21. Oktober 2009 um 13:52

    reduziere doch einfach den aktualisierungsintervall von adlibenable auf 2 sek (zeit erhöhen)...
    weil, wie schon gesagt, das script aus der AdLibENable nicht mehr rauskommt. Denn sobald die Funktion, die AdLibEnable aufruft zuende ist, sind die 100ms bereits wieder abgelaufen und AdlibEnable startet sofort wieder..
    Es kommt also gar nicht mehr zum Hauptscript.
    (Alles abhängig davon, was so im Temp alles rumliegt...)

    hoffe, das war verständlich...

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 21. Oktober 2009 um 00:00

    ...keiner mehr ne idee??

  • Text aus Zwischenablage zeichenweise lesen

    • Chrischn
    • 20. Oktober 2009 um 23:38

    Hi,
    kannst du nicht den String suchen und dann diesen + die nächsten 10-20 Zeichen mitnehmen?

    und danach eben die 10-Stellige(?) Art.Nr. rausfiltern....

    Gruß
    Chrischn

  • Script funktioniert nicht mehr.

    • Chrischn
    • 20. Oktober 2009 um 23:35

    Hi, ich denke, das Problem ist:
    Die Datei wird erstellt - es sind aber noch daten drin. Diese werden erst noch geschrieben.
    Mach doch vor dem löschen einfach noch ein Sleep(1000) rein..
    oder prüfe per processexists, ob das umwandeln abgeschlossen ist...

    Gruß
    Chrischn

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 20. Oktober 2009 um 23:27

    ich mach´s genau andersrum:
    Im Hauptskript wird deklariert und mit dem Array gearbeitet und im zu Includenen Skript werden die Werte zugewiesen.

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 20. Oktober 2009 um 23:16

    ohh ja.. natürlich.. ist auch mit " $ "
    .. ich kann also nur Func´s includen ???
    dann ist´s aber komisch, dass es beim ersten Aufruf immer funktioniert...
    ? ? ?

  • mehrfach #Include ´n wirkt nicht

    • Chrischn
    • 20. Oktober 2009 um 23:11

    Moin moin!
    Hab ein Skript in dem ein 2D-Array deklariert wird.
    Beisp.:

    [autoit]


    Global ABC[1000][2]

    [/autoit]


    Per #include werden aus einem 2ten Skript die Werte in selbiges Array reingeschrieben.

    Beisp.:

    [autoit]


    $ABC[0][0] = 123
    $ABC[0][1] = "blablub"
    $ABC[1][0] = 999
    $ABC[1][1] = "werdasliestistdoof"
    $ABC[2][0] = 232
    $ABC[2][1] = "inhalt"

    [/autoit]

    Nun wird letztere Datei gelegentlich erweitert und ein weiteres Mal #Include ´d.
    Jedoch landen die Werte/Strings nicht im Array. :(

    Ich habe zum Test auch bereits mal ne msgbox mit eingebaut - DIE wird ausgegeben...

    Hat jemand ne Idee, warum das #Include nur 1x Vollständig passiert?

  • mehrfach #inlcude n

    • Chrischn
    • 20. Oktober 2009 um 15:11

    Moin moin!

    Ich möchte eine .au3 datei mehrfach includen, weil sie aktualisiert wurde.
    Aber ich habe das gefühl, dass dies nur 1 mal pro script-start passiert.
    Das sollte doch eigentlich nur bei #Include-Once so sein...

    Hat jemand ne idee, wie ich das lösen kann?


    -> Problem gefunden -- >> Fehler war zwischen den Ohren -->> AutoIt hat alles so gemacht, wie´s sich gehört...

  • Dezimal in Binär umwandeln _DezToBin

    • Chrischn
    • 7. September 2009 um 16:00

    Ihr seid doch alle Muh-Kühe.. das war eines meiner ertsen ;)
    wollte nur zeigen, was ich tolles kann.
    aber danke für den Hinweis...

  • AutoIt-Script öffnet AutoIt-Script2 und bringt $var mit

    • Chrischn
    • 6. September 2009 um 18:14

    Danke Jungs!
    Das war mal informativ!
    Gruß
    der Almjodler

  • AutoIt-Script öffnet AutoIt-Script2 und bringt $var mit

    • Chrischn
    • 6. September 2009 um 17:27

    Hallo Leutz!

    Ich möchte per Run(blablablub) ein weiteres Script starten und diesem gleich eine Variable mit auf den Weg geben.
    Also quasi so, wie bei einem Funktionsaufruf....
    Is it possible?

    greets

  • Variablen zwischen 2 Scripten

    • Chrischn
    • 1. September 2009 um 20:11

    Danke für die zahlreichen Hilfen ersmaaa!!!

    Wie wende ich denn das $WM_COPYDATA an ???

    kannste dazu ein Beispiel machen?
    Danke für die zahlreichen Hilfen!!!

  • Variablen zwischen 2 Scripten

    • Chrischn
    • 31. August 2009 um 21:04

    dad is mir ja wohl zu hoch ... ich mach morgen weiter... versuchs dann mit dem control dingsbums und dem wm_copy_blablub

  • Variablen zwischen 2 Scripten

    • Chrischn
    • 31. August 2009 um 16:47

    Wäre NamedPipes eine Option?
    Versuche mich da grad einzulesen und mache ein paar Tests.. aber das is nix für noobs...;-)

  • Variablen zwischen 2 Scripten

    • Chrischn
    • 31. August 2009 um 16:43
    Zitat von L3viathan2142

    AutoItWinSetTitle

    Das heisst, ich soll für den Benutzer sichtbar Daten in eine Editbox schreiben lassen?
    Stelle ich mir sehr unansehnlich vor. Ausserdem muss das "Client"-Script dann immer nen GUICtrlRead machen...

  • Variablen zwischen 2 Scripten

    • Chrischn
    • 31. August 2009 um 16:01
    Zitat von PokerFace

    Direkt kommunizieren können sie wahrscheinlich nicht.
    Nur mit der Variante von Depreed.
    Damit würde es funktionieren.
    Aber ich frage mich, ob per FileWrite nicht doch schneller ist.
    Wenn die Schleife unentwegt Daten schreibt, kannst du sie genau so schnell auslesen..


    EDIT:
    Kannst du die Skripte mal posten?
    Ich bekomm die bestimmt in 1 zusammengebastelt ^^

    Alles anzeigen

    OK, gern. Du hast es ja nichtz anders gewollt:
    Ist im Moment wegen dem Primärproblem noch 1 Script, aber die Func "ReadLPTPortPins" würde ich gern outsourcen.

    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: Christian Birkmann
    Script Function: M&B TS4

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

    #ce ----------------------------------------------------------------------------

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

    #Region Konstanten und Variablen
    #include <Array.au3>
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #RequireAdmin
    Opt('MustDeclareVars', 1)
    Global $RegSchluessel = "HKey_Local_Machine\Software\Schröder\TS4", $AktuelleMotorStellung = 0, $ReferenzierenAbgeschlossen = 0
    Global $AktuellesMass = 0, $Zielmass = 0, $LaengstischOption, $AnzahlSchnitte, $Beschleunigung
    Global $ParallelPort, $Pause, $PausenTaste
    Global $ReferenzMass, $Gewindesteigung, $SchritteProUmdrehung, $AchsUmkehrSpiel, $Systempasswort ,$Laengstisch, $Slider, $AnzahlSchnitteInput
    Global $AktuelleEndstufen, $SchnittAbstandInput, $SchnittBreiteInput, $StartPositionInput, $AktuellesMassLabel, $Fortschrittsbalken, $Status
    Global $Start, $Referenzieren, $Grundeinstellungen_Aendern, $msg, $Speichern, $Regfehler, $GES, $RM, $GS, $SPU, $AUS, $SP, $Laufzeit, $Speed
    Global $SchnitteAbsolviert, $SchnittAbstand, $SchnittAbstandInput, $SchnittBreite, $StartPosition, $BCD[2], $In[8],$del, $Exit,$MoveStart, $PP, $ParallelPort
    Global $EndschalterLinks, $EndschalterRechts, $EndschalterOben, $EndschalterUnten, $EndschalterHinten, $EndschalterVorn, $Aus = "0xff4040", $An = "0x00FF00"
    Global $Out0 = 0;MotorEndstufenkanal 1
    Global $Out1 = 0;MotorEndstufenkanal 2
    Global $Out2 = 0;Wippe Hoch
    Global $Out3 = 0;Wippe Runter
    Global $Out4 = 0;Tisch Nach Vorn
    Global $Out5 = 0;Tisch Nach Hinten
    Global $Out6 = 0;Hydraulik Ein
    Global $Out7 = 0;Werkzeug Ein
    Global $In0 ;Not-Aus
    Global $In1 ;Endschalter Oben
    Global $In2 ;Endschalter Unten
    Global $In3 ;Endschalter Hinten
    Global $In4 ;Endschalter Vorn
    Global $In5 ;Endschalter Links
    Global $In6 ;Endschalter Rechts
    Global $In7 ;--frei--
    Global $Dll = DLLOpen(@ScriptDir & "/inpout32.dll")
    HotKeySet("{ESC}","_Exit")
    HotKeySet("{PAUSE}", "Pause")
    #EndRegion Konstanten und Variablen

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

    #Region GUI
    GUICreate("Meyer & Burger - TS4 Control-Center",1024,768,0,0,1)
    GUISetState(@sw_show)

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

    GUICtrlCreateGroup("Programmeinstellungen", 10, 10)
    $Laengstisch = GUICtrlCreateCheckbox("Programm mit Längstisch",20,30)
    GUICtrlCreateLabel("Vorschub Quertisch 1 - 100%",20,80)
    $Slider = GUICtrlCreateSlider(20,100,150)
    GUICtrlSetLimit($Slider, 100 , 1 )
    GUICtrlSetData($Slider,100)

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

    GUICtrlCreateGroup("Bearbeitungsdaten", 300, 10,200,300)
    GUICtrlCreateLabel("Anzahl Schnitte",310,30)
    $AnzahlSchnitteInput = GUICtrlCreateInput("1",310,50)
    GUICtrlCreateLabel("Schnittabstand",310,80)
    $SchnittAbstandInput = GUICtrlCreateInput("1",310,100)
    GUICtrlCreateLabel("Schnittbreite",310,130)
    $SchnittBreiteInput = GUICtrlCreateInput("1",310,150)
    GUICtrlCreateLabel("Startposition",310,180)
    $StartPositionInput = GUICtrlCreateInput("1",310,200)
    $Start = GUICtrlCreateButton("Programm Start",300,320,200,50)
    $PausenTaste = GUICtrlCreateButton("Programm Pause <Pause>",300,380,200,50)

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

    GUICtrlCreateGroup("StatusDaten", 600,10,300,450)
    GUICtrlCreateLabel("Aktuelles Maß Quertisch: ",610,30)
    $AktuellesMassLabel = GUICtrlCreateLabel(Round($AktuellesMass,4)& " mm",750,30,100)
    GUICtrlCreateLabel("Programmfortschritt",610,80)
    $Fortschrittsbalken = GUICtrlCreateProgress(610,105,270,20)
    $Status = GUICtrlCreateLabel("Grundeinstellungen werden geladen...",610,130,280,60)
    GUICtrlCreateLabel("Endschalter Links",610,200)
    $EndschalterLinks = GUICtrlCreateLabel(" ",750,200,15,15)
    GUICtrlSetBkColor ($EndschalterLinks, 0xff4040 )
    GUICtrlCreateLabel("Endschalter Rechts",610,230)
    $EndschalterRechts = GUICtrlCreateLabel(" ",750,230,15,15)
    GUICtrlSetBkColor ($EndschalterRechts, 0xff4040 )
    GUICtrlCreateLabel("Endschalter Oben",610,260)
    $EndschalterOben = GUICtrlCreateLabel(" ",750,260,15,15)
    GUICtrlSetBkColor ($EndschalterOben, 0xff4040 )
    GUICtrlCreateLabel("Endschalter Unten",610,290)
    $EndschalterUnten = GUICtrlCreateLabel(" ",750,290,15,15)
    GUICtrlSetBkColor ($EndschalterUnten, 0xff4040 )
    GUICtrlCreateLabel("Endschalter Vorn",610,320)
    $EndschalterVorn = GUICtrlCreateLabel(" ",750,320,15,15)
    GUICtrlSetBkColor ($EndschalterVorn, 0xff4040 )
    GUICtrlCreateLabel("Endschalter Hinten",610,350)
    $EndschalterHinten = GUICtrlCreateLabel(" ",750,350,15,15)
    GUICtrlSetBkColor ($EndschalterHinten, 0xff4040 )

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

    $Exit = GUICtrlCreateButton("Maschine ausschalten <ESC>",50,590,200,20)
    $Referenzieren = GUICtrlCreateButton("Referenzieren",50,620,200,20)
    $Grundeinstellungen_Aendern = GUICtrlCreateButton("Grundeinstellungen ändern",50,650,200,20)
    #EndRegion GUI

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

    Grundeinstellungen_Lesen()

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

    Sleep(1000)

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

    #Region Hauptprogramm
    While 1
    GUICtrlSetData($Status,"Referenzpunkt nicht angefahren")
    ReadLPTPortPins()
    While 1
    ReadLPTPortPins()
    If $In0 = 0 Then ExitLoop ;Notaus
    Sleep(10)
    $msg = GUIGetMsg()
    Select
    Case $msg = $Grundeinstellungen_Aendern
    If InputBox("Grundeinstellungen","Bitte Kennwort eingeben","","*") = $Systempasswort Then Grundeinstellungen_Aendern()
    Case $msg = $Start
    Start()
    Case $msg = $Referenzieren
    Referenzieren()
    case $msg = $Exit
    _Exit()
    Case $msg = $PausenTaste
    Pause()
    EndSelect
    WEnd
    ;Im Not-Aus-Fall - Alles abschalten und Meldung erzeugen
    $Out2 = 0
    $Out3 = 0
    $Out4 = 0
    $Out5 = 0
    $Out6 = 0
    $Out7 = 0
    SetLPTPortPins()
    GUICtrlSetData($Status,"Not-Aus durch Überwachungsrelais oder Bediener"& @lf &"Bitte Not-Aus aufheben und OK drücken")
    MSGBox(16,"Fehler","Not-Aus durch Überwachungsrelais oder Bediener"& @lf &"Bitte Not-Aus aufheben und OK drücken")
    Sleep(500)
    WEnd
    #EndRegion Hauptprogramm

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

    Func Grundeinstellungen_Lesen()
    $Regfehler = 0
    $ParallelPort = RegRead($RegSchluessel,"ParallelPort")
    If @error <>0 Then $Regfehler = 1
    $ReferenzMass = RegRead($RegSchluessel,"Referenzmass")
    If @error <>0 Then $Regfehler = 1
    $Gewindesteigung = RegRead($RegSchluessel,"Gewindesteigung")
    If @error <>0 Then $Regfehler = 1
    $SchritteProUmdrehung = RegRead($RegSchluessel,"SchritteProUmdrehung")
    If @error <>0 Then $Regfehler = 1
    $AchsUmkehrSpiel = RegRead($RegSchluessel,"AchsUmkehrSpiel")
    If @error <>0 Then $Regfehler = 1
    $Systempasswort = RegRead($RegSchluessel,"Systempasswort")
    If @error <>0 Then $Regfehler = 1
    ;If $Regfehler = 0 Then MSGBox(0,"Bestätigung","Einstellungen gelesen",3)
    If $Regfehler = 1 Then MSGBox(16,"System-Fehler","Fehler beim Lesen aus Windows Registrierung-DB")
    EndFunc

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

    Func Grundeinstellungen_Aendern()
    $GES = GUICtrlCreateGroup("Grundeinstellungen",10,250,250,250)

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

    GUICtrlCreateLabel("Par.-Port-Adresse.:",20,290,150)
    $PP = GUICtrlCreateInput($ParallelPort,150,290,80)
    GUICtrlCreateLabel("Ref.-Mass:",20,320,150)
    $RM = GUICtrlCreateInput($ReferenzMass,150,320,80)
    GUICtrlCreateLabel("Gewindesteigung:",20,350,150)
    $GS = GUICtrlCreateInput($Gewindesteigung,150,350,80)
    GUICtrlCreateLabel("Schritte pro Umdrehung:",20,380,150)
    $SPU = GUICtrlCreateInput($SchritteProUmdrehung,150,380,80)
    GUICtrlCreateLabel("Achsumkehrspiel",20,410,150)
    $AUS = GUICtrlCreateInput($AchsUmkehrSpiel,150,410,80)
    GUICtrlCreateLabel("Systempasswort",20,440,150)
    $SP = GUICtrlCreateInput($Systempasswort,150,440,80)
    $Speichern = GUICtrlCreateButton("Einstellungen speichern",20,470,230)
    While 1
    Sleep(10)
    $msg = GUIGetMsg()
    Select
    Case $msg = $Speichern
    Grundeinstellungen_Speichern()
    ExitLoop
    Case $msg = $Grundeinstellungen_Aendern Or $msg = $Start Or $msg = $Referenzieren
    MSGBox(0,"Fehler","Bitte erst Speichern",3)
    EndSelect
    WEnd
    EndFunc

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

    Func Grundeinstellungen_Speichern()
    $Regfehler = 0
    $ParallelPort = GUICtrlRead($PP)
    If @error <>0 Then $Regfehler = 1
    $ReferenzMass = GUICtrlRead($RM)
    If @error <>0 Then $Regfehler = 1
    $Gewindesteigung = GUICtrlRead($GS)
    If @error <>0 Then $Regfehler = 1
    $SchritteProUmdrehung = GUICtrlRead($SPU)
    If @error <>0 Then $Regfehler = 1
    $AchsUmkehrSpiel = GUICtrlRead($AUS)
    If @error <>0 Then $Regfehler = 1
    $Systempasswort = GUICtrlRead($SP)
    If @error <>0 Then $Regfehler = 1
    RegWrite($RegSchluessel,"ParallelPort","REG_SZ",$ParallelPort)
    If @error <>0 Then $Regfehler = 1
    RegWrite($RegSchluessel,"Referenzmass","REG_SZ",$Referenzmass)
    If @error <>0 Then $Regfehler = 1
    RegWrite($RegSchluessel,"Gewindesteigung","REG_SZ",$Gewindesteigung)
    If @error <>0 Then $Regfehler = 1
    RegWrite($RegSchluessel,"SchritteProUmdrehung","REG_SZ",$SchritteProUmdrehung)
    If @error <>0 Then $Regfehler = 1
    RegWrite($RegSchluessel,"AchsUmkehrSpiel","REG_SZ",$AchsUmkehrSpiel)
    If @error <>0 Then $Regfehler = 1
    RegWrite($RegSchluessel,"Systempasswort","REG_SZ",$Systempasswort)
    If @error <>0 Then $Regfehler = 1
    If $Regfehler = 0 Then
    $del = $GES
    Do ;Group Grundeinstellungen wieder entfernen
    GUICtrlDelete($del)
    $del = $del + 1
    Until $del = $Speichern+1
    MSGBox(0,"Bestätigung","Einstellungen gespeichert",3)
    EndIf
    If $Regfehler = 1 Then MSGBox(16,"System-Fehler","Fehler beim Schreiben in Windows Registrierung-DB")

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

    EndFunc

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

    Func Start()
    If Not $ReferenzierenAbgeschlossen Then
    MSGBox(16,"Fehler","Referenzpunkt nicht angefahren!")
    Else
    $Laufzeit = TimerInit()
    GUICtrlSetData($Fortschrittsbalken,0)
    $Speed = GUICtrlRead($Slider)
    $LaengstischOption = GUICtrlRead($Laengstisch)
    $AnzahlSchnitte = GUICtrlRead($AnzahlSchnitteInput)
    $SchnitteAbsolviert = 0
    $SchnittAbstand = GUICtrlRead($SchnittAbstandInput)
    $SchnittBreite = GUICtrlRead($SchnittBreiteInput)
    $StartPosition = GUICtrlRead($StartPositionInput)
    GUICtrlSetData($Status,"Startposition wird angefahren...")
    If $StartPosition < $AktuellesMass Then
    FahreNachLinks($StartPosition)
    Else
    FahreNachRechts($StartPosition)
    EndIf

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

    Do
    If $In0 = 0 Then ExitLoop ;Notaus
    GUICtrlSetData($Status,"Bearbeite Schnitt " & " " & $SchnitteAbsolviert + 1 & " " & "von" & " " & $AnzahlSchnitte & "...")
    $Out7 = 1 ;Werkzeug Ein
    SetLPTPortPins()
    Do
    If $In0 = 0 Then ExitLoop ;Notaus
    $Out2 = 1 ;Wippe Hoch 1
    SetLPTPortPins()
    Sleep(500)
    ReadLPTPortPins()
    Until $In1 = 1 ;Endschalter Oben
    If $LaengstischOption = 1 Then
    Do
    If $In0 = 0 Then ExitLoop ;Notaus
    $Out2 = 0 ;Wippe Hoch 0
    $Out4 = 1 ;Tisch Nach Vorn 1
    SetLPTPortPins()
    Sleep(500)
    ReadLPTPortPins()
    Until $In4 = 1 ;Endschalter Vorn
    EndIf
    Do
    If $In0 = 0 Then ExitLoop ;Notaus
    $Out4 = 0 ;Tisch Nach Vorn 0
    $Out3 = 1 ;Wippe Runter 1
    SetLPTPortPins()
    Sleep(500)
    Until $In2 = 1 ;Endschalter Unten
    If $LaengstischOption = 1 Then
    Do
    If $In0 = 0 Then ExitLoop ;Notaus
    $Out3 = 0 ;Wippe Runter 0
    $Out5 = 1 ;Tisch Nach Hinten 1
    SetLPTPortPins()
    Sleep(500)
    Until $In3 = 1 ;Endschalter Hinten
    EndIf
    Do
    If $In0 = 0 Then ExitLoop ;Notaus
    $Out5 = 0 ;Tisch Nach Hinten 0
    $Out2 = 1 ;Wippe Hoch 1
    SetLPTPortPins()
    Sleep(500)
    ReadLPTPortPins()
    Until $In1 = 1 ;Endschalter Oben
    $StartPosition = $StartPosition + $Schnittabstand + $SchnittBreite
    $SchnitteAbsolviert = $SchnitteAbsolviert + 1
    If $SchnitteAbsolviert < $AnzahlSchnitte Then FahreNachRechts($StartPosition)
    GUICtrlSetData($Fortschrittsbalken,($SchnitteAbsolviert/$AnzahlSchnitte*100))
    If $In0 = 0 Then ExitLoop ;Notaus
    Until $SchnitteAbsolviert = $AnzahlSchnitte
    $Laufzeit = TimerDiff($Laufzeit)
    GUICtrlSetData($Status,"Bearbeitung abgeschlossen!"& @lf & $AnzahlSchnitte & " Schnitte" &" in " & Round($Laufzeit/1000/60,0) & " Minuten" )
    $Out2 = 0
    $Out3 = 0
    $Out4 = 0
    $Out5 = 0
    $Out6 = 0
    $Out7 = 0
    SetLPTPortPins()
    EndIf
    EndFunc

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

    Func FahreNachLinks($Zielmass)
    $MoveStart = $AktuellesMass
    Do
    ReadLPTPortPins()
    If $In0 = 0 Then ExitLoop ;Notaus
    MotorDrehenLinks()
    If $Zielmass - $AktuellesMass < 1 Then $Beschleunigung = 3 / ($Zielmass-$AktuellesMass)
    If $AktuellesMass - $MoveStart < 1 Then $Beschleunigung = 3 / ($Zielmass-$AktuellesMass)
    If $Beschleunigung < 3 Then $Beschleunigung = 5
    If $Beschleunigung > 200 Then $Beschleunigung = 100
    Sleep($Beschleunigung)
    Until $AktuellesMass <= $Zielmass - $AchsUmkehrSpiel/2
    EndFunc

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

    Func FahreNachRechts($Zielmass)
    $MoveStart = $AktuellesMass
    Do
    ReadLPTPortPins()
    If $In0 = 0 Then ExitLoop;Notaus
    MotorDrehenRechts()
    If $Zielmass - $AktuellesMass < 1 Then $Beschleunigung = 3 / ($Zielmass-$AktuellesMass)
    If $AktuellesMass - $MoveStart < 1 Then $Beschleunigung = 3 / ($Zielmass-$AktuellesMass)
    If $Beschleunigung < 3 Then $Beschleunigung = 5
    If $Beschleunigung > 200 Then $Beschleunigung = 100
    Sleep($Beschleunigung)
    Until $AktuellesMass >= $Zielmass + $AchsUmkehrSpiel/2
    EndFunc

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

    Func MotorDrehenLinks()
    $AktuelleMotorStellung = $AktuelleMotorStellung - 1
    If $AktuelleMotorStellung <=0 Then $AktuelleMotorStellung = $SchritteProUmdrehung
    $AktuellesMass = $AktuellesMass-($Gewindesteigung*(1/$SchritteProUmdrehung))
    $AktuelleEndstufen = $AktuelleEndstufen -1
    If $AktuelleEndstufen < 1 Then $AktuelleEndstufen = 4
    Select
    Case $AktuelleEndstufen = 1
    $Out0 = 0
    $Out1 = 0
    Case $AktuelleEndstufen = 2
    $Out0 = 1
    $Out1 = 0
    Case $AktuelleEndstufen = 3
    $Out0 = 1
    $Out1 = 1
    Case $AktuelleEndstufen = 4
    $Out0 = 0
    $Out1 = 1
    EndSelect
    SetLPTPortPins()
    GUICtrlSetData($AktuellesMassLabel,Round($AktuellesMass,4)& " mm")
    EndFunc

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

    Func MotorDrehenRechts()
    $AktuelleMotorStellung = $AktuelleMotorStellung + 1
    If $AktuelleMotorStellung >$SchritteProUmdrehung Then $AktuelleMotorStellung = 1
    $AktuellesMass = $AktuellesMass+($Gewindesteigung*(1/$SchritteProUmdrehung))
    $AktuelleEndstufen = $AktuelleEndstufen +1
    If $AktuelleEndstufen > 4 Then $AktuelleEndstufen = 1
    Select
    Case $AktuelleEndstufen = 1
    $Out0 = 0
    $Out1 = 0
    Case $AktuelleEndstufen = 2
    $Out0 = 1
    $Out1 = 0
    Case $AktuelleEndstufen = 3
    $Out0 = 1
    $Out1 = 1
    Case $AktuelleEndstufen = 4
    $Out0 = 0
    $Out1 = 1
    EndSelect
    SetLPTPortPins()
    GUICtrlSetData($AktuellesMassLabel,Round($AktuellesMass,4)& " mm")
    EndFunc

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

    Func Referenzieren()
    GUICtrlSetData($Status,"Referenzpunkt wird angefahren...")
    While $In5=0 ;Endschalter Links
    If $In0 = 0 Then ExitLoop ;Notaus
    ReadLPTPortPins()
    MotorDrehenLinks()
    Sleep(50)
    WEnd
    While $In5=1 ;Endschalter Links
    If $In0 = 0 Then ExitLoop ;Notaus
    ReadLPTPortPins()
    MotorDrehenRechts()
    Sleep(50)
    WEnd
    While $In5=0 ;Endschalter Links
    If $In0 = 0 Then ExitLoop ;Notaus
    ReadLPTPortPins()
    MotorDrehenLinks()
    Sleep(50)
    $AktuellesMass = $ReferenzMass
    $ReferenzierenAbgeschlossen = 1
    GUICtrlSetData($Status,"Referenzieren abgeschlossen!" & @lf & "Bereit zur Bearbeitung")
    WEnd
    If $In0=1 Then
    $AktuellesMass = $ReferenzMass
    $ReferenzierenAbgeschlossen = 1
    GUICtrlSetData($Status,"Referenzieren abgeschlossen!" & @lf & "Bereit zur Bearbeitung")
    EndIf
    EndFunc

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

    Func SetLPTPortPins()
    ;Convert bits to BCD
    $BCD = 0
    If $Out0 = 1 Then $BCD = $BCD + 1
    If $Out1 = 1 Then $BCD = $BCD + 2
    If $Out2 = 1 Then $BCD = $BCD + 4
    If $Out3 = 1 Then $BCD = $BCD + 8
    If $Out4 = 1 Then $BCD = $BCD + 16
    If $Out5 = 1 Then $BCD = $BCD + 32
    If $Out6 = 1 Then $BCD = $BCD + 64
    If $Out7 = 1 Then $BCD = $BCD + 128
    ;pass the call to inpout32.dll
    DllCall( $DLL, "int", "Out32", "int", $ParallelPort, "int", $BCD)
    EndFunc

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

    Func ReadLPTPortPins()
    $BCD = DllCall( $DLL, "short", "Inp32", "short", $ParallelPort)
    $In = _DezToBin($BCD[0])
    $In0 = $In[0]
    $In1 = $In[1]
    $In2 = $In[2]
    $In3 = $In[3]
    $In4 = $In[4]
    $In5 = $In[5]
    $In6 = $In[6]
    $In7 = $In[7]

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

    If $In1 = 0 Then GUICtrlSetBkColor ($EndschalterOben, $Aus )
    If $In1 = 1 Then GUICtrlSetBkColor ($EndschalterOben, $An )
    If $In2 = 0 Then GUICtrlSetBkColor ($EndschalterUnten, $Aus )
    If $In2 = 1 Then GUICtrlSetBkColor ($EndschalterUnten, $An )
    If $In3 = 0 Then GUICtrlSetBkColor ($EndschalterHinten, $Aus )
    If $In3 = 1 Then GUICtrlSetBkColor ($EndschalterHinten, $An )
    If $In4 = 0 Then GUICtrlSetBkColor ($EndschalterVorn, $Aus )
    If $In4 = 1 Then GUICtrlSetBkColor ($EndschalterVorn, $An )
    If $In5 = 0 Then GUICtrlSetBkColor ($EndschalterLinks, $Aus )
    If $In5 = 1 Then GUICtrlSetBkColor ($EndschalterLinks, $An )
    If $In6 = 0 Then GUICtrlSetBkColor ($EndschalterRechts, $Aus )
    If $In6 = 1 Then GUICtrlSetBkColor ($EndschalterRechts, $An )

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

    ;ToolTip($In[0]&$In[1]&$In[2]&$In[3]&$In[4]&$In[5]&$In[6]&$In[7])
    ;Überbrückungen
    ;$In0 = 1 ;Notaus
    ;$In1 = 1 ;Endschalter Oben
    ;$In2 = 1 ;Endschalter Unten
    ;$In3 = 1 ;Endschalter Hinten
    ;$In4 = 1 ;Endschalter Vorn
    ;$In5 = 1 ;Endschalter Links
    ;$In6 = 1 ;Endschalter Rechts
    ;$In7 = 1
    EndFunc

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

    Func _DezToBin($query)
    DIM $return_array[8]
    If $query - 128 > -1 Then
    $return_array[7] = 1
    $query = $query - 128
    Else
    $return_array[7] = 0
    EndIf
    If $query - 64 > -1 Then
    $return_array[6] = 1
    $query = $query - 64
    Else
    $return_array[6] = 0
    EndIf
    If $query - 32 > -1 Then
    $return_array[5] = 1
    $query = $query - 32
    Else
    $return_array[5] = 0
    EndIf
    If $query- 16 > -1 Then
    $return_array[4] = 1
    $query = $query - 16
    Else
    $return_array[4] = 0
    EndIf
    If $query - 8 > -1 Then
    $return_array[3] = 1
    $query = $query - 8
    Else
    $return_array[3]=0
    EndIf
    If $query - 4 > -1 Then
    $return_array[2] = 1
    $query = $query - 4
    Else
    $return_array[2] = 0
    EndIf
    If $query - 2 > -1 Then
    $return_array[1] = 1
    $query = $query - 2
    Else
    $return_array[1] = 0
    EndIf
    If $query - 1 > -1 Then
    $return_array[0] = 1
    $query = $query - 1
    Else
    $return_array[0] = 0
    EndIf
    Return $return_array
    EndFunc

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

    Func _Exit()
    DllClose($DLL)
    If MsgBox(4,"Programm wird geschlossen","Soll der Rechner heruntergefahren werden?",10) = 6 Then Run('shutdown -s -t 5 -c "Maschine wird ausgeschaltet"')
    Exit
    EndFunc

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

    Func Pause()
    $Pause = NOT $Pause
    While $Pause
    sleep(100)

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

    WEnd
    ToolTip("")
    EndFunc

    [/autoit]
  • InPout32.dll

    • Chrischn
    • 31. August 2009 um 15:56
    Zitat von progandy

    Lies mal das: http://www.codeproject.com/KB/vb/PortAccess.aspx?msg=2233623
    Du kannst aber nur die 8 Pins aus dem Datenregister und die 4 Pins aus dem Control Register verwenden. Die 5 aus dem Status Register kannst du nicht schalten, sondern nur auslesen. (Hab ich jedenfalls so verstanden)
    Wenn dein Datenreigster die Adresse 0x378 hat, müsste das Controlregister die Adresse 0x27A sein.

    I thank you soo much!!!
    Das war denke ich 100% die Antwort auf meine Fragen..
    Danke!!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™