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