mit einem ESP32 (https://www.espressif.com/en/products/s ... 2/overview) und der Firmware ESP Easy (https://www.letscontrolit.com/wiki/inde ... le=ESPEasy) lese ich die Raumtemperatur aus. Der Sensor ist ein HDC1080, aber das nur am Rande.
Nun wollte ich gerne diese Daten per WLAN (per UDP) auf einen beliebigen Computer senden und dort anzeigen lassen. Da ich ja -Ironie on- der geborene Programmierer bin -Ironie off- habe ich mir ein kleines Programm erstellt welches diese Aufgabe erledigt. Im Endeffekt soll es ja Spaß machen.
Die Software läuft auf einem MAC und ich vermute auf Windows sollte das auch funktionieren. Allerdings habe ich das nicht getestet.
Konstruktive Vorschläge zur Verbesserung sind sehr willkommen. Bashing wird nach >/dev/null befördert.
Mir ist klar das dieses Programm kein Masterpice ist. Aber wenn ich mir die aktuellen Beispiele auf http://www.PureArea.net ansehe (ich mag diese Seite sehr) sind diese extrem alt und funktionieren teilweise nicht mehr mit der aktuellen PB Version. Vielleicht kann ein einfaches Programm wie dieses dem einen oder anderen eine Starthilfe geben.
Gruß Christian
Code: Alles auswählen
EnableExplicit
Define param = 0
Define EventID = 0
Define Quit = 0
Global Info$, T$, H$, Window_0, Button_0, String_0, Text_0, String_1, Text_1
Enumeration FormFont
#Font_Window_0_0
EndEnumeration
LoadFont(#Font_Window_0_0,".SF NS", 14)
Procedure OpenWindow_0(x = 0, y = 0, width = 400, height = 180)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "Thermometer", #PB_Window_SystemMenu)
Button_0 = ButtonGadget(#PB_Any, 280, 124, 100, 25, "Quit")
String_0 = StringGadget(#PB_Any, 140, 42, 70, 25, "")
SetGadgetFont(String_0, FontID(#Font_Window_0_0))
Text_0 = TextGadget(#PB_Any, 50, 44, 80, 25, "Temperatur")
String_1 = StringGadget(#PB_Any, 140, 120, 70, 25, "")
SetGadgetFont(String_1, FontID(#Font_Window_0_0))
Text_1 = TextGadget(#PB_Any, 50, 123, 80, 25, "Luftfeuchte")
SetWindowColor(Window_0, RGB(27,159,186))
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
Procedure server(param)
Define *buffer = 0
Define server = 0
Define size = 0
Define param = 0
*buffer = AllocateMemory(2048)
server = CreateNetworkServer(0, 6600, #PB_Network_UDP)
If *buffer And server
Repeat
Delay(200)
If NetworkServerEvent() = #PB_NetworkEvent_Data
size = ReceiveNetworkData(EventClient(),*buffer,2048)
Info$ = (PeekS(*buffer,size,#PB_Ascii))
If Left(Info$,11) = "Temperature"
T$=Right(Info$,4)
EndIf
If Left(Info$,8) = "Humidity"
H$=Right(Info$,4)
EndIf
EndIf
ForEver
EndIf
EndProcedure
OpenWindow_0()
If InitNetwork()<>0
If CreateNetworkServer(0, 6600, #PB_Network_UDP)<>0
CreateThread(@server(), param)
EndIf
EndIf
Repeat
Delay(100)
EventID = WaitWindowEvent(50)
SetGadgetText(String_0, T$)
SetGadgetText(String_1, H$)
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
Case 3
Quit = 1
EndSelect
Until Quit = 1 Or EventID = #PB_Event_CloseWindow