Du bist nicht angemeldet.

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.10.2 (Q, H)
Beta: 3.3.11.4 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 08.04.2014 - 15:42 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »Rene_RNI« ist der Autor dieses Themas

Registrierungsdatum: 14. April 2011

  • Private Nachricht senden

1

Freitag, 13. April 2012, 00:16

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "Func_Serial.au3"



;Alle Konstanten müssen angepasst werden!
;Gemäss Spezifikationen der Karte!
Global Const $ComPort = 3
Global Const $Baudrate = 19200
Global Const $Bits = 8
Global Const $Parity = 0
Global Const $Stop = 0
Global Const $Rts = 1

;A= Aus, E= Ein, T= Toggle
Global Const $Init = String(Chr(1)&Chr(1)&Chr(1)&Chr(1))
Global Const $Alle_E = String(Chr(3)&Chr(1)&Chr(255)&Chr(253))
Global Const $Alle_A = String(Chr(3)&Chr(1)&Chr(0)&Chr(2))
Global Const $Rel_1_E = String(Chr(6)&Chr(1)&Chr(1)&Chr(6))
Global Const $Rel_1_A = String(Chr(7)&Chr(1)&Chr(1)&Chr(7))
Global Const $Rel_1_T = String(Chr(8)&Chr(1)&Chr(1)&Chr(8))
Global Const $Rel_2_E = String(Chr(6)&Chr(1)&Chr(2)&Chr(5))
Global Const $Rel_2_A = String(Chr(7)&Chr(1)&Chr(2)&Chr(4))
Global Const $Rel_2_T = String(Chr(8)&Chr(1)&Chr(2)&Chr(11))

Global $SendPort = _OpenCOMPort($ComPort, $Baudrate, $Bits, $Parity, $Stop, $Rts)
	if $SendPort = -1 Then
		MsgBox(16, "FEHLER", "Schnittstelle Com" & $ComPort & " konnte nicht geöffnet werden!")
		Exit
	EndIf

_SendSerialString($SendPort, $Init)
Sleep(250)
_SendSerialString($SendPort, $Rel_1_E)
Sleep(250)
_SendSerialString($SendPort, $Rel_2_E)
Sleep(250)
_SendSerialString($SendPort, $Rel_1_A)
Sleep(250)
_SendSerialString($SendPort, $Rel_2_A)
MsgBox(0,"INIT", "INIT ABGESCHLOSSEN", 5)

OnAutoItExitRegister("Ende")
Func Rel_1_T();Blinken
		_SendSerialString($SendPort, $Rel_1_T)
EndFunc

While 1
	;Player1
	$DF0 = FileOpen("C:\DF_0.txt",0)
	$DF00 = FileReadLine($DF0,1)

	If $DF00 = "1" Then ;Wiedergabe
		AdlibUnRegister("Rel_1_T")
		_SendSerialString($SendPort, $Rel_1_E)


	ElseIf $DF00 = "0" Then		;Stop
		AdlibUnRegister("Rel_1_T")
		_SendSerialString($SendPort, $Rel_1_A)

	ElseIf $DF00 = "2" Then ;EOF
		AdlibRegister("Rel_1_T",500)

	ElseIf $DF00 = "3" Then ;FADE
		AdlibRegister("Rel_1_T",250)

	EndIf
	FileClose($DF0)

	;Player2
	$DF1 = FileOpen("C:\DF_1.txt",0)
	$DF01 = FileReadLine($DF1,1)

	If $DF01 = "1" Then
		_SendSerialString($SendPort, $Rel_2_E)

	ElseIf $DF01 = "0" Then
		_SendSerialString($SendPort, $Rel_2_A)

	EndIf
	FileClose($DF1)

WEnd
Func Ende()
	FileClose($DF0)
	FileClose($DF1)
	_CloseCOMPort($SendPort)
EndFunc


Danke euch schon mal

name22

Incognito

Registrierungsdatum: 28. Dezember 2009

Wohnort: Baden Württemberg

Beruf: Lehreralptraum

  • Private Nachricht senden

2

Freitag, 13. April 2012, 17:25

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?

AutoIt

MyPastebin

Registrierungsdatum: 27. März 2010

Beruf: Schüler >.<

  • Private Nachricht senden

3

Freitag, 13. April 2012, 17:46

ich hoffe ich habe es richtig verstanden...

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "Func_Serial.au3"

Global $bToggle = False

;Alle Konstanten müssen angepasst werden!
;Gemäss Spezifikationen der Karte!
Global Const $ComPort = 3
Global Const $Baudrate = 19200
Global Const $Bits = 8
Global Const $Parity = 0
Global Const $Stop = 0
Global Const $Rts = 1

;A= Aus, E= Ein, T= Toggle
Global Const $Init = String(Chr(1) & Chr(1) & Chr(1) & Chr(1))
Global Const $Alle_E = String(Chr(3) & Chr(1) & Chr(255) & Chr(253))
Global Const $Alle_A = String(Chr(3) & Chr(1) & Chr(0) & Chr(2))
Global Const $Rel_1_E = String(Chr(6) & Chr(1) & Chr(1) & Chr(6))
Global Const $Rel_1_A = String(Chr(7) & Chr(1) & Chr(1) & Chr(7))
Global Const $Rel_1_T = String(Chr(8) & Chr(1) & Chr(1) & Chr(8))
Global Const $Rel_2_E = String(Chr(6) & Chr(1) & Chr(2) & Chr(5))
Global Const $Rel_2_A = String(Chr(7) & Chr(1) & Chr(2) & Chr(4))
Global Const $Rel_2_T = String(Chr(8) & Chr(1) & Chr(2) & Chr(11))

Global $SendPort = _OpenCOMPort($ComPort, $Baudrate, $Bits, $Parity, $Stop, $Rts)
If $SendPort = -1 Then
    MsgBox(16, "FEHLER", "Schnittstelle Com" & $ComPort & " konnte nicht geöffnet werden!")
    Exit
EndIf

_SendSerialString($SendPort, $Init)
Sleep(250)
_SendSerialString($SendPort, $Rel_1_E)
Sleep(250)
_SendSerialString($SendPort, $Rel_2_E)
Sleep(250)
_SendSerialString($SendPort, $Rel_1_A)
Sleep(250)
_SendSerialString($SendPort, $Rel_2_A)
MsgBox(0, "INIT", "INIT ABGESCHLOSSEN", 5)

OnAutoItExitRegister("Ende")
Func Rel_1_T();Blinken
    _SendSerialString($SendPort, $Rel_1_T)
EndFunc   ;==>Rel_1_T

While 1
    ;Player1
    $DF0 = FileOpen("C:\DF_0.txt", 0)
    $DF00 = FileReadLine($DF0, 1)

    If $DF00 = "1" Then ;Wiedergabe
        If $bToggle = True Then
            AdlibUnRegister("Rel_1_T")
            $bToggle = False
        EndIf
        _SendSerialString($SendPort, $Rel_1_E)


    ElseIf $DF00 = "0" Then ;Stop
        If $bToggle = True Then
            AdlibUnRegister("Rel_1_T")
            $bToggle = False
        EndIf
        _SendSerialString($SendPort, $Rel_1_A)

    ElseIf $DF00 = "2" Then ;EOF
        AdlibRegister("Toggle", 500)

    ElseIf $DF00 = "3" Then ;FADE
        AdlibRegister("Toggle", 250)

    EndIf
    FileClose($DF0)

    ;Player2
    $DF1 = FileOpen("C:\DF_1.txt", 0)
    $DF01 = FileReadLine($DF1, 1)

    If $DF01 = "1" Then
        _SendSerialString($SendPort, $Rel_2_E)

    ElseIf $DF01 = "0" Then
        _SendSerialString($SendPort, $Rel_2_A)

    EndIf
    FileClose($DF1)

WEnd
Func Ende()
    FileClose($DF0)
    FileClose($DF1)
    _CloseCOMPort($SendPort)
EndFunc   ;==>Ende

Func Toggle()
    _SendSerialString($SendPort, $Rel_1_T)
    $bToggle = True
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« (13. April 2012, 17:55) aus folgendem Grund: sry, hab vergessen Com-port wieder auf 3 zu setzen


  • »Rene_RNI« ist der Autor dieses Themas

Registrierungsdatum: 14. April 2011

  • Private Nachricht senden

4

Freitag, 13. April 2012, 20:28

Fast würde ich mal sagen, Toggel ist nur wenn DF00 "2"oder "3" ist, wenn also 1 oder 2 ist, darf nicht getogglet werden.

Registrierungsdatum: 27. März 2010

Beruf: Schüler >.<

  • Private Nachricht senden

5

Freitag, 13. April 2012, 22:07

öhm, hö?
hab dein problem jetzt nicht ganz verstanden.
kann auch gerade nichts testen, weil ich nur beim laptop com port habe.
Gibt nichts zu gucken hier!
Geh weiter ;D

autoit.de Webutation