Mehrere Funktionen gleichzeitig ausführen

  • Mehrere Funktionen gleichzeitig ausführen

    Folgendes Problem habe ich:

    Folgendes Script habe ich schon gebaut, funktioniert auch bis auf eine Kleinigkeit

    Wenn die Variable $DF00 = 2 oder 3 soll alle 500ms bzw. 250ms der String $Rel_1_T an den seriellen port gesendet werden.

    Aber irgend etwas will da nicht.

    Hier mein Script:

    Quellcode

    1. #include "Func_Serial.au3"
    2. ;Alle Konstanten müssen angepasst werden!
    3. ;Gemäss Spezifikationen der Karte!
    4. Global Const $ComPort = 3
    5. Global Const $Baudrate = 19200
    6. Global Const $Bits = 8
    7. Global Const $Parity = 0
    8. Global Const $Stop = 0
    9. Global Const $Rts = 1
    10. ;A= Aus, E= Ein, T= Toggle
    11. Global Const $Init = String(Chr(1)&Chr(1)&Chr(1)&Chr(1))
    12. Global Const $Alle_E = String(Chr(3)&Chr(1)&Chr(255)&Chr(253))
    13. Global Const $Alle_A = String(Chr(3)&Chr(1)&Chr(0)&Chr(2))
    14. Global Const $Rel_1_E = String(Chr(6)&Chr(1)&Chr(1)&Chr(6))
    15. Global Const $Rel_1_A = String(Chr(7)&Chr(1)&Chr(1)&Chr(7))
    16. Global Const $Rel_1_T = String(Chr(8)&Chr(1)&Chr(1)&Chr(8))
    17. Global Const $Rel_2_E = String(Chr(6)&Chr(1)&Chr(2)&Chr(5))
    18. Global Const $Rel_2_A = String(Chr(7)&Chr(1)&Chr(2)&Chr(4))
    19. Global Const $Rel_2_T = String(Chr(8)&Chr(1)&Chr(2)&Chr(11))
    20. Global $SendPort = _OpenCOMPort($ComPort, $Baudrate, $Bits, $Parity, $Stop, $Rts)
    21. if $SendPort = -1 Then
    22. MsgBox(16, "FEHLER", "Schnittstelle Com" & $ComPort & " konnte nicht geöffnet werden!")
    23. Exit
    24. EndIf
    25. _SendSerialString($SendPort, $Init)
    26. Sleep(250)
    27. _SendSerialString($SendPort, $Rel_1_E)
    28. Sleep(250)
    29. _SendSerialString($SendPort, $Rel_2_E)
    30. Sleep(250)
    31. _SendSerialString($SendPort, $Rel_1_A)
    32. Sleep(250)
    33. _SendSerialString($SendPort, $Rel_2_A)
    34. MsgBox(0,"INIT", "INIT ABGESCHLOSSEN", 5)
    35. OnAutoItExitRegister("Ende")
    36. Func Rel_1_T();Blinken
    37. _SendSerialString($SendPort, $Rel_1_T)
    38. EndFunc
    39. While 1
    40. ;Player1
    41. $DF0 = FileOpen("C:\DF_0.txt",0)
    42. $DF00 = FileReadLine($DF0,1)
    43. If $DF00 = "1" Then ;Wiedergabe
    44. AdlibUnRegister("Rel_1_T")
    45. _SendSerialString($SendPort, $Rel_1_E)
    46. ElseIf $DF00 = "0" Then ;Stop
    47. AdlibUnRegister("Rel_1_T")
    48. _SendSerialString($SendPort, $Rel_1_A)
    49. ElseIf $DF00 = "2" Then ;EOF
    50. AdlibRegister("Rel_1_T",500)
    51. ElseIf $DF00 = "3" Then ;FADE
    52. AdlibRegister("Rel_1_T",250)
    53. EndIf
    54. FileClose($DF0)
    55. ;Player2
    56. $DF1 = FileOpen("C:\DF_1.txt",0)
    57. $DF01 = FileReadLine($DF1,1)
    58. If $DF01 = "1" Then
    59. _SendSerialString($SendPort, $Rel_2_E)
    60. ElseIf $DF01 = "0" Then
    61. _SendSerialString($SendPort, $Rel_2_A)
    62. EndIf
    63. FileClose($DF1)
    64. WEnd
    65. Func Ende()
    66. FileClose($DF0)
    67. FileClose($DF1)
    68. _CloseCOMPort($SendPort)
    69. EndFunc
    Alles anzeigen


    Danke euch schon mal
  • Was genau funktioniert denn nicht? Ich hab leider nicht die Möglichkeit dein Script zu testen, also musst du schon eine genauere Problembeschreibung zur Verfügung stellen.
    Hast du schon versucht mit MsgBoxen die Stelle zu finden, an der das Script möglicherweise nicht ausgeführt wird?
  • ich hoffe ich habe es richtig verstanden...

    Spoiler anzeigen

    AutoIt

    1. #include "Func_Serial.au3"
    2. Global $bToggle = False
    3. ;Alle Konstanten müssen angepasst werden!
    4. ;Gemäss Spezifikationen der Karte!
    5. Global Const $ComPort = 3
    6. Global Const $Baudrate = 19200
    7. Global Const $Bits = 8
    8. Global Const $Parity = 0
    9. Global Const $Stop = 0
    10. Global Const $Rts = 1
    11. ;A= Aus, E= Ein, T= Toggle
    12. Global Const $Init = String(Chr(1) & Chr(1) & Chr(1) & Chr(1))
    13. Global Const $Alle_E = String(Chr(3) & Chr(1) & Chr(255) & Chr(253))
    14. Global Const $Alle_A = String(Chr(3) & Chr(1) & Chr(0) & Chr(2))
    15. Global Const $Rel_1_E = String(Chr(6) & Chr(1) & Chr(1) & Chr(6))
    16. Global Const $Rel_1_A = String(Chr(7) & Chr(1) & Chr(1) & Chr(7))
    17. Global Const $Rel_1_T = String(Chr(8) & Chr(1) & Chr(1) & Chr(8))
    18. Global Const $Rel_2_E = String(Chr(6) & Chr(1) & Chr(2) & Chr(5))
    19. Global Const $Rel_2_A = String(Chr(7) & Chr(1) & Chr(2) & Chr(4))
    20. Global Const $Rel_2_T = String(Chr(8) & Chr(1) & Chr(2) & Chr(11))
    21. Global $SendPort = _OpenCOMPort($ComPort, $Baudrate, $Bits, $Parity, $Stop, $Rts)
    22. If $SendPort = -1 Then
    23. MsgBox(16, "FEHLER", "Schnittstelle Com" & $ComPort & " konnte nicht geöffnet werden!")
    24. Exit
    25. EndIf
    26. _SendSerialString($SendPort, $Init)
    27. Sleep(250)
    28. _SendSerialString($SendPort, $Rel_1_E)
    29. Sleep(250)
    30. _SendSerialString($SendPort, $Rel_2_E)
    31. Sleep(250)
    32. _SendSerialString($SendPort, $Rel_1_A)
    33. Sleep(250)
    34. _SendSerialString($SendPort, $Rel_2_A)
    35. MsgBox(0, "INIT", "INIT ABGESCHLOSSEN", 5)
    36. OnAutoItExitRegister("Ende")
    37. Func Rel_1_T();Blinken
    38. _SendSerialString($SendPort, $Rel_1_T)
    39. EndFunc ;==>Rel_1_T
    40. While 1
    41. ;Player1
    42. $DF0 = FileOpen("C:\DF_0.txt", 0)
    43. $DF00 = FileReadLine($DF0, 1)
    44. If $DF00 = "1" Then ;Wiedergabe
    45. If $bToggle = True Then
    46. AdlibUnRegister("Rel_1_T")
    47. $bToggle = False
    48. EndIf
    49. _SendSerialString($SendPort, $Rel_1_E)
    50. ElseIf $DF00 = "0" Then ;Stop
    51. If $bToggle = True Then
    52. AdlibUnRegister("Rel_1_T")
    53. $bToggle = False
    54. EndIf
    55. _SendSerialString($SendPort, $Rel_1_A)
    56. ElseIf $DF00 = "2" Then ;EOF
    57. AdlibRegister("Toggle", 500)
    58. ElseIf $DF00 = "3" Then ;FADE
    59. AdlibRegister("Toggle", 250)
    60. EndIf
    61. FileClose($DF0)
    62. ;Player2
    63. $DF1 = FileOpen("C:\DF_1.txt", 0)
    64. $DF01 = FileReadLine($DF1, 1)
    65. If $DF01 = "1" Then
    66. _SendSerialString($SendPort, $Rel_2_E)
    67. ElseIf $DF01 = "0" Then
    68. _SendSerialString($SendPort, $Rel_2_A)
    69. EndIf
    70. FileClose($DF1)
    71. WEnd
    72. Func Ende()
    73. FileClose($DF0)
    74. FileClose($DF1)
    75. _CloseCOMPort($SendPort)
    76. EndFunc ;==>Ende
    77. Func Toggle()
    78. _SendSerialString($SendPort, $Rel_1_T)
    79. $bToggle = True
    80. EndFunc ;==>Toggle
    Alles anzeigen


    mit AdlibRegister muss man funktionen aufrufen ;)
    Gibt nichts zu gucken hier!
    Geh weiter ;D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Alizame () aus folgendem Grund: sry, hab vergessen Com-port wieder auf 3 zu setzen

Webutation