Seite 2 von 4
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 13:43
von ts-soft
? so auf dem ersten blick würde dort ja die Gadgets selektieren!
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 14:02
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
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 14:27
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
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 14:37
von ts-soft
Steuerzeichen bis $1F mußte ausfiltern! Sind nicht darstellbar. $8 z.B. ist ein BackSpace.
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 14:45
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...
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 15:18
von ts-soft
Dann benutze mal den Datentyp .a statt .b
Bytes in PB gehen von -128 - +127
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 15:22
von alDo
Naja die Arrays sind Strings und beim Empfang der Daten über die serielle Schnittstelle arbeite ich schon mit .a

Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 15:37
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.
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 02.03.2010 19:04
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.
Re: WaitWindowEvent erhält nicht ausgelöste Events
Verfasst: 03.03.2010 11:33
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