Seite 1 von 1
Ton als Morsezeichen ausgeben mit Tastendruck.
Verfasst: 26.04.2011 12:35
von funkheld
Hallo, nach länge eines Tastendruckes möchte ich ein Ton ausgeben (Morsezeichen-Ton).
Irgendwie finde ich keinen Anfang, wie ich mich mit den Soundbefehlen einen Ton ausgebe, der so lang ist, wie ich die Taste festhalte.
Wer kann helfen?
Danke.
gruss
Re: Ton als Morsezeichen ausgeben mit Tastendruck.
Verfasst: 26.04.2011 13:02
von STARGÅTE
Den Ton selbst musst du selbst erstellen (zB mit Audacity, Sin-Schwingung)
Dann kannst du diese Sound-Datei in PB einladen und mit PlaySound() wiedergeben, wenn die Taste gedrückt wird.
Wird die Taste losgelassen brichst du den Sound mit StopSound() ab.
PlaySound dabei als Schleife abspielen lassen.
Re: Ton als Morsezeichen ausgeben mit Tastendruck.
Verfasst: 26.04.2011 15:00
von funkheld
Hmmm., wie wird denn eine Taste immer abgefragt ob sie gedrückt ist oder losgelassen wird?
Wenn ich sie einmal drücke, wird ja der Ton abgespielt, ich habe den Finger aber immer noch auf diese Taste, wird der Ton immer wieder neu abgespielt ?
Es gibt ja lange Töne und kurze.
gruss
Re: Ton als Morsezeichen ausgeben mit Tastendruck.
Verfasst: 26.04.2011 15:10
von RSBasic
Wo möchtest du abfragen, ob z.B. die linke Maustaste gedrückt wurde?
In einem Screen?
Code: Alles auswählen
EnableExplicit
InitSprite()
InitMouse()
InitKeyboard()
If OpenScreen(1024,768,32,"Screen")
SetFrameRate(60)
Repeat
FlipBuffers()
ClearScreen(RGB(0,0,0))
ExamineKeyboard()
ExamineMouse()
If MouseButton(#PB_MouseButton_Left)=1
If StartDrawing(ScreenOutput())
DrawText(350,350,"Linke Maustaste wird gerade gedrückt.",RGB(200,200,255),0)
StopDrawing()
EndIf
EndIf
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
ForEver
EndIf
Oder in einem Fenster?
Code: Alles auswählen
EnableExplicit
Procedure WindowCallback(Windowid,Message,wParam,lParam)
Protected Result
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_LBUTTONDOWN
Debug "Linke Maustaste wird gerade gedrückt."
Case #WM_LBUTTONUP
Debug "Linke Maustaste wurde losgelassen."
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowCallback(@WindowCallback())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Ton als Morsezeichen ausgeben mit Tastendruck.
Verfasst: 26.04.2011 15:21
von funkheld
Jup, danke.
Kann ich auch noch gut verwenden.
Ich wollte die A-Taste nehmen zum Morsen.
Gruss
Re: Ton als Morsezeichen ausgeben mit Tastendruck.
Verfasst: 26.04.2011 15:29
von RSBasic
In einem Screen:
Code: Alles auswählen
EnableExplicit
InitSprite()
InitMouse()
InitKeyboard()
If OpenScreen(1024,768,32,"Screen")
SetFrameRate(60)
Repeat
FlipBuffers()
ClearScreen(RGB(0,0,0))
ExamineKeyboard()
ExamineMouse()
If KeyboardPushed(#PB_Key_A)
If StartDrawing(ScreenOutput())
DrawText(350,350,"A-Taste wird gerade gedrückt.",RGB(200,200,255),0)
StopDrawing()
EndIf
EndIf
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
ForEver
EndIf
Allgemein z.B. in einem Fenster:
Code: Alles auswählen
If GetAsyncKeyState_(#VK_A)
Debug "A-Taste wird gerade gedrückt."
EndIf