Icon: Installation der Version 9.5.20i

  • Hallo zusammen,


    für das aktuelle Projekt (Monitoring mehrerer Reinräume in einem Pharma-Gebäudekomplex, Einbindung von Sensoren zur Reinraum-Überwachung, Erstellung von Sensor-Bibliotheken) habe ich testweise mal wieder einen Raspberry Pi 4B, einen TFT-Touch-Screen, eine Kiste mit Sensoren und kilometerweise Strippen bekommen.

    Da es sich um eine graphische Anwendlung handeln wird, habe ich einen RPi 4B aufgesetzt, der ohne Passwort-Abfrage in die GUI startet.


    Da die Wahl der Mittel (Programmiersprache) nicht vorgegeben war, habe ich Icon ins Gespräch gebracht. Dem Auftraggeber ist es einen schnellen Versuch wert.


    Bei der Installation von Icon bin ich allerdings gleich stecken geblieben. Die Vorgehensweise gegenüber #7 muss leicht abgeändert werden, da es eine NEUE Version der Programmiersprache Icon gibt. Aus Icon 9.5.1 wurde 9.5.20i und steht auif GitHub zur Verfügung. Vielen Dank, Gregg!


    1 Download


    Code
    wget https://github.com/gtownsend/icon/archive/master.zip


    2 Entpacken

    Dateimanager starten und die Datei /home/pi/Downloads/icon-master.zip doppelklicken.

    Die Option "Alle Dateien" auswählen

    Die Option "Mit vollständigem Pfad entpacken" aktivieren

    Die Schaltfläche "entpacken" anklicken


    Das Ergebnis steht in /home/pi/Downloads/icon-master


    3 Vorbereitung

    Code
    cd /home/pi/Downloads/icon-master
    cp -v -r icon-master/* /home/pi/icon9_520

    geht in das entpackte Downloads-Verzeichnis "icon-master", kopiert dessen Inhalt in das spätere Arbeitsverzeichnis in /home/pi/icon9_520i

    4 Konfiguration


    Code
    sudo apt-get install build-essential libx11-dev libxt-dev libxaw7-dev
    cd /home/pi/icon9_520i/config
    cp -v -r linux RaspberryPi
    cd RaspberryPi
    sudo nano define.h
    sudo nano status

    Installiert einen Satz an Entwicklungsdateien nach, geht ins config-Verzeichnis, kopiert einen Satz an Konfigurationsdateien von "linux" in ein neues Verzeichnis "RaspberryPi", springt ins frisch erzeugte RaspberryPi-Verzeichnis,


    define.h soll folgenden Inhalt bekommen:

    Code
    /*
    * Icon configuration file for RaspberryPi system with X windows
    */
    
    
    #define UNIX 1
    #define RaspberryPi 1
    #define LoadFunc

    Speichern und in obiger Liste fortfahren...



    Die Datei "status" könnte so aussehen:

    Einklimpern / anpassen, speichern und weiter


    5 glibc-Problematik

    Vielen Dank an Cheyenne!

    Aus Gründen grenzenloser Faulheit habe ich mir jetzt nicht mehr die Mühe gemacht, um festzustellen, ob in der aktuellen Version von gcc (8.3.0) immer noch der glibc-Fehler enthalten ist, der es verhindert, dass die Datei fpoll.c in die Liste der "shared objects" übernommen wird. Bei entsprechender Aktivierung kann man von Icon aus Objektdateien anderer Programmiersprachen nutzen und kommunizieren (siehe Icon-Tutorials #30, #31 und #32)

    Ich habe einfach die Datei "fpoll.c" mit der Version, die Cheyenne bereitgestellt hat, ersetzt.


    Download-Link


    Code
    cd /home/pi/icon9_51/ipl/cfuncs
    mv fpoll.c fpoll_old.c
    mv /home/pi/Downloads/fpoll_new.c fpoll.c


    6 Erstellen des Icon-Systems

    Die folgenden Schritte dauern unterschiedlich lange ... Übt Euch in Geduld!

    Code
    cd ../..
    make Status name=RaspberryPi
    make X-Configure name=RaspberryPi
    make X-Configure=RaspberryPi
    make status=RaspberryPi
    make Icont
    make Samples
    make Test
    make Benchmark

    Wichtig ist, dass hier etliche Protokollzeilen ausgegeben werden - Warnungen oder Fehler dürfen nicht erscheinen!

    7 Umgebungsvariablen setzen

    Nach

    Code
    sudo nano /home/pi/.bashrc

    folgende Zeilen an das Ende hängen (zunächst)



    8 Neustart

    Code
    sudo reboot


    9 Tests

    Code
    cd /home/pi/icon9_520i/bin

    Wir geben zwei Dateien ein und versuchen sie zum Laufen zu bringen.


    Code
    sudo nano hallo.icn
    sudo hello_window.icn



    In hallo.icn wird folgender Code eingeklimpert:

    Code
    procedure main()
           write("Hallo, Ihr da draussen!")
    end


    In hello_window.icn wird dieser Code eingeklimpert:

    Code
    link graphics
    
    
    procedure main()
           WOpen("label=Mein 1. Icon-Fenster","font=sans,20")
          
           Notice("Hallo, Ihr da draußen!")
           WDelay(5000)
           WClose()
    end


    Die Programme werden compiliert durch icont programmname_ohne_icn. Sollte der Quellcode nicht so prickelnd gewesen sein: Korrigieren


    Die Programme werden nach dem Compilieren gestartet durch programmname_ohne_icn


    Wenn man etwas mehr Selbstvertrauen gewonnen hat, kann man auch mit einem Kommando Compilieren und Starten: icont programmname_ohne_icn -x


    Und wenn das Programm vorliegt kann man es auch mit dem Interpreter starten: iconx programmname_ohne_icn


    Tiefgründigere Einsichten, Optimierungen inkl. Einsteigslink in die Icon-Tutorials gibt es im berühmten Link #7, also hier.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited 2 times, last by Andreas ().

  • Hallo Linus,


    vielen Dank für Deine Rückmeldung. Da hat sich bei der Übertragung ein "e" von archiv ==> archive verdünnisiert.


    Ist oben korrigiert.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.