Website als Grafische Oberfläche

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Website als Grafische Oberfläche

Beitrag von The_Dark_Zim-.- »

Hey ho,
da ich so nichts finden konnte, was richtig scheint, frage ich einfach mal direkt :)
Ich habe mir für ein Projekt überlegt, das ich eine Software schreiben möchte, wo die Benutzeroberfläche eine Website ist. Dabei wird die Software, die ich mit PureBasic schreiben möchte, auf verschiedene Schnittstellen (RS232/485) zugreifen und Daten wie Temperatur und Druck auslesen. Die Darstellung der Daten soll dabei dann über eine Website geschehen. Das ganze möchte ich aus dem einfachen Grund machen, da ich mit CSS viel schönere Designs schaffen kann und ich mir eine Oberfläche erstellen will, die sich an das Google Material Design hält. Plattform unabhängig ist es dann ja auch (Windows/Linux/Android usw.)

Nun zu meinem Problem. Mit dem Web kram habe ich sehr wenig Erfahrung und somit keine Ahnung, wie ich die PureBasic Anwendung mit der Website verknüpfen kann. Die Seite soll ja nicht Statisch sein, sondern die Temperatur z. B. jede Sekunde aktualisieren und grafisch schön darstellen. Beispielsweise in einem Graphen. Da ich die Daten aber nicht verlieren will, werde ich diese denke ich in einer Datenbank halten.
Also kurz gesagt, wie bekomme ich es hin, das eine Website meine Software anspricht um diese zu steuern und Daten zu beziehen?

Mit freundlichem Gruß
Zim
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Website als Grafische Oberfläche

Beitrag von RSBasic »

Guten Morgen,

vor einiger Zeit gab es einen ähnlichen Thread. Dort wurde schon alles diskutiert über die Vor- und Nachteile (mehr Nachteile, als Vorteile) und was man dafür verwenden kann, was nicht und welche Probleme entstehen können: http://www.purebasic.fr/german/viewtopi ... =3&t=30329
The_Dark_Zim-.- hat geschrieben:Das ganze möchte ich aus dem einfachen Grund machen, da ich mit CSS viel schönere Designs schaffen kann und ich mir eine Oberfläche erstellen will, die sich an das Google Material Design hält.
Mit PB kannst du auch schönere Designs erstellen und die Möglichkeit zum Zeichnen von eigenen Controls mit Events hast du mit CanvasGadget.
Da musst du nicht unbedingt auf HTML und CSS ausweichen.
Außerdem wenn du es über WebGadget machen möchtest, kannst du mit dem Standard-IE (IE 7 oder 8 ) im WebGadget keine schöne Designs erstellen. Es wird kein CSS3 unterstützt und du kannst beispielsweise kein border-radius o.ä. verwenden.
Da müsste deine Anwendung unter Windows immer was in die Registry schreiben, um Windows zu sagen, dass dein WebGadget die aktuelle IE-Version verwenden darf.
Dazu kommen noch weitere Anpassungen, um beispielsweise den Klick-Sound beim Neuladen zu unterbinden. Lohnt sich der Aufwand überhaupt?
The_Dark_Zim-.- hat geschrieben:Plattform unabhängig ist es dann ja auch (Windows/Linux/Android usw.)
CanvasGadget ist es auch (zwar kein Android, aber Windows, Linux und MacOS) und du musst keine extra Schnittstelle bauen oder zuerst dafür sorgen, dass dein WebGadget ordentlich funktioniert.

Wie ich auch in dem anderen Thread geschrieben habe, bin ich kein Freund von Workarounds. Kostet nur unnötig Zeit und Stress, wenn man sich nicht damit auskennt.
Das reine Anzeigen von Seiten (z.B. Hilfeseiten, weitere Informationen) kann man zwar WebGadget problemlos verwenden, aber wenn es ein Ersatz einer Benutzeroberfläche oder eines Controls sein soll, dann ist die Vorgehensweise meiner Meinung nach suboptimal.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Re: Website als Grafische Oberfläche

Beitrag von The_Dark_Zim-.- »

Den Thread werde ich mir mal durchlesen. Vielen dank schon einmal :)

Ich war bereits dabei mit Canvas einige Controls zu bauen. Leider kann man damit aber nicht alles machen, da z. B. unter Linux nicht bestimmt werden kann, welches Gadget als erstes und welches als letztes gezeichnet werden soll. Dadurch kommt es in der Regel dazu, das es flackert oder komplett durcheinander ist :(
Ich versuche heute abend mal ein Beispiel dafür bereit zu stellen.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Website als Grafische Oberfläche

Beitrag von STARGÅTE »

Ich möchte noch mal was klären:

Du hast (bereits) ein PureBasic-Programm mit dem du über RS232/485 irgendwelche Daten ließt.
Nun möchtest du ein UserInterface erstelen, was auf einem anderen Gerät angezeit werden soll (Handy, Laptop u.ä.), richtig?

Ich hätte jetzt nämlich gesagt, dass du in deinem PureBasic-Programm einfach noch n http-Schnittstelle über die Network-Befehle erstellst, damit man von beliebigen Orten auf das Programm zugreifen kann und z.B. über das http-Protokoll die Daten lesen kann.

Ein Beispiel gibt es ja in PureBasic selbst: "Atomic Web Server in PureBasic"
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Website als Grafische Oberfläche

Beitrag von NicTheQuick »

Du kannst Purebasic als reine Serveranwendung benutzen, die gar nichts anzeigt, sondern nur als Service dient. Dieser könnte dann zum Beispiel auf Port 8080 lauschen und dann kannst du im lokalen Browser die Seite http://localhost:8080 öffnen und siehst dein Interface. Natürlich steckt da viel mehr dahinter, denn du müsstest die komplette Serverseite schreiben, die HTML, CSS und JS ausliefert, falls das hier nicht schon irgendwer anders getan hat. Aber auf diese Weise könntest du sogar dein Smartphone nutzen um deine Schnittstellen am PC, auf dem der Service läuft, zu steuern.

@RSBasic: Welche Klickgeräusche meinst du eigentlich? Ich kenne keinen Browser, der klickt. :mrgreen:
Bild
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Re: Website als Grafische Oberfläche

Beitrag von The_Dark_Zim-.- »

@Stargate genau, ich will von anderen Geräten darauf zugreifen können. Es würde halt dazu führen, das ich nur eine Anwendung schreibe und dann auf den Plattformen Desktop und Mobil(Tablet/Smartphone) alles habe, ohne Unterschiede und Installation einer Anwendung auf dem Client. :) ich guck mir also mal den Atomic Server an.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Website als Grafische Oberfläche

Beitrag von TroaX »

Wenn ich das richtig verstanden habe, willst du eine Webanwendung schreiben, mit der du Daten über die Serielle Schnittstelle anfragen bzw. Geräte darüber steuern kannst. Dazu würde ich FastCGI verwenden und garnicht erst mit dem Atomic anfangen. Ein Webserver bekommste schon mit 1 - 5 MB und FastCGI im Netz (Hiawatha, NginX, Lighttpd etc.). Schau mal in meine Signatur. Da habe ich was gebastelt, das dir die Arbeit damit erleichtert ;)
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Re: Website als Grafische Oberfläche

Beitrag von The_Dark_Zim-.- »

Aber sind CGI Anwendungen nicht Anwendungen, welche nach dem Aufrufen direkt wieder beendet werden? Ich brauche aber eine Anwendung die dauerhaft läuft.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Website als Grafische Oberfläche

Beitrag von NicTheQuick »

Ja, bei CGI ist das so, aber nicht bei FastCGI. Die laufen normalerweise dauerhaft.
Bild
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Website als Grafische Oberfläche

Beitrag von TroaX »

Genau so ist es. Sie laufen dauerhaft. Genau das gleiche gilt für den Webserver. Du kannst im Grunde die Anwendung ganz normal starten, innerhalb dieser den FastCGI-Server betreiben und mit RunProgramm() den Webserver gleich mitstarten. So ersparst du dir das eigene implementieren eines Webservers. Denn der Atomic ist nur ein Webserver mit klassischem Filemapping, welches zu dem keine Daten aus der Seite verarbeiten kann. FastCGI hingegen kann das ganze problemlos. Ich selbst habe auch schon versucht, einen vollwertigen Webserver zu schreiben. Das ist schon etwas fummelig, bis man das ganze mit nahezu allen Statuscodes etc. drinne hat. Da bleib ich lieber bei FastCGI :lol:
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Antworten