WaitWindowEvent erhält nicht ausgelöste Events

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von ts-soft »

Code: Alles auswählen

    Case #PB_Event_Gadget
      Select EventWindow
? so auf dem ersten blick würde dort ja die Gadgets selektieren!
Little John

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von Little John »

alDo hat geschrieben:Mein Ziel wäre es nun das kleine Auswahlfenster sticky zu machen und so den Zugriff auf das Grosse zu unterbinden
In Ergänzung zu den Antworten die schon gegeben wurden ist hier ein fertiges Beispiel für ein modales Fenster.

Gruß, Little John
alDo
Beiträge: 41
Registriert: 28.01.2010 16:50
Wohnort: Hannover

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von alDo »

@ ts-soft Bringt allerdings genausowenig trotzdem Danke

Übrigens kann einer von euch damit etwas anfangen?
x<
Noch so ein Problemchen in meinem Prog. Dazu noch etwas mehr Info: Ich fülle ein Shared StringArray in einer Prozedur auf. In einer anderen Prozedur gebe ich die Arrays auf StringGadgets aus. Sonst fasse ich die Arrays nicht an. Normalerweise sind in dem Array Strings in folgender Form gespeichert: "0F"|"BA"|"BE"|"08". Also immer zwei Hex-Werte. Wenn ich jetzt auf den Button klicke, der für die Anzeige verantwotlich ist, werden diese auch korrekt angezeigt. Bei erneutem klicken erhalte ich in manchen Stringgadgets dies hier:x<. Ich verlange jetzt von niemandem hier, dass er seine Glaskugel auspackt und eine Lösung parat hat. Kann es sein , dass der String x< auf Probleme mit der Speicherverwaltung hinweist?

@ John danke, aber das mit dem Fenster funktioniert so ganz gut
OS: Windows XP
PB: 4.40 (x86)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von ts-soft »

Steuerzeichen bis $1F mußte ausfiltern! Sind nicht darstellbar. $8 z.B. ist ein BackSpace.
alDo
Beiträge: 41
Registriert: 28.01.2010 16:50
Wohnort: Hannover

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von alDo »

Ich will ja gar keine Steuerzeichen o.ä. ausgeben. Nur Hex-Werte. Obwohl ich das Array nur fülle und ausgebe werden die Werte im Array verändert. Auch wenn ich in dem Main Programm versuche diese auszugeben sind einige Werte schon so merkwürdig. Aber direkt in der Proc in der ich das Array initialisiere ist alles wie gewollt...
OS: Windows XP
PB: 4.40 (x86)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von ts-soft »

Dann benutze mal den Datentyp .a statt .b
Bytes in PB gehen von -128 - +127
alDo
Beiträge: 41
Registriert: 28.01.2010 16:50
Wohnort: Hannover

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von alDo »

Naja die Arrays sind Strings und beim Empfang der Daten über die serielle Schnittstelle arbeite ich schon mit .a :wink:
OS: Windows XP
PB: 4.40 (x86)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von ts-soft »

Hat es was mit UTF-8 zu tun?

Aber jetzt stochere ich immer tiefer im dunkeln, solange Du keine Taschenlampe
bringst, werde ich Dir nicht weiterhelfen können.
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von HeX0R »

Da du offensichtlich eh alle möglichen Werte erhältst,
wieso speicherst du das Empfangene nicht gleich in einem MemoryBlock?

Diese Bytes bei der Ausgabe in Hex-Strings umzuändern ist ja dann auch nur ein Klacks
und du schubst nicht soviele Strings hin und her.
alDo hat geschrieben:dass der String x< auf Probleme mit der Speicherverwaltung hinweist?
Das deutet auf Probleme mit deiner Stringverwaltung hin.
alDo
Beiträge: 41
Registriert: 28.01.2010 16:50
Wohnort: Hannover

Re: WaitWindowEvent erhält nicht ausgelöste Events

Beitrag von alDo »

Was genau meinst du mit MemoryBlock? Habe schon ein Array welches die korrekten Daten enthält. Nur bei der Verwendung dieses Arrays ausserhalb der Initialisierungsprozedur ändern sich einige Werte. Also meinst du ich sollte im Programm erst bei der Ausgabe die Werte in Hex-Strings umwandeln?

@ first Topic
Der Grund dafür dass meine 'Event' Variable den Wert für die Konstante #PB_Event_Gadget enthält ist die Funktion SetGadgetText in meinem Timeout. Wenn ich diese auskommentiere enthält die Variable nur die Null (wenn Maus unbewegt) wie gewöhnlich. Jetzt frage ich mich wo ich diesen Aufruf positionieren soll, da ich ständig das StringGadget aktualisieren muss. Zeitgesteuert, denke ich, ist nachteilhaft, da ich im Millisekunden Bereich arbeite und ich gelesen habe, dass die Timerfunktionen recht ungenau sind. Vielleicht habt ihr ein paar Ideen wie ich es realisieren kann.
Meine aktuelle Eventschleife:

Code: Alles auswählen

createSelectWindow()
StartTime = ElapsedMilliseconds()
Repeat                                                         ; eventloop
  Event = WaitWindowEvent(10)
  EventWindow = EventWindow()
  EventGadget = EventGadget()
  Debug Event
  Select Event
    
    Case #Null                                                 ; timeout
      
      If WindowMain
        Result = AvailableSerialPortInput(SerPort)
        SetGadgetText(#CAN_MESSAGERECBYTESString,Str(Result))  ; number of received bytes
        If Result > 7                                          ; filtering garbage
          receiveCANMessage()
        EndIf
      Else
        For n=2 To 100
          If ReadFile(0,"COM"+Str(n)+":")                ; try to read the comport n
            AddGadgetItem(#COMBO_BOX,-1,"COM"+Str(n))    ; add available COM to combobox
            CloseFile(0)                                 ; close comport
          EndIf
        Next
        SetGadgetState(#COMBO_BOX,0)
      EndIf
      
    Case #PB_Event_Gadget
      Select EventWindow
        
        Case #WINDOW_MAIN
          handleButtons(EventGadget)
        
        Case #WINDOW_SELECT
          If EventGadget = #SELECTButton
            COMPORT$ = GetGadgetText(#COMBO_BOX)
            CloseWindow(#WINDOW_SELECT)
            initCAN(COMPORT$)
            createMainWindow()
            WindowMain   = #True
          EndIf
          
      EndSelect
      
    Case #PB_Event_CloseWindow
      If EventWindow = #WINDOW_MAIN
        closeCAN(SendBuffer())
        CloseSerialPort(SerPort)
      EndIf
      EXIT = 1
      
  EndSelect
  
Until EXIT
DisableExplicit
End
OS: Windows XP
PB: 4.40 (x86)
Antworten