Mehrere Funktionen gleichzeitig ausführen

    • [ offen ]

      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


      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-Quellcode

      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


      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

    autoit.de Webutation