Seite 1 von 1

Website als Grafische Oberfläche

Verfasst: 24.10.2017 22:58
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

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 09:04
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.

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 09:44
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.

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 09:44
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"

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 09:48
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:

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 13:20
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.

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 14:03
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 ;)

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 15:27
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.

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 15:29
von NicTheQuick
Ja, bei CGI ist das so, aber nicht bei FastCGI. Die laufen normalerweise dauerhaft.

Re: Website als Grafische Oberfläche

Verfasst: 25.10.2017 16:41
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: