ich versuche schon stundenlang verzweifelt, eine Procedure mittels der Thred Funktion aufzurufen.
Jedesmal stürzt das Programm dabei ab, was mache ich falsch ?
Unter Select TT_Z Case 1 versuche ich, die Procedure TT_Transmit_1() aufzurufen, in welcher ich eine
Wave-Datei aufrufen möchte und dann eine Schleife mache. Schon beim CatchSound(1,?TON1) stürzt das
Programm ab... hm (Mist)
Ich poste 'mal meinen Code:
Code: Alles auswählen
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
UseFLACSoundDecoder()
UseOGGSoundDecoder()
IncludeFile "ELF_Window.pb"
Declare TT_Transmit_1()
Declare TT_Transmit_2(time2.l)
Declare TT_Transmit_3(time3.l)
Procedure TT_Transmit_1()
Protected Startzeit.l, Endezeit.l, Zwischenzeit.l
CatchSound(1,?TON1)
PlaySound(1,#PB_Sound_Loop)
SoundFrequency(1,44100/82*ValF(GetGadgetText(#String_0)));Die daten aus den Gadgets holen
;Die Anfangszeit in Sekunden setzen
Startzeit = Date()
Repeat
Zwischenzeit = Date()-Startzeit
Until (Zwischenzeit-Startzeit) >= time1
StopSound(1)
EndProcedure
Procedure TT_Transmit_2(time2.l)
EndProcedure
Procedure TT_Transmit_3(time3.l)
EndProcedure
Open_Window_0()
SetGadgetText(#Text_1,"Make Your arrangements")
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Button_1: End; Programm beenden OK!!!
;*********** Senden der Testtöne **************
ElseIf GadgetID = #Button_3 ;Senden
;Wieviel Frequenzen sind gefordert, 1,2 oder 3 Frequenzen ?
If GetGadgetText(#String_0)=""
SetGadgetText(#Text_1,"No frequency is quoted")
Goto weiter
Else
TT_Z=1
If GetGadgetText(#String_1)<>""
TT_Z = TT_Z+1
If GetGadgetText(#String_2)<>""
TT_Z = TT_Z+1
EndIf
EndIf
EndIf
Select TT_Z
Case 1
SetGadgetText(#Text_1,"Test tone transmitting on "+GetGadgetText(#String_0)+" Hz ( wait )")
TT_thread_1.l = CreateThread(@TT_Transmit_1(),Val(GetGadgetText(#String_0))) ;Die Zeitdauer wird mitgeliefert
Case 2:SetGadgetText(#Text_1,"Test tone transmitting on "+GetGadgetText(#String_0)+" Hz, "+GetGadgetText(#String_1)+" Hz ( wait )")
TT_thread_1.l = CreateThread(@TT_Transmit_1(),Val(GetGadgetText(#String_3)))
TT_thread_2.l = CreateThread(@TT_Transmit_2(),Val(GetGadgetText(#String_4)))
Case 3:SetGadgetText(#Text_1,"Test tone transmitting on "+GetGadgetText(#String_0)+" Hz, "+GetGadgetText(#String_1)+" Hz, "+GetGadgetText(#String_2)+" Hz ( wait )")
TT_thread_1.l = CreateThread(@TT_Transmit_1(),Val(GetGadgetText(#String_3)))
TT_thread_2.l = CreateThread(@TT_Transmit_2(),Val(GetGadgetText(#String_4)))
TT_thread_3.l = CreateThread(@TT_Transmit_3(),Val(GetGadgetText(#String_2)))
EndSelect
weiter:
;********************************************
ElseIf GadgetID = #Button_2
ElseIf GadgetID = #Image_0
ElseIf GadgetID = #ListIcon_0
ElseIf GadgetID = #Button_4
ElseIf GadgetID = #Button_5
ElseIf GadgetID = #Button_6
ElseIf GadgetID = #String_6
ElseIf GadgetID = #Combo_0
ElseIf GadgetID = #Combo_1
ElseIf GadgetID = #Combo_2
ElseIf GadgetID = #Button_7
ElseIf GadgetID = #Button_8
ElseIf GadgetID = #Button_9
ElseIf GadgetID = #Combo_3
ElseIf GadgetID = #Button_10
ElseIf GadgetID = #String_7
ElseIf GadgetID = #ListIcon_1
ElseIf GadgetID = #Button_11
ElseIf GadgetID = #Image_1
ElseIf GadgetID = #String_8
ElseIf GadgetID = #Button_12
ElseIf GadgetID = #Button_13
ElseIf GadgetID = #Button_14
ElseIf GadgetID = #String_9
ElseIf GadgetID = #Combo_4
ElseIf GadgetID = #Combo_5
ElseIf GadgetID = #Image_3
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;Anhang der Wave-Files
DataSection
TON1: IncludeBinary "TON1.wav"
