Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
FAQ zum iRadio
nach einigem Getüftel hab ich die Kassette jetzt genau in der Größe wie ich sie brauche.


.jpg   zoom.JPG (Größe: 38,87 KB / Downloads: 507)

Die Parameter für mpvlcd:

--zoom 4.0 \
--aspect 16:9 \
--no-autoscale \

Das eröffnet mir jetzt wieder ganz neue Möglichkeiten. Danke Bernhard für diese großartige Erweiterung von iRadio!
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
Hallo Jupp,

ich habe das mal mit einem Nextion Display versucht, das geht auch sehr gut. Vorteil ist hier, Null Rechenleistung vom Abspielgerät. In diesem Video war nicht mal ein Gerät dran, sondern nur 5 Volt am Display. Man kann mehrere Kassetten via Page aussuchen. Außerdem könnte man oben in das Textfeld noch ein Text schreiben, zum Beispiel Künstler und Songtitel. So funktioniert es sogar mit einem Arduino Nano oder ESP.

Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
Jens, das ist spannend! Können wir uns darüber im Nextion-thread austauschen? Nicht hier in Bernhard's iRadio Thema.

Einarbeitung in Nextion Displays
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
(13.03.2021, 03:05)pintel schrieb:  Außerdem könnte man oben in das Textfeld noch ein Text schreiben, zum Beispiel Künstler und Songtitel. 

So wird das hier bei den Skalensimulationen in SDL2 ja schon gemacht Jens, das ist kein großer Aufwand, siehe hier Universum Senator ctr2002i (radio-bastler.de)
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
(13.03.2021, 11:38)Bernhard45 schrieb: So wird das hier bei den Skalensimulationen in SDL2 ja schon gemacht Jens, das ist kein großer Aufwand, siehe hier Universum Senator ctr2002i (radio-bastler.de)

Stimmt, das habe ich noch nicht gesehen. Aber es ging in der Hauptsache darum, dass es so auch mit einem Nano oder ESP funktioniert.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
(13.03.2021, 12:34)pintel schrieb:  Aber es ging in der Hauptsache darum, dass es so auch mit einem Nano oder ESP funktioniert.

Hallo Jens,

solange wir hier von einer reinen Anzeige einer Kassette (Standbild) mit rotierenden Spindeln (2x kleineres Bewegtbild) auf einem Display sprechen, dürfte das für einen Nano oder ESP32 kein Problem sein. Das könnte ein Arduino Nano sogar schaffen wenn es sich nicht um ein Nextion-Display handelt! Jupps Anwendung hier mit dem mediaplayerd des iRadio ist aber eine ganz andere. So wie ich das verstanden habe, nimmt er fertige Videodateien (mpg2/4, ...) die mit einer Musikspur unterlegt sind! Allein die Verarbeitung und Dekodierung eines MPEG 2/4-Videos dürfte für einen Arduino Nano viel zu viel sein. Da schafft auch ein Nextion keine Abhilfe! Es müssen zum Display ununterbrochen Daten transferiert werden, Vollbild für Vollbild aus dem Videodatenstrom.
Für einen ESP32 ist das, sofern alles ohne zusätzlichen DSP abläuft, also rein in Software geschieht, sehr sportlich, aber sicher nicht ganz unmöglich.

Das hier verwendete ARM-System lacht natürlich über solche Aufgaben. Es hat CPU/GPU-Leistung und RAM im Überfluss. Einzig der Datendurchsatz der Schnittstelle zum Display entscheidet bei diesem System über die technisch machbaren FPS. Das kann bei grafischen Displays mit seriellen Schnittstellen zum Flaschenhals werden.

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
ja genau, ich spiele kleine mp4 Dateien ab. Jeder clip mit einer anderen Kassette im Hintergrund. Es sind schon mehr als 200 Titel die auf die Art angefertigt worden.
Ich bin das iRadio weiter am ausbauen. Beim Abziehen des Stick schaltet es je nach Inhalt der playlist auf Internetradio oder Internet-Fernsehen. Okay, das wissen wir ja schon. Mein Tagewerk heute ist aber der Bau einer x11 Skalensimulation und ich bin überrascht dass auch hier problemlos zwischen den 3 Funktionen (iRadio, iTV und mediaplayer) umgeschaltet werden kann. Wünschenswert wäre eine Möglichkeit evtl. über die playlist auf den mediaplayer umschalten zu können, so dass man zum Umschalten nicht den Stick auf- oder abstecken muss. Aber alles kann man nicht haben. Die software ist an Vielseitigkeit nicht mehr zu überbieten. Und ich habe noch nicht alle Möglichkeiten ausgeschöpft.

Zitat:Einzig der Datendurchsatz der Schnittstelle zum Display entscheidet bei diesem System über die technisch machbaren FPS.

Der framebuffer-Nachfolger fbcp-ili9341 ermöglicht auch auf einem SPI-Display eine flüssige Videowiedergabe. Jedenfalls flüssig genug um auf dem kleinen Display iTV oder meine clips schauen zu können.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
(13.03.2021, 20:07)saarfranzose schrieb: Wünschenswert wäre eine Möglichkeit evtl. über die playlist auf den mediaplayer umschalten zu können, so dass man zum Umschalten nicht den Stick auf- oder abstecken muss. Aber alles kann man nicht haben.

In dem Fall Jupp geht das und sogar relativ einfach und man braucht nur wenig Code im mediaplayerd ändern. Lass mich die Sache mal in Gedanken durchspinnen.

Das man den mediaplayerd von "Autoplay" auf gpiod, also Tastendruck umstellen kann, denke ich dürfte für viele iRadio-Nutzer nicht überraschend sein. Der gpiod kann an den mediaplayer ja ein UDP-Kommando senden und damit den Betriebsmodus von Internetradio/Internetfernsehen auf Medienwiedergabe ändern. Wer also einen alten Videorekorder umbauen möchte, wobei die Bedienung über die Tasten am Gerät erfolgen soll, kein Problem!

Mit der playlist auf den Mediaplayer umschalten, hmmm. Ja machbar! Dazu müsste in der Senderliste für Internetradio oder Fernsehen (beides kann ja gemischt werden!) ein Fake-Kanal eingefügt werden. Da muss nichtmal eine URL rein, es genügt ein Kanalname der als Trigger für den Mediaplayer herhalten kann. VLC liest den Fake-Kanal ein, gleichzeitig greift ein displayd oder ein spezieller Wächter-Prozess ja permanent per TCP/IP die Kanalinfos von vlc ab. Erkennt der displayd (oder Wächter-Prozess) den Namen des Fake-Kanals, schaltet er automatisch auf Medienwiedergabe um. Gleiches passiert für das Zurückschalten. So ein Kanal könnte ja "Videowiedergabe" und "Internetradio/TV" heißen.

Ich werde das mal in einem nächsten Update als Demoprojekt für den mediaplayerd hinzufügen.  
Danke für den interessanten Gedanken!

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
das mit dem fakekanal wäre noch das I-Tüppfelchen :-)

Damit die Mitleser sehen wie so ein Kassettenmodul mit den 3 Betriebsarten Mediaplayer, x11-simuliertes iRadio und iTV aussieht hab ich ein Filmchen online gestellt. Die Titel spiele ich per webinterface nur kurz an um die Vielfalt zu zeigen. Bei Bedarf poste ich alle Konfigurationsparameter.

Das Modul kommt in einen Radiorekorder von Uli. Bluetooth kommt natürlich auch noch dazu.

Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
Schönes Spielzeug, Musik passt auch.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
(14.03.2021, 02:05)saarfranzose schrieb: das mit dem fakekanal wäre noch das I-Tüppfelchen :-)

Hallo Jupp, für einen ersten Test könnte der mediaplayerd so erweitert werden (Paste & Copy):

Code:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <pthread.h>

#include <errno.h>
#include <signal.h>
#include <string.h>

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>

#include <unistd.h>

using namespace std;

volatile bool bDevAvail = false;
volatile bool bMediaplayer_running = false;
volatile int modus = 0;
// 0 = Internetradio/TV
// 1 = Mediaplayer
// ... DAB, ...

void rmSubstr(char *str, const char *toRemove)
{
   size_t length = strlen(toRemove);
   while((str = strstr(str, toRemove)))
   {
       memmove(str, str + length, 1 + strlen(str + length));
   }
}

static void *process_chkmount(void *arg) {
  char status[64];
  FILE *ret;

  while(1) {
    ret = popen("chkmount.sh", "r");
    fgets(status, 64, ret);

    if (strstr(status,"/dev")!=NULL)
      //cout << mountet\n";
      bDevAvail = true;
    else
      //cout << "nicht gemountet\n";
      bDevAvail = false;

    status[0]='\0';

    if (ret!=NULL) {
pclose(ret);
ret = NULL;
    }
    sleep(5);
  }
  return 0;
}

static void *process_startbychannel(void *arg) {
char title[64];
FILE *text;

    while(1) {

        text = popen("echo \"info\" | nc 127.0.0.1 9294 -N | grep title:", "r");
    fgets(title, 64, text);

    rmSubstr(title,"| title:");
    rmSubstr(title,"\r");

    title[strlen(title)-1]='\0';

// Modus nach vlc-Kanalname setzen
if (strstr(title,"Mediaplayer")!=NULL)
          modus=1;

        if (strstr(title,"Internet.wav")!=NULL)
          modus=0;

if (text != NULL) {
    pclose(text);
text = NULL;
}

        sleep(1);
  }

  return 0;
}


int main(int argc, char *argv[]) {

 // Interprozesskom herstellen
 pthread_t process;
 pthread_create(&process, NULL, process_chkmount, NULL);
 pthread_detach(process);

 pthread_t process2;
 pthread_create(&process2, NULL, process_startbychannel, NULL);
 pthread_detach(process2);


 // Daemonbetrieb
 while(1) {
   // ext. USB-Laufwerk verfuegbar, Mediadateien listen und Playlist erzeugen, vlc mit dieser Playlist starten
   if (bDevAvail) {
     if (modus==1) // schalte auf Mediaplayer
      if (bMediaplayer_running==false) {
system("mkplaylist.sh");
system("killall vlc");
system("mpvlcd");
bMediaplayer_running=true;
      }

     // zurueck zum vlc-Internetradiobetrieb
     if (modus==0)
      if (bMediaplayer_running) {
        system("killall vlc");
        bMediaplayer_running=false;
        system("vlcd");
      }

   } else {
     // zurueck zum vlc-Internetradiobetrieb wenn USB Datentraeger abgezogen
      if (bMediaplayer_running) {
system("killall vlc");
        bMediaplayer_running=false;
system("vlcd");
      }
   }
   sleep(5);
 }
}

Jetzt würde ja jede Sekunde durch process_startbychannel bei vlc nachgeschaut, ob auf einen Kanal "Mediaplayer" umgeschaltet wurde. Ist das Fall und steckt der USB-Stick im Pi, würde nachgeschaut welche Mediadateien vorhanden sind, eine Playlist daraus generiert und dann mit der Medienwiedergabe begonnen.

Um einen solchen Kanal "Mediaplayer" in der Internetradio/TV-Senderliste zu erzeugen, müsste in der playlist.m3u am Ende folgender Eintrag vorhanden sein:

Code:
#EXTINF:-1, Mediaplayer - Mediaplayer
/dev/random
Wenn jetzt der Mediaplayer läuft muss natürlich auch der Rückweg zum Internradio, DAB,  .... vorhanden sein.

Im obigen Beispiel ist das der Fall wenn vlc auf eine Datei trifft, die "Internet.wav" lautet (darf nicht leer sein!), sich auf dem USB-Stick befindet und durch gpiod, webinterface, ... angewählt wird. Sowohl den Kanal Mediaplayer als auch die Internet.wav kann man ja namentlich ändern. Das muss dann aber auch im obigen Quellcode erfolgen. Da die Variable modus nicht nur bool sonder ein int ist, kann man hier mehrere Modis codieren, expliziter Sprung auf DAB oder irgendein SDR-Tuner, .... .


Du kannst damit ja mal etwas rumspielen bis wir den optimalen Bedienweg gefunden haben und das als Anwendungsbeispiel ins Gesamtpaket übernehmen können.

Gruß
Bernhard

PS: sehe gerade das die Forensoftware die Codeformatierung etwas zerhaut, also in nano, vi, pluma,... nochmal schnell formatieren damit es übersichtlich bleibt. Ein Refactoring des Codes kommt dann final auf dem Hub.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
die playlist sieht jetzt so aus. Oder muss die Ergänzung vielleicht in eine einzige Zeile?


.png   mediaplayerd5.PNG (Größe: 14,54 KB / Downloads: 341)

schalte ich auf Mediaplayer starten die Dateien auf dem Stick aber nicht. Stattdessen kommt der iRadio-Bildschirm mit seiner Skalenanimation und zeigt als Sender "Mediaplayer" an, ohne Ton.

webinterface:

   

der Rückweg erfolgt einfach indem man auf der playlist wieder einen der Internetsender anwählt.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
(15.03.2021, 19:31)saarfranzose schrieb: die playlist sieht jetzt so aus. Oder muss die Ergänzung vielleicht in eine einzige Zeile?

Der Eintrag ist in Ordnung, der Kanal Mediaplayer wird ja in VLC im Webinterface so auch angezeigt!

(15.03.2021, 19:31)saarfranzose schrieb: schalte ich auf Mediaplayer starten die Dateien auf dem Stick aber nicht.

Den Code in der mediaplayerd.cpp hast Du aber vollständig durch den obigen im Codefenster ersetzt, gespeichert + den mediaplayerd mit dem Buildscript neu compiliert und das iRadio neu gestartet?

(15.03.2021, 19:31)saarfranzose schrieb: Stattdessen kommt der iRadio-Bildschirm mit seiner Skalenanimation und zeigt als Sender "Mediaplayer" an, ohne Ton.

Der Kanal hat ja auch keinen Ton, es ist ein Fakeeintrag. Wenn der neue mediaplayerd aber richtig installiert ist und(!) ein USB-Stick mit Mediendateien (standardmäßig mp3, mp4, aac oder wav) gesteckt ist, startet danach die Wiedergabe vom Stick wenn der Eintrag "Mediaplayer" angewählt wird. Im Webinterface werden dann nach ein paar Augenblicken (halt, bis der Stick komplett durchsucht wurde) auch die Dateien und nicht mehr die Internetstationen angezeigt!  Auf dem USB-Stick muss dann noch eine (nicht leere!) wav-Datei mit dem Namen Internet.wav sein. Wird diese angewählt, spielt nach ein paar Momenten wieder das Internetradio und das Webinterface hat dann auch wieder alle Internetstationen gelistet.
Funktioniert hier ohne Probleme Jupp.

Ich kann den geänderten Code aber nochmal als Datei anhängen, wenn der Compiler nicht will Jupp? Nicht das die Forensoftware nicht nur die Formatierung verschluckt hat!

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
es funktioniert, Bernhard! Ich hatte Verbindungsprobleme mit dem Stick weil er über eine Verlängerung eingesteckt war. Und dann wusste ich nicht dass die Datei Internet.wav eine gültige wav-Datei enthalten muss. Ich hatte eine mp4 Datei umbenannt, und damit gab es no return (oder ich hab nicht lang genug gewartet, weil die Datei ja angespielt wird).

Wenn ich mir jetzt vorstelle ich habe einen Drehencoder oder Taster zum Bedienen und soll dann unter 200 mp4-clips die Internet.wav suchen wird das mühselig. Mein Vorschlag wäre für die Umschaltung den switch des Encoders bzw. eine weitere Taste zu benutzen. Also dann über den gpiod zu gehen, oder die Taste direkt im mediaplayerd abfragen. Also einmal drücken: iRadio, noch mal drücken: Mediaplayer.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
Hier nochmal der Testcode von oben für die Umschaltung per Fakekanal.


.cpp   mediaplayerd.cpp (Größe: 2,82 KB / Downloads: 5)
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
(15.03.2021, 23:42)saarfranzose schrieb: Wenn ich mir jetzt vorstelle ich habe einen Drehencoder oder Taster zum Bedienen und soll dann unter 200 mp4-clips die Internet.wav suchen wird das mühselig. Mein Vorschlag wäre für die Umschaltung den switch des Encoders bzw. eine weitere Taste zu benutzen. Also dann über den gpiod zu gehen, oder die Taste direkt im mediaplayerd abfragen. Also einmal drücken: iRadio, noch mal drücken: Mediaplayer.

hier jetzt mal der Testcode für eine Umschaltung per gpiod.


.cpp   mediaplayerd.cpp (Größe: 3,15 KB / Downloads: 15)

Der mediaplayerd hört auf Port 7230 nach dem Play/Stop-Kommando "plst".
Per Konsole kannst das Kommando so absetzen: echo "plst" | nc -u 127.0.0.1 7230 -w 0
Ist der Stick mit Mediendateien bereits im Radio und wird das Kommando geschickt, so wird umgeschaltet auf Mediaplayer, nochmal das Kommando absetzen wäre dann zurück zum Internetradio/TV usw. weiter.

Im gpiod bzw. rotary müsste dann an der gewüschten Stelle, also da wo dein Knopf am I/O abgefragt wird folgendes stehen:

system("echo \"plst\" | nc -u 127.0.0.1 7230 -w 0");

Probiere doch mal ob die Bedienung so besser ist. Wenn man im Mediaplayer natürlich zig hundert Dateien hat, ist es wirklich ein Krampf den Fakeeintrag zur Umschaltung anzuwählen! Daran habe ich nicht gedacht, aber genau deshalb machen wir ja solche Machbarkeits- und Bedientests und entscheiden dann was sinnvoller ist.


Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
funktioniert!

   

   

jetzt baue ich noch den gpiod und gebe dann wieder Bescheid.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
der gpiod ist fertig und funktioniert bestens! Das ist eine klasse Steuerung, die sich in die Tasten des Recorders integrieren läßt. Danke Bernhard!

Wegen des RPI-Display bin ich auf hohe gpios ausgewichen.


.png   mediaplayerd9.PNG (Größe: 184,04 KB / Downloads: 362)

Code:
// gpiod.c
//
// Beispielprogramm fuer bcm2835 lib
// Schaltet per GPIO-Taster nach Masse einen laufenden VLC-Prozess (next, prev, ...)
//
// After installing bcm2835, you can build this
// with something like:
// gcc  gpiod.c -o gpiod -lbcm2835
// sudo ./gpiod
//
// Author: Bernhard45 (mbernhard1945@gmail.com)

#include <bcm2835.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>

//#define DEBUG

// Tasteranschluesse
#define PIN_PRG_HOCH RPI_V2_GPIO_P1_35
#define PIN_PRG_RUNTER RPI_V2_GPIO_P1_37
#define PIN_PRG_HALT RPI_V2_GPIO_P1_36
#define PIN_PRG_WEITER RPI_V2_GPIO_P1_38
#define PIN_PRG_MEDIA RPI_V2_GPIO_P1_40



int main(int argc, char **argv)
{
   if (!bcm2835_init())
       return 1;

   // Pin als Eingang setzen , mit Pull-Up
   bcm2835_gpio_fsel(PIN_PRG_HOCH, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_HOCH,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_RUNTER, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_RUNTER,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_HALT, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_HALT,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_WEITER, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_WEITER,BCM2835_GPIO_PUD_UP);

   bcm2835_gpio_fsel(PIN_PRG_MEDIA, BCM2835_GPIO_FSEL_INPT);
   bcm2835_gpio_set_pud(PIN_PRG_MEDIA,BCM2835_GPIO_PUD_UP);


   // Endlosschleife, da Daemonbetrieb
   while (1)
   {
       // Zustand am Pin einlesen
       uint8_t val_prg_hoch   = bcm2835_gpio_lev(PIN_PRG_HOCH);
       uint8_t val_prg_runter = bcm2835_gpio_lev(PIN_PRG_RUNTER);
       uint8_t val_prg_halt   = bcm2835_gpio_lev(PIN_PRG_HALT);
       uint8_t val_prg_weiter = bcm2835_gpio_lev(PIN_PRG_WEITER);
       uint8_t val_prg_media  = bcm2835_gpio_lev(PIN_PRG_MEDIA);

       #ifdef DEBUG
               printf("Tastenwert PIN_HOCH: %d\n", val_prg_hoch);
               printf("Tastenwert PIN_RUNTER: %d\n", val_prg_runter);
               printf("Tastenwert PIN_HALT: %d\n", val_prg_halt);
               printf("Tastenwert PIN_WEITER: %d\n", val_prg_weiter);
               printf("Tastenwert PIN_MEDIA: %d\n", val_prg_media);

       #endif

       if (val_prg_hoch == 0)
               system("echo \"next\" | nc 127.0.0.1 9294 -N");

       if (val_prg_runter == 0)
               system("echo \"prev\" | nc 127.0.0.1 9294 -N");

       if (val_prg_halt == 0)
               system("echo \"stop\" | nc 127.0.0.1 9294 -N");

       if (val_prg_weiter == 0)
               system("echo \"play\" | nc 127.0.0.1 9294 -N");

       if (val_prg_media == 0)
               system("echo \"plst\" | nc -u 127.0.0.1 7230 -w 0");


       delay(500);
   }

   return 0;
}
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
die rotary.c für meinen "itv-grundig" hab ich erfolgreich um den Mediaswitch erweitert. Kann man das lassen?

Code:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <wiringPi.h>

#define  RoAPin    23  // GPIO-Pin 13, Pinnummer 33
#define  RoBPin    24  // GPIO-Pin 19, Pinnummer 35
#define  RoCPin    25  // GPIO-Pin 26, Pinnummer 37

unsigned char flag;
unsigned char Last_RoB_Status;
unsigned char Current_RoB_Status;

void rotaryDeal(void)
{
       Last_RoB_Status = digitalRead(RoBPin);

       while(!digitalRead(RoAPin)){
               Current_RoB_Status = digitalRead(RoBPin);
               flag = 1;
       }

       if(flag == 1){
               flag = 0;
               if((Last_RoB_Status == 0)&&(Current_RoB_Status == 1)){
                       system("echo \"next\" | nc 127.0.0.1 9294 -N");
               }
               if((Last_RoB_Status == 1)&&(Current_RoB_Status == 0)){
                       system("echo \"prev\" | nc 127.0.0.1 9294 -N");
               }

       }
}


int main(void)
{
       if(wiringPiSetup() < 0){
               fprintf(stderr, "Unable to setup wiringPi:%s\n",strerror(errno));
               return 1;
       }

       pinMode(RoAPin, INPUT);
       pinMode(RoBPin, INPUT);
       pinMode(RoCPin, INPUT);

       while(1){
               rotaryDeal();
               if (digitalRead(RoCPin) == 0){
               system("echo \"plst\" | nc -u 127.0.0.1 7230 -w 0");
               }
       delay(10);
       }

       return 0;
}
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
Das sollte so schon klappen Jupp. Wenn die Auswertung der Tastendrücke aufwendiger wird oder gar noch bestimmt werden soll wie lange ein Druck dauert (also im Bereich von ... bis ... mache das und von ... bis ... dann das), dann würde ich diesen Teil in einen extra Kindprozess legen so wie in der erweiterten Skalensimulation zum Lorenz C2. Da gibts ja für die wiringpi-Libs ein gpiod-Beispiel mit Encoder (stby_rotary.c).

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  iRadioPico - iRadio Portierung für Raspberry Pico/Pico W und RP2040 Boards OttoBerger 35 1.343 06.05.2024, 16:25
Letzter Beitrag: OttoBerger
  iRadioAndroid - iRadio Portierung für Android Geräte OttoBerger 154 10.986 23.03.2024, 13:45
Letzter Beitrag: Uli
  Saba TV-Journey mit iRadio saarfranzose 6 2.203 20.07.2023, 20:22
Letzter Beitrag: saarfranzose
  Raspberry iRadio, heavy duty Emmpunkt 5 1.154 27.03.2023, 17:58
Letzter Beitrag: saarfranzose
  russisches 6N-1 mit iRadio und RGB-Panel saarfranzose 10 1.902 11.03.2023, 15:00
Letzter Beitrag: saarfranzose

Gehe zu: