Beiträge von Assarbad

    :lol: Hier musste ich wirklich auflachen. Der Unterschied zwischen Google und den anderen - Google sagt dir ins Gesicht wie sie ihr Geld verdienen.

    Dann steht wohl dir überwiegende Mehrheit der Weltbevölkerung auf dem Schlauch. Denn die haben noch nicht begriffen, daß meistens [1] sie das Produkt sind, wenn das vermeintlich angebotene Produkt gratis daherkommt. Klar mag es sein, daß Suchmaschinen wie Startpage (welches die Google-Ergebnisse verwurstet ohne benutzerspezifische Anpassungen) und Metager auch krumme Dinge versuchen, aber dann habe ich immer noch meine Inhalteblocker und andere Sicherheitsmaßnahmen.

    Zumal, bei der Googlesuche magst du noch recht haben. Aber bei der Vielzahl anderer mittlerweile verfügbarer Googleprodukte, sind die leider nicht ganz so offenherzig was mit deinen Daten geschieht (bspw. GMail). Und da sie mit zu den größten Datensammlern gehören, macht es schon einen Unterschied. Das ist ähnlich wie bei der Debatte von Speicherung der IP-Adressen von Webseitenbesuchern. Als Anbieter einer einzelnen kleinen Webseite kannst du mit den gesammelten Daten ohnehin herzlich wenig anfangen, aber als Google oder Regierung bei dem jeweiligen Umfang der Datensammelei eben schon.

    Sagen wir mal so, falls du auch bei reCAPTCHA mit einem einzelnen Klick weiterkommst, darfst du dir sicher sein, daß du entweder ein Bot bist (dann hätte reCAPTCHA seine Aufgabe erledigt) oder daß du erfolgreich die Datensammelei von Google vermeidest (und reCAPTCHA, wie üblich, versagt!).

    Aber all das ist ja vielleicht auch abseits des Themas. Keine Ahnung wie strikt man das hier sieht. Dazu bin ich noch nicht lange genug dabei.

    [1] Als jemand der zu mehreren FLOSS-Projekten beiträgt und auch einige allein wartet, kann ich dir sagen, daß es auch Geben ohne Gewinnabsicht gibt.

    is2late da meine Kristallkugel gerade im Urlaub ist, verweise ich einmal freundlich auf diesen kleinen Artikel. Das daraus gewonnene Wissen erfreut auch andere Entwickler, wenn du mal Fehler in deren Programmen finden solltest und es hilft auch uns anderen Forenteilnehmern dir zu helfen, da wir nahezu unendlich viele Fehlerursachen auf ein erträgliches Maß minimieren können und dir dann vielleicht mit deinem Fehler behilflich sein können.

    Ist ernsthaft nicht bös gemeint. Aber wenn du Hilfe erwartest, solltest du ein Mindestmaß an Informationen geben, damit dir geholfen werden kann.

    In Python hast du verschiedene Methoden um das zu machen, bspw. os.system. Empfehlen würde ich dir allerdings das subprocess-Modul. Vorteil dabei ist, daß du noch auf bestimmte Dinge reagieren kannst. Hier ist mal ein relativ triviales Beispiel:

    So, statt subprocess.run kann man nun auch subprocess.check_output benutzen. In dem Fall enthält pp direkt die Ausgabe des ausgeführten Befehls, außerdem gibt es dann bei der Exception das Attribut output, welches ebenfalls die Ausgabe enthält.

    Falls du direkt die Ausführung eines bestimmten Befehls hart kodieren willst, kannst du das wie folgt machen (natürlich muß trotzdem das Modul importiert werden usw.):

    Code
    pp = subprocess.run(["./pfad/zum/programm", "erster parameter", "zweiter parameter"], check=True)

    Desweiteren könnte zu run und check_output je nach Anforderungen auch der Parameter shell=True interessant sein.

    nicht das ich neugierig wäre, aber worum geht's denn eigentlich? ;)

    Also ich hab nen RPi2 und möchte verhindern, daß es zu Dateisystemfehlern kommt, weil ich ihn einfach abschalte. Für das Root-Dateisystem habe ich das in meinem System im Griff, da ich das voll im Speicher ablege. Aber ich will natürlich dennoch ein wenig Persistenz für kleine Datenmengen. Und dazu muß ich sicherstellen, daß meine Prozesse runtergefahren werden und die schreibbaren Dateisysteme ge-sync-t werden.

    Nun habe ich zwei "Netzschalter". Einer ist vorne am Gerät, wie bei manchen Desktop-PCs und einer hinten an der Kaltgerätebuchse. Bei dem vorne - also wenn ich trotzdem noch Netzspannung am Netzteil habe - kann ich dem RPi2 geordnet signalisieren, daß er sich bitte herunterfahren möge. Also alles in Butter. Wenn aber der hintere Schalter betätigt wird, oder die Spannung anderweitig unterbrochen wird, wird's brenzlig. Dafür brauche ich etwas Zeit um diese Fälle zu überbrücken ohne daß ich das Dateisystem beschädige.

    Moin moin,

    Guten Abend wieder einmal.

    ich habe wie von Linus geschrieben den Skript erstellt. Leider funktioniert dieser nicht.

    Woran kann das liegen?

    Also "funktioniert nicht" ist leider wenig hilfreich. Auch wenn's erstmal doof klingt, lies mal bitte folgendes hier durch: https://www.chiark.greenend.org.uk/~sgtatham/bugs-de.html ... ist ernsthaft gut gemeint, weil du dir damit selber hilft indem du uns die Angaben zukommen läßt, welche uns ermöglichen dir wirklich zu helfen statt ins Blaue zu spekulieren.

    Am wichtigsten wäre, was genau du als Fehler siehst? Schlägt Python fehl? Hängt das Skript? Was sind die Symptome?

    Assarbad kannst du mir hier vielleicht ein Beispiel gebenwie ich den Skript im Python dann schreiben müsste?

    Ich habe mir auch die Seite durchgelesen aber werde da nicht wirklich schlau raus.

    Du meinst wie man einen socket-Client schreibt? Das ist doch auf der verlinkten Seite im Detail beschrieben.

    Ich möchte das Gerät gerne auf Weihnachten meinem Patenkind schenken. Das ist mein Ziel. Danach will ich noch was anderes mit einem Pi umsetzen, deshalb wollte ich erstmal eine "einfaches" Projekt machen.

    Geht mir ja nicht anders, aber als einfaches Projekt würde ich das nicht sehen. Und auf der Softwareseite bin ich ziemlich firm ... also sowohl mit Linux und anderen Unixen wie auch mit der Programmierung.

    Noch ein gedanke. Im Skript von MiczFlor kann man die Bedienung auch mit RFID Karten hinterlegen. Kann man im Python nicht einfach nur eine Zahlenfolge hinterlegen die geschrieben wird für z.B. nächstes Lied und diese Zahlenreihenfolge hinterlege ich im rfid_trigger_play.sh als next? Mehr macht die RFID Karte doch auch nicht!?

    Habe jetzt weiter gefummelt. Ich müsste dann ja den Befehl so eingeben das er über die Tastatur des RFID Readers kommt. Man stellt ja schließlich den Skript auf den RFID Anschluss ein.

    Also bei Tastatur wäre ich vorsichtig, weil das schnell nach hinten losgehen kann. Mein RFID-Leser ist am seriellen Port und da kann ich bequem immer die entsprechenden Zahlen der RFID-Karten einlesen.

    Ich würde dir jedoch raten noch eine Abstraktionsschicht dazwischen zu flanschen. Ich persönlich habe vor mir die Zuordnung von Kartennummern zu Playlists in eine SQLite3-Datenbank zu schreiben (Python hat die Unterstützung dafür üblicherweise eingebaut), aber eine INI-Datei täte aus auch. Sowohl INI als auch JSON kann Python üblicherweise (hängt natürlich auch ein wenig vom Build ab) nativ schreiben und lesen.

    Dadurch sparst du dir jede Menge Ärger wenn mal eine Karte verloren geht. Statt dann wahlweise den Code des Skripts anpassen zu müssen oder x Einträge an irgendeiner anderen Stelle, kann die Zuordnung der Kartennummer einfach auf eine neue Kartennummer gelegt werden.

    Ich probiere nachher nochmal dein Skript auf Raspbian, aber ich vermute ganz stark, daß ich ohne deine Verkabelung usw. da auch nicht viel sehen werde.

    Welche Distro benutzt du? Raspbian?

    Also wenn du libvlc benutzen willst, wirst du um ein Python-Binding nicht herumkommen. Dazu böten sich ctypes, SWIG oder Cython (nicht zu verwechseln mit CPython!) an. Aber wenn ich das richtig sehe, wird das Binding bereits vom VLC-Projekt selbst angeboten. Das scheint ctypes-basiert zu sein und es gitb auch Beispielcode. Einfach "import vlc" und dann nach Vorkommen von "vlc." in dem Beispielcode suchen.

    Wo hakt es denn genau? Die Doku zu libvlc findet sich hier (ist aus deren Wiki auch verlinkt).

    Nochmal kurz zum Bash-"Script":

    Sehe ich als ziemliche Bash-Pleite das richtig, dass der Funktionsname : willkürlich gewählt ist? Und sicher lässt sich das ganze auch als Einzeiler schreiben:

    Bash
    .(){ .;};.

    Macht obiges also genau das gleiche? (eine Zeile und . als Funktionsname)

    In der Bash ausgeführt passiert einfach sehr lange überhaupt nichts :/

    https://de.wikipedia.org/wiki/Forkbomb

    "." in Bash ist ein alternativer Name des eingebauten Befehls "source". Siehe "help ." (falls du in Bash unterwegs bist). Und nein, der Name ist nicht (ganz) willkürlich gewählt.

    Übrigens hat das alles nichts mit PuTTY zu tun. Zum Wohle zukünftiger Suchender, wäre es vielleicht gut die Erwähnung von PuTTY aus dem Titel zu entfernen.

    Angenommen du bist schon in Bash oder einer anderen standardkonformen Shell unterwegs, probier mal:

    Code
    $SHELL --version

    ... auszuführen.

    Dann siehste welche Shell du gerade benutzt. Und wenn es sich bspw. um Bash handelt, benutzt du danach "man bash" um dir das Handbuch von Bash durchzulesen. Und wenn du keine Ahnung hast wo du einen bestimmten Begriff einordnen sollst, benutzt du "apropos <Begriff>". Ansonsten zeigen dir "type" (Bash built-in) und "which" an woher ein bestimmter Befehl kommt. "which" kennt dabei nur die Befehle aus dem der PATH-Umgebungsvariablen, während "type" auch Aliase und Bash-Funktionen kennt.

    Ich empfehle dir dringend dich zumindest mit den Grundlagen der Shell auseinanderzusetzen. Und wenn man "sudo" einsetzt, wären Grundkenntnisse des Linux-Userland sicher auch nicht ganz fehl am Platze. Siehe http://tldp.org

    Hab's mal in Python durchgespielt. Wenn ich die unteren 32 Bit nehme, komme ich schonmal auf den ersten Wert der auf der Karte aufgedruckt ist:

    0x1F001C0722 -> (untere 32 Bit) 0x001C0722:

    Code
    >>> "%010d" % 0x001C0722
    '0001836834'

    Als Ausgabe meines Skripts:

    Code
    $ ./readrfid.py 
    1F001C0722 -> 0001836834 028,01826

    Das Skript (gemeinfrei, aber falls Bedarf an einer Lizenz besteht, seht es als unter MIT-Lizenz stehend an):

    in java währen

    Es gibt Leute die vba ausserhalb von Office verwenden? Ich mehr habe mehrere umfangreiche Automatisierungen/ Importer in vba geschrieben und auch noch im Einsatz- Hat auch den den einfachen Grund das man unter MS Office auch keine andere Wahl hat.

    Nunja, ich hatte bei iFix auch keine Wahl. Und ja, da Microsoft - zumindest damals - VBA zum einbetten in andere Programme anbot, wurde es auch genutzt. Leider hat man sich bei GE auch keines besseren besonnen und bspw. mal auf Python oder so umgesattelt. Da hätten vermutlich auch die Kunden protestiert. Der Konkurrent Siemens benutzt einen C-Dialekt als eingebettete Sprache, wenn ich mich recht entsinne.

    das vba unbeliebter sein soll als java kann ich kaum glauben. Wenn die damals keine Leute bestochen hätten um diesen Kram an die Unis zu kriegen - würde java heute da sein wo es hingehört, weit weit hinter Icon :fies:

    Mußtest du schonmal ernsthaft in VBA arbeiten? Ich frage deshalb, weil das bei mir der Fall war. Vor ca. 15 Jahren war es. Und ich habe es gehaßt. Aus unerfindlichen Gründen hatte der Hersteller von iFix (damals Intellution heute GE) gemeint es sei ne saucoole Idee VBA als die Sprache einzubauen. Die Beschränkungen um welche ich da herumarbeiten mußte. Grausam. Habe da allerlei Hacks zum Einsatz gebracht um das Ding zum Laufen zu bekommen. Und in diesem Jahr kam die Firma von damals auf mich zu. Habe mich dann nochmals damit beschäftigt, aber es aufgrund Zeitmangels gelassen. Ich habe besseres zu tun als mir mit VBA meine knappe Zeit zu vermiesen.

    Als Nicht-Programmierer fällt mir nur auf, dass Java-Applikationen auf meinem Rechner sehr viel RAM brauchen.

    Tun deine .NET-Programme auch. Aber weil die Laufzeitumgebung seit Vista im System eingebettet ist, sieht man es nicht mehr so deutlich wie einst. Aber prinzipiell spricht ja nichts gegen Programme die als Bytecode vorliegen. Schnell genug sind die Rechner dafür heute allemal.

    framp: vielleicht magst Du noch den "Klartext" posten ...

    ciao,

    -ds-

    Das war Klartext. Stichwort Forkbombe. Kein Stapelüberlauf, aber sehr potent. Sozusagen der Stapelüberlauf des kleinen Mannes ;)

    Moin,

    habe mir für mein kleines Projekt jetzt einen RFID-Leser und Karten zugelegt. Nun rätsele ich, ob es eine Verbindung zwischen dem Aufdruck und dem 10-Byte Code gibt (ich zähle mal ganz frech nur die Rohdaten ohne Checksumme, STX und ETX, CR und LF kommen bei mir ohnehin nicht vor, scheint's).

    Beispiel:

    Aufdruck auf der Karte ist 0001836834 028,01826

    Ausgelesener Wert (10 Bytes): 1F001C0722

    Aha, könnte ein hexadezimaler Wert als ASCII sein (aber ich habe ja nur einen begrenzten Einblick, deswegen kann das auch Zufall sein), was dann aber wiederrum bedeuten würde 4*10 Bit (eine Hex-Ziffer entspricht exakt einem Nibble, also 4 Bit) an Daten sind enthalten. Ansonsten würden 10 Byte Rohdaten ja 80 Bit kodieren, aber Gleitkommazahlen sind üblicherweise nicht in lesbaren ASCII-Zeichen, noch dazu ausschließlich jene aus dem Bereich 0..9 und A-F, darstellbar. Daß ich also bei mehreren ausprobierten Karten jeweils einen als ASCII lesbaren Wert zurückbekomme der dennoch eine Gleitkommazahl darstellen kann, wäre also schon ziemlicher Zufall.

    Gehen wir also von 40 kodierenden Bits aus. Auch hier kämen prinzipiell noch Gleitkommazahlen infrage. Auch Festkommazahlen kämen infrage und vieles mehr. Und da ich keinerlei Anhaltspunkte habe, entschloß ich mich hier zu fragen.

    Was haben wir denn da nun an Daten drin? Bis auf 0x22 - weiterhin unter der Annahme es handele sich um eine Hexadezimaldarstellung - ist kein darstellbares ASCII-Zeichen dabei.

    Hat hier jemand Ahnung von der Materie oder kann mich an entsprechende Dokumentation verweisen? Die einschlägigen Suchbegriffe führen nur zu Seiten welche die Vorteile von RFID anpreisen und irgendwas verkaufen wollen.

    Danke.

    Hi Andreas,

    Danke für die schnelle Antwort. Nach meiner Recherche sieht es so aus, als sei GPIO durchaus auch schon von U-Boot aus verfügbar. Natürlich nicht mit dem von der RPi-Foundation mitgelieferten Bootloader, das ist klar.

    Zugegeben, ich habe es noch nicht probieren können, da es schon am starten des Kernels scheiterte, aber hier findest du ein Beispiel dessen was ich im Sinn habe. Möglich daß das beim RPi nicht verfügbar ist, aber erst einmal geht es ohnehin ums Starten des Raspbian an Bord mithilfe von U-Boot.

    Ach ja eins noch. Es kann auch darauf hinauslaufen, daß die Verfügbarkeit einer Tastatur als die Bedingung benutzt wird. Sprich: GPIO ist hier nicht das wichtige Thema und auch (noch!) nicht das bedingte Starten des einen oder anderen Kernels. Erst einmal muß ich überhaupt irgendeinen der Kernel überzeugen, daß sie mit U-Boot starten.

    Ich probiere das gerade mal etwas systematischer durch.

    Moin,

    ich habe mir die aktuellste Version (rc3) aus dem Git von denx.de gesaugt und mir damit ein u-boot.bin-Binary gebaut. So weit so einfach. Ich habe zwar auch damit experimentiert diverse Netzwerkfunktionalität abzuschalten, habe dies aber nicht vollständig hinbekommen und erst einmal verschoben.

    Das Binary funktioniert so weit man das sehen kann. Allerdings habe ich noch keinen einzigen sauberen Boot hinbekommen.

    Was ich bisher getan habe ist, die u-boot.bin-Datei einfach in die Boot-Partition (FAT) von dem Raspbian zu kopieren und in der config.txt einfach kernel=u-boot.bin zu setzen.

    Ich bekomme zwar bei den meisten Boots meine USB-Tastatur zum laufen, aber ab da wird's problematisch. Habe mir den Device-Tree vom Raspbian versucht zu laden und das war bisher auch das vielversprechendste Ergebnis, die Himbeeren erschienen oben am Bildschirmrand, aber in falscher Farbe und ab da hing alles. Zuvor hing es schon nachdem mir U-Boot die Info ausgegeben hatte, daß jetzt der Kernel gestartet wird. Probiert hatte ich es mit dem kernel7.img der Boot-Partition von Raspbian, via bootz.

    Grob:

    Code
    mmc dev 0
    fatload mmc 0:1 ${kernel_addr_r} kernel7.img
    bootz ${kernel_addr_r}

    Im Falle mit dem Device-Tree habe ich den auch via fatload geladen und die Adresse bei bootz übergeben. Als Adresse hatte ich 0x02000000 benutzt. Keine Ahnung ob die sinnvoll ist oder nicht.

    Kann mir jemand Anhaltspunkte geben, insbesondere Hinweise auf Dokumentation. https://elinux.org/RPi_U-Boot ist mir bekannt, sowie auch https://raspberrypi.stackexchange.com/questions/6816…uildroot-u-boot und http://ltekieli.com/buildroot-with-raspberry-pi-u-boot/ und https://blog.night-shade.org.uk/2015/05/bootin…nd-hyp-enabled/ (letzteres fand ich am hilfreichsten).

    Der Grund warum ich U-Boot nutzen möchte ist, daß es mir ermöglichen kann ein Raspbian auf der SD-Karte zu haben auf welchem ich "normal" arbeiten kann, aber gleichzeitig ein per Buildroot erstelltes Image standardmäßig zu laden. Bin noch nicht sicher ob ich das über nen Jumper auf zwei GPIO-Pins oder eine andere Methode ermittle (also welche Modus gebootet werden soll).

    Zum Bau benutze ich:

    Code
    env ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j 8 rpi_2_defconfig all

    und zwischen meinen Experimenten:

    Code
    make mrproper distclean