

Achtung der Code ist offensichtlich nicht ausführbar, da ich die serielle Schnittstelle benutze.
Folgend der Code zum Verständnis in dem ich die Variable verwende(manipuliere).
Eine Prozedur zum Auswählen des Comports (die Variable Event ist zwar Protected aber man kann ja nie wissen):
Code: Alles auswählen
Procedure.s selectComport()
Protected Event, GadgetID, COMPORT$, EXIT, i
If OpenWindow(#WINDOW_SELECT,#PB_Ignore,#PB_Ignore,230,60,"Select Comport",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
ComboBoxGadget(#COMBO_BOX , 10, 30,130, 20,#PB_ComboBox_UpperCase)
ButtonGadget(#SELECTButton,150, 30, 70, 20,"Select")
TextGadget(#SELECTText , 10, 10,190, 20,"Select the available comport:",#PB_Text_Right)
EndIf
For i=2 To 100
If ReadFile(0,"COM"+Str(i)+":") ; try to read the comport i
AddGadgetItem(#COMBO_BOX,-1,"COM"+Str(i)) ; add available COM to combobox
CloseFile(0) ; close comport
EndIf
Next
SetGadgetState(#COMBO_BOX,0)
Repeat
Event = WaitWindowEvent()
GadgetID = EventGadget()
Select Event
Case #PB_Event_Gadget
If GadgetID = #COMBO_BOX
ElseIf GadgetID = #SELECTButton
COMPORT$ = GetGadgetText(#COMBO_BOX)
CloseWindow(#WINDOW_SELECT)
ProcedureReturn COMPORT$
EndIf
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
End
EndProcedure
Die Main-Loop:
Code: Alles auswählen
Define n, StartTime, Event, EventGadget, EXIT
StartTime = ElapsedMilliseconds()
Repeat ; eventloop
Event = WaitWindowEvent(10)
EventGadget = EventGadget()
Result = AvailableSerialPortInput(SerPort)
Select Event
Case #Null ; timeout
SetGadgetText(#CAN_MESSAGERECBYTESString,Str(Result)) ; number of received bytes
If Result > 7 ; filtering garbage
receiveCANMessage()
EndIf
Case #PB_Event_Gadget
handleButtons(EventGadget)
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
closeCAN(SendBuffer())
CloseSerialPort(SerPort)
DisableExplicit
End

Der Debugger zeigt mir für die Konstante #PB_Event_Gadget den Wert 332C an und genau dieser Wert ist auch in meiner Event-Variablen enthalten obwohl ich keinen Button betätige oder auch nur die Maus bewege. Merkwürdigerweise wechselt die Variable Event alternierend zwischen den Werten 0(=#Null) und 332C(=#PB_Event_Gadget) nach jedem Schleifendurchlauf. Stehe für Rückfragen bereit und hoffe auf eine Lösung für dieses Problem.
Gruss alDo