c# strtok und mpc wie geht das ?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Für mein Projekt_m8 möchte ich im Radio Modul den Artist und den Titel anzeigen.
    der mpc ermittelt im Format artist - titel den Interpreten und den Titel und schreibt die Datei titel.txt
    das Problem im C-Berry stehen 2 Zeilen mit max. 28 Byte zur Verfügung der Artist wird immer richtig angezeigt.
    der Titel wird ab und zu immer noch mit dem New Line Zeichen angezeigt.

    Wie kann die Funktion optimiert werden um die variablen Längen von Artist und Titel abzufangen.
    Sowie das sporadische Anzeigen des New Line Zeichen bei der Titel Anzeige dauerhaft zu verhindern.


  • Muss das in C sein? In Python ist so etwas mit

    Code
    with open(dateiname) as inf:
         content = inf.read()
    
    
    lines = [line.strip() for line in content.split("-")]

    erledigt. Stringverarbeitung ist wirklich nicht C's Staerke (uebrigens hat das nix mit C# zu tun, wie dein Titel angibt).


  • Muss das in C sein? In Python ist so etwas mit

    Code
    with open(dateiname) as inf:
        content = inf.read()
    
    
    lines = [line.strip() for line in content.split("-")]

    erledigt. Stringverarbeitung ist wirklich nicht C's Staerke (uebrigens hat das nix mit C# zu tun, wie dein Titel angibt).

    Hallo _deets_
    Das Projekt ist komplet in C geschrieben deshalb möchte ich die eine Funktion nicht mit Python aufrufen auch
    wenn es sicherlich einfacher wäre.

  • Wenn wäre es wohl eher sinnvoll alles in Python zu machen. Aber das ist natürlich eine größere Entscheidung. C ist halt schwer. Musste durch.


  • Ich seh nicht ganz durch...

    Wie sieht der Inhalt des Files aus?
    Und was soll rauskommen?

    Hallo Tell
    Die Datei titel.txt wird ca. alle 2 Minuten neu geschrieben und sieht dann zb. so aus.

    Code
    Alle Farben & Graham Candy - She Moves (Far Away)

    Vor dem - steht der Interpret/Artist nach dem - dann der aktuelle Titel.
    Der Artist wird dann in die globale Variable artist und der Titel in die Variable titel zur weiteren Verwendung geschrieben.
    Mein Problem im C-Berry Display wird der Titel manchmal mit einem NewLine Zeichen angezeigt.
    Das würde ich gern verhindern.

  • strtok ist nicht geeignet, weil das Space hinter dem Minus im String bleibt.

  • Wo purzeln denn diese Daten heraus?
    Ich kenne mich in C leider so gut wie gar nicht aus, aber als Programmierer frage ich mich, ob du die Daten an sich nicht in einer einfacheren Form angeboten werden könnten, also bspw. im Vorfeld schon getrennt in Artist (Line 0) und Title (Line 1)?
    Dann könnte man sich die String-Manipulation in C sparen und hat auch nicht (möglicherweise ungeeignetes) Trennzeichen "-", was nahezu danach schreit ungewollte Ergebnisse zu liefern (zumindest wäre ich sehr überrascht, wenn es gänzlich keine Interpreten oder Titel gäbe, die das Trennzeichen enthalten).

    .NET-, Unity3D-, Web-Dev.
    Mikrocomputer-Hobbyist.

  • Hallo Tell

    Es funktioniert super mit Deinem Code, im Display sind keine sonderbaren Zeichen mehr zu sehen.

    :danke_ATDE: :danke_ATDE:
    Automatisch zusammengefügt:
    Hallo Renão
    Wo purzeln denn diese Daten heraus?

    Ich bin mir nicht sicher ob die Frage hiermit beantwortet ist.

    Auf dem RasPi läuft nur der mpd/mpc mit einem
    mpc load radiosender

    wird die Datei radiosender.m3u geladen. Darin befinden sich in dieser Form die Sender.

    Code
    http://ndr-ndr2-nds-mp3.akacast.akamaistream.net/7/400/252763/v1/gnl.akacast.akamaistream.net/ndr_ndr2_nds_mp3

    Mit diesem Aufruf aus meinem C Programm
    system("mpc current -f %title% > titel.txt");
    wird aus dem mp3 stream der Artist und der Titel in die Datei titel.txt geschrieben.
    Mit Hilfe der von Tell gezeigten Funktion wird der Artist und der Titel zur weiteren Verwendung zerlegt.

    Ob der mp3 stream auch mit einem anderen Programm zerlegt werden kann wäre eine gute Frage.

    Einmal editiert, zuletzt von md_fg (6. Februar 2017 um 17:34)

  • Erstmal natürlich super, dass es nun klappt!

    Ich gehe dann einfach mal davon aus, dass mpc den String bereits zusammengeführt aus dem Radiostream extrahiert (wahrscheinlich wird das auch sogar schon in der Form vom Radiosender geschickt?). Wäre zu schön gewesen, wenn dir der Radiosender die Angaben bereits gesplittet geliefert hätte :)

    .NET-, Unity3D-, Web-Dev.
    Mikrocomputer-Hobbyist.

  • Hallo Renão

    Die Infos kommen von den Radiosendern und jeder sendet was anderes oder gar nichts.
    BR3 zb. sendet einen : als Trennzeichen und Antenne Bayern wieder ein - als Trennzeichen.
    Der WDR2 und Jump senden Titel von Artist

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!