Posts by Andreas

    Hallo Hellprayer,

    Schön, das du Programmieren kannst. Dann besteht Aussicht auf Erfolg ;)


    ...


    Es lohnt sich auch, bei der Sensorauswahl zu schauen ob du für etwas mehr Geld einen fokussierteren bekommst, als nur die vom Grabbeltisch. Ich vermute mal das man je nach händigkeit den Kasten eh links oder rechts aufbaut, aber je weiter weg der Ball, desto breiter das Sichtfe, das ist ja Keulenförmig.

    Die gängigen HC-SR04 detektieren einen Winkel von +/- 15 ° also in Summe 30 °. Der/die Sensor/en wird/werden wohl nicht gerade minimal oberhalb des maximalen Durchmessers der Kugel angebracht sein, sondern ein paar Meter höher. Ob da noch eine "Auflösung" in der Art "auf der Bahn", "links daneben" oder "rechts daneben" möglich ist, möchte ich schon mal bezweifeln.


    Je fokussierter der Sensor (nach welcher Technik auch immer) arbeitet, umso zielbringender für das Projekt.


    Beste Grüße


    Andreas

    Hallo zusammen,


    bei der Suche nach was ganz Anderem bin ich der IPL auf die Datei pdco.icn gestoßen. Hierbei handelt es sich um eine Sammlung von 65 Funktionen, die als Co-Expressions diverse Aufgaben erledigen. Diese Aufgaben bestehen in der Umsetzung von binären Operatoren als Co-Expressions bis hin zu Datenauswertungen bzw. Aufbereitung in Form von Graphiken.


    Wer sich für diese Art der Programmierung interessiert, findet dort einige brauchbare Ideen.



    Beste Grüße


    Andreas

    Hallo __deets__,


    wenn ich mich richtig erinnere, haben ein paar Entwickler aus dem Icon-Umfeld Unicon als moderne Variante von Icon aus dem Quellcode von Icon abgeleitet und nette Erweiterungen aufgesetzt (z.B. 3D-Graphik mit netten Effekten). Das Projekt hatte verschiedene Namen gehabt - wurde letztlich aber als Unicon 10 freigegeben. Mittlerweile tüftelt man an Unicon 13.1.


    Damit ist dann auch die maximale Versionsnummer von Icon vorgegeben - es wird also niemals Icon 10 geben.



    Beste Grüße


    Andreas

    Hallo __deets__,


    huch, jetzt hätte ich nicht damit gerechnet, dass überhaupt jemand reagiert. Schließlich hatte ich keine Frage in den Raum gestellt sondern nur eine Beobachtung vorgestellt.


    Respekt(!) für Deine Links (auch wenn diese zunächst "nur" für die Programmiersprache Unicon gelten. Es gibt aber (nahezu) identische Dateien, die im gleichen Pfad auch bei Icon eingesetzt werden und somit Deine Aussagen bestätigen. :danke_ATDE:.



    Beste Grüße


    Andreas

    Hallo zusammen,


    letztens hatte ich mal mit Icon-Programmen auf einem RPi 4B, RPi Zero und einem Asus Tinkerboard experimentiert. Mich hatte interessiert, ob und falls ja, wie ich feststellen kann, ob z.B. der Governor bei der Bearbeitung eines Programms überhaupt aktiv wird - und ob ein simples Icon-Programm auf mehreren CPU-Kernen ausführbar gemacht werden kann.


    Tja, es geht.


    Die Beobachtung auf dem RPi Zero überrascht nicht: Die eine CPU wurde zu 100 % ausgelastet. Irgendwann war das Programm fertig und das Teil lief dann im Idle-Mode.


    Auf den anderen beiden Ein-Platinen-Rechnern war das Ergebnis (für mich) überraschender:

    Der Programm-Code, in dem linear Code abgearbeitet wird, eigentlich das gleiche Bild: Irgendeine CPU wird zu 100 % ausgelastet, die anderen dümpeln bei um die 2 % herum.

    Betritt das Programm aber den Bereich, in dem die Co-Expressions sich den Ball der Programmausführung alle naselang wechselseitig erneut zuspielen, werden plötzlich alle anderen (bislang nicht aktiven) CPU-Kerne aktiv.

    Werden mehrere dieser Programme gleichzeitig gestartet, lassen sich ebenfalls alle CPU-Kerne auf bis zu 100 % auslasten (OK, ist sinnfrei).



    Code folgt ...


    Code-Deutung:

    Zeile 3: Festlegung einer Schrittweite


    Zeile 7 - 16: Haupteintrittspunkt

    Zeile 8 - 10: Festlegung von drei Co-Expressions g, o und i mittels create. In Zeile 8 wird Co-Expression g als Generator (bla to blub) definiert. Hiermit wird einfach 0 bis 360 mit einer Schrittweite stepper (siehe Zeile 3) durchlaufen. Für die anderen beiden Co-Expressions werden eigene Funktionen verwendet.

    Zeile 12: lange Schleife, die nur dazu dient, dass z.B. über htop angezeigt wird, dass diese Schleife von einem einzigen Prozessorkern abgearbeitet wird. Der betroffene Kern ist dadurch gekennzeichnet, dass die CPU-Auslastung auf 100 % steigt.


    Zeile 15: Schleife, die der Reihe nach alle drei Co-Expressions abfragt und - falls denn Ergebnisse erzeugt werden können - ausgibt.


    Zeile 18 - 26: Definition der Co-Expression für co(). Nach Aufbereitung des Winkels wird letztlich der Cosinus berechnet.

    Zeile 28 - 35: dito si() zur Berechnung des Sinus.



    Wenn man dieses Programm laufen lässt, wird während der Abarbeitung der Zeile 12 nur ein Prozessor-Kern verwendet. Danach verteilt sich die CPU-Auslastung dynamisch auf bis zu 3 weiteren Kernen.



    Beste Grüße


    Andreas

    Hallo silverstar,


    aus reinem Interesse, ob und wie mein Tutorial aus dem Jahr 2013/2014 noch funktioniert.


    In den Abschnitten 29.18.2 und 29.18. 3 des Icon-Tutorials teil 29 ist ausführlich beschrieben, wie man einen Eintrag ins Applikationsmenü erzeugt und wie man daraus einen Desktop-Eintrag erzeugt. Das hat eben gerade auch auf einem RPi 4B funktioniert.


    Das Terminal-Programm dann allerdings zu füttern, um etwas bei dessen Start zu veranlassen, ist dann eine ganz andere Aufgabe, die sich durch

    Code
    man lxterminal

    einer baldigen Lösung zuführen lässt. Bereits die erste Option -e führt zum Ziel. Die Option --working-directory mag ja nach zu startender Anwendung noch erforderlich sein.



    Beste Grüße


    Andreas

    Hallo Ralf,


    sicherer wird es, wenn Du mit einem Programmierer der engeren Auswahl eine NDA (Verschwiegenheitserklärung) abschließt, BEVOR du Deine Idee in Form eines Lastenheftes übergibst. Damit erhöhst Du die Hürde, dass sich jemand Deiner Idee annimmt und selber vermarktet.


    Üblicherweise erkennst Du am Angeboit, ob der Programmierer die Aufgabenstellung verstanden hat und ob dessen Herangehensweise sich Deinem Ziel anzunähern in der Lage sein kann.


    Bei größeren Projekten sollte der Programmierer in einem Pflichtenheft beschreiben, wie er sich die Umsetzung vorstellt und in einem technischen Design, wie dort hinkommt, wo Du es erwartest.


    Je genauer Deine Spezifikation ist, umso einfacher ist die Umnsetzung für den Programmierer.



    Beste Grüße


    Andreas

    Hallo 4711,

    Scvhau mal nach OpenCV - damit kannst du per Kamera Objekte vermessen. Ziemlich millimetergenau im günstigen Fall.

    In Youtube gibts zahlreiche Videos mit anschaulichen Beispielen.

    das funktioniert natürlich auch ohne OpenCV.


    Bei bekanntem (konstantem?) Abstand Objekt zu Kamera ergibt sich die Objektgröße über den bekannten Strahlensatz oder über Höhe = Abstand * sin(vom Objekt aufgespreizter Winkel)


    Das kann jeder moderne Rechenschieber.


    Oder eine einzeilige Funktion in jeder beliebigen Programmiersprache.


    Beste Grüße


    Andreas

    Hallo Jürgen,


    Ja, ich.


    Für ein Beratungsprojekt sollte ich verschiedenste Einplatinen-Räscheknäschte und -Controller vorstellen und für aktuelle Problemlösungen in Erwägung ziehen. Da kam einiges zusammen, da ich da großzügig zugelangt habe. Da kam ein großer Beerensalat zusammen. Und auch die Welt der micro-Controller hört nicht bei Arduino auf. Da hat es mir der Nucleo-64 F116re besonders angetan.




    Das bislang Geniale am Asus Tinker: Icon läuft mit einer Geschwindigkeit, die beeindruckend ist.


    Ein typischer Benchmark misst dabei die maximalen Laufzeitunterschiede bei einem bestimmten Algorithmus.

    RPi: 50%

    PC: 3%

    ASUS TINKER: knapp 1%


    Das heißt, das Teil braucht sehr exakt die gleiche Zeit.

    Das eröffnet dann ganz andere Anwendungsmöglichkeiten, bei denen es um das Abarbeiten innerhalb fester Zeiten geht.



    Beste Grüße


    Andreas

    Hallo Jürgen,

    Hart am Wind heizt das Teil durch den Garten (Sorry, Kopfkino).


    MfG


    Jürgen

    Du hast Dein Kopfkino - ich habe die Teile im echten Leben gesehen. Du schlenderst gedankenverloren am Strand entlang. Kilometer weit weg, siehst Du irgendwas mit Segel - und denkst nichts weiter - ischa weit weg. 20 m weiter sausen dir segelbetriebene Vehikel mit 1 oder 2 Personen drin oder drauf mit mindestens 80 Sachen nur wenige Meter an dir vorbei.

    Garantiert ohne Akkubetrieb, garantiert ohne Solarzelle.


    Und plötzlich siehst du Markierungen im Sand mit anderen Augen. AHA!


    Und bei der Geschwindigkeit machen dann auch kleine Windräder Sinn, um einen Akku zum Betrieb des RPi oder was auch immer zu laden.


    Beste Grüße


    Andreas

    Hallo zusammen,


    im Dezember habe ich den Auftrag bekommen, ein Reinraum-Monitoring-Programm zu entwickeln. Das Programm macht schon lange, was es soll. Aber ein paar Paranoia sollen noch hinein.


    Eines davon besteht darin, einen Controller auszulesen, auf dem die Daten gesammelt weden. Diese Daten landen in einem Download-Verzeichnis der Anwendung. Um zu verhindern, dass irgendjemand eine manipulierte Version der Daten bereitstellt, die dann von der Anwendung verarbeitet werden, soll das Download-Verzeichnis einfach gelöscht werden, wenn mehr als eine Datei vorhanden ist - anstatt sich mit der Frage zu quälen, welche von beiden Dateien nicht manipuliert sein könnte.


    Frickler-Pipe:

    Code
    find .../MCM_Download -type f | wc -l"

    ermittelt die Anzahl der Dateien im anwendungseigenen Download-Verzeichnis.


    Und in Icon sieht das dann so aus [Code-Ausschnitt]


    Statt ... steht dann natürlich der Pfad zum Verzeichnis.

    Hallo zusammen,


    ich beziehe mich auf diesen Thread.


    Wenn man mich hier persönlich beleidigen darf (wie hier zitiert), nur weil ich in aller Höflichkeit und Form auf einen Fehler meigrafd's hingewiesen habe, der übrigens von MEHREREN (!) anderen Usern bestätigt wurde, dann habt Ihr mich hier alle das Letzte Mal gesehen.


    Es gibt Foren, in denen ein anderer Umgangston gepflegt wird - in denen man auf Fehler hinweisen darf und in denen Fehler klar gestellt werden können.


    Viel Spaß im Sandkasten!



    Andreas

    ... habe ich mal gemeldet... Sollen anderen befinden ... was sie damit anstellen.


    Es geht um Deine Formulierungen, auf die ich mich bezog. Nicht auf, das was andere Dir vorgeschlagen haben, wie Du hättest schreiben sollen. Du schriebst. Nicht andere für Dich. Dieses Jahr geht so weiter wie 2014/2015/2016/2017 verliefen.

    Mein lieber meigrafd,


    mein Beitrag war nicht provokant. Ich habe lediglich auf eine Deiner fehlerhaften Aussagen hingewiesen und diese klar gestellt. Denn leider vermuten vielen jüngeren User, dass Du immer alles besser weißt. Weil Du ja immer jeder Wurst Deinen Senf aufdrückst.


    In dem Fall lagst Du leider mal wieder daneben. Es ist mein gutes Recht, dies tun zu dürfen. Und wie die Reaktionen der anderen gezeigt haben, stehst Du mit Deiner Ansicht alleine da - weil eben falsch.


    Ob Du zu der schwammigen Formulierung gegriffen, hast, weil Du es einfach nicht besser weißt oder eines der faulen Eier gelegt hast, bleibt Dir überlassen. Interessiert wohl auch niemanden hier. Du kannst programmieren wie Du willst, Deine Programme können sonstwas treiben. Sie können laufen oder unerklärlich abstürzen. Aber zwinge nicht immer Deine Ansichten allen anderen auf. Insbesondere denen nicht, die mehr verstanden haben als Du.


    Beste Grüße


    Andreas

    Hallo Nafetz,


    Wie kann ich herausfinden, woran das liegt? Habe den Debug-Mode aktiviert und direkt nach einem Reboot die Dateien kodi.log und kodi.old.log gesichert. Nach was kann ich jetzt suchen? z.B. einen "critical Error" vor dem Reboot oder ein "crashed" nach dem Reboot konnte ich bislang nicht finden...

    einfach mal die letzten 10, 20, 50 Zeilen der .log-Dateien senden?


    Dann erführen wir, warum welcher Prozess einen Reboot veranlasst.


    Hast Du einen Watchdog aktiviert? Wenn ja, deaktiviere ihn einfach mal... Es gibt nämlich weniger Gründe, dass ein Watchdog das System zu einem Reboot zwingt als man denkt.



    Beste Grüße


    Andreas

    Hallo meigrafd,

    Und nun denk mal noch weiter... Wenn man ein Programm zum abspielen startet und etwas anderes abspielen will, was macht man dann sinnvollerweise? Ich würde dann nicht den Prozess beenden und neu starten, sondern den Prozess dahingegend beeinflussen. Kann man das mit system(); ? As Far As I Know, nein. Das alleine ist für zumindest mich bereits ein "echter Vorteil gegenüber system();".


    Rät hier jemand lieber system(); anstatt popen(); zu verwenden :?: Wenn nicht weiß ich wirklich nicht worüber wir uns hier überhaupt unterhalten...

    Ich schicke da zwei Signale. Und dann läuft das Programm so weiter, wie ich das haben will - nur dass der Prozess niemals gekillt oder gar neugestartet zu werden brauchte. Wie gesagt, das Stichwort IPC wurde bereits ins Spiel gebracht.


    Anscheinend spielt es aber einen großen Unterschied in der Programmierung. Weiß man, dass ein Programm bei einem Absturz bei nächster Gelegenheit über crontab eh wieder angestoßen wird, dann muss das Programm nicht mal bis zur zweiten Ereignisbehandlung durchhalten.


    Will man aber Anwendungen entwickeln, die autonom und zuverlässig ihre Aufgaben erfüllen, ohne negativ aufzufallen, dann ist ein wenig mehr Grips in Ressourcenplanung [der Stapelspeicher ist vieles - aber weit von Unendlich entfernt!], Kommunikation und Zusammenspiel etc. zu investieren.



    Beste Grüße

    Andreas