Nun hat mich doch die Lust gepackt, das ganze mal umzusetzen. PC-seitig wird dieser Code zum Testen laufen:
Code: Alles auswählen
Enumeration
#MainWindow
#BTN_Quit
#BTN_Connect
#BTN_Disconnect
#TB_Red
#TB_Green
#TB_Blue
#STR_Output
#Port
#CB_Port
EndEnumeration
Procedure Ausgabe (r, g, b, c)
Output.s = "R"+RSet(Str(r), 3, "0")+"G"+RSet(Str(g), 3, "0")+"B"+RSet(Str(b), 3, "0")+"E"
SetGadgetText (#STR_Output, Output)
If StartDrawing (WindowOutput (#MainWindow))
Box (130, 20, 80, 80, RGB(r, g, b))
StopDrawing ()
EndIf
If c=1
WriteSerialPortString (#Port, Output)
EndIf
EndProcedure
ProgramName.s = "RGB-Control"
OpenWindow (#MainWindow, #PB_Any, PB_Any, 230, 300, ProgramName.s)
ButtonGadget (#BTN_Quit, 120, 270, 100, 20, "Ende")
ButtonGadget (#BTN_Connect, 120, 200, 100, 20, "Verbinden")
ButtonGadget (#BTN_Disconnect, 120, 225, 100, 20, "Trennen")
DisableGadget (#BTN_Disconnect, 1)
TrackBarGadget (#TB_Red, 20, 10, 20, 255, 0, 255, #PB_TrackBar_Vertical)
TrackBarGadget (#TB_Green, 50, 10, 20, 255, 0, 255, #PB_TrackBar_Vertical)
TrackBarGadget (#TB_Blue, 80, 10, 20, 255, 0, 255, #PB_TrackBar_Vertical)
StringGadget (#STR_Output, 10, 270, 100, 20, "")
ComboBoxGadget(#CB_Port, 120, 175, 100, 20)
For i = 1 To 20
If OpenSerialPort (#Port, "COM"+Str(i), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 64, 64)
AddGadgetItem(#CB_Port, -1,"COM" + Str(i))
CloseSerialPort (#Port)
EndIf
Next
SetGadgetState (#CB_Port, 0) ; Voreinstellung für seriellen Port
Repeat
Event = WaitWindowEvent (10)
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case #BTN_Quit
Quit=1
Case #BTN_Connect
If OpenSerialPort (#Port, GetGadgetText (#CB_Port), 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 64, 64)
connect = 1
DisableGadget (#BTN_Connect, 1)
DisableGadget (#CB_Port, 1)
DisableGadget (#BTN_Disconnect, 0)
EndIf
Case #BTN_Disconnect
connect = 0
DisableGadget (#BTN_Connect, 0)
DisableGadget (#CB_Port, 0)
DisableGadget (#BTN_Disconnect, 1)
CloseSerialPort (#Port)
Case #TB_Red
ValueRed=GetGadgetState (#TB_Red)
Case #TB_Green
ValueGreen=GetGadgetState (#TB_Green)
Case #TB_Blue
ValueBlue=GetGadgetState (#TB_Blue)
EndSelect
EndIf
Ausgabe (ValueRed, ValueGreen, ValueBlue, Connect)
Until Quit