Raspberry Pi - Datei starten

david d

Level-1
Beiträge
3
Reaktionspunkte
0
Hallo,

weis jemand ob man über einen Piface Eingang und CODESYS SPS Programm eine Datei auf dem Raspberry ausführen kann?.
Ich möchte über das SPS Programm z.B. eine WAV Datei abspielen.

grüße
david
 
Hallo David

also wenn du schon mp3's abspielen kannst (über die Linux Konsole) dann kannst du den ersten Teil überspringen:
Anleitung:

am besten mit ssh (putty) zum Pi verbinden…

Dann musst du folgende
Befehle ausführen: (Zeile markieren und mit rechtsclick in putty kopieren +
ausführen also zeilenweise meine ich)

sudo apt-get install
alsa-utils

sudo
apt-get install mpg321
sudo
reboot

sudo
modprobe snd_bcm2835



sudo
amixer cset numid=3 1


dann
must du eine Datei editeeren
/usr/share/alsa/alsa.conf:

sudo nano
/usr/share/alsa/alsa.conf




  • Change
    the line “pcm.front cards.pcm.front” to “pcm.front cards.pcm.default”

So nun kommt der Teil der für CODESYS wichtig ist:


sudo nano
/etc/CODESYSControl.cfg


[SysProcess]
Command.0=mpg321

Im CODESYS Projekt SysProcessExecuteCommand (aus der SysProcess.library) oder SysProcessExecuteCommand2 (der ist neu in SP7 und liefert den Rückgabewert in die IEC Welt hoch) aufrufen.
Dazu mache ich dir noch ein Beispiel.
Btte unbedingt dieses Kommando (welches du dann über die Piface Taste startest) in einer eigenen Task aufrufen, das ist wichtig(diese Kommando's sind blockierend d.h die Task in IEC steht solange..)!



Grüße
 

Anhänge

  • PlaySound.jpg
    25,4 KB · Aufrufe: 138
  • Raspi_PlayMP3_triggered_byPLC.zip
    51,9 KB · Aufrufe: 124
Zuletzt bearbeitet:
Moin
Hallo Edwin

So früh schon wieder dran?

Hab mir das Command2 noch nicht angeschaut. Aber welche Werte kommen da zurück ? Hast du vieleicht ein Beispiel? Ich liebäugle immer noch mit KNX.
Über den EIBD Treiber kann ich werte schreiben und auch lesen. Daher mein Interesse
Gruß herbert



Sent from my iPhone using Tapatalk
 
Moin,
ja auch... da kommt folgendes zurück:

Grüße
Edwin
 

Anhänge

  • SysProcessExecuteCommand2.jpg
    90,2 KB · Aufrufe: 151
Hallo Edwin,

ich habe soweit alles installiert. Mit dem Kommando zum starten komme ich noch nicht ganz klar, bzw. wie ich es über den GPIO starte.

grüße
david
 
Hallo David,
kannst du mit meinem Projekt von oben denn schon ein MP3 über die PI SPS abspielen?
Grüße
Edwin
 
Hallo Edwin,

ja jetzt funktioniert es.
Habe beim Programmaufruf die Variable xPlaySound auf VAR_INPUT setzen müssen.
Da ich dein Beispiel in mein Projekt eingefügt habe hat noch die Bibliothek "SysTypes" gefehlt.

vielen Dank
grüße david
 
Hallo Edwin,

ich habe die passende Bibliothek eingebunden und habe einen Befehl eingegeben. Dieser wird allerdings auf dem Raspberry nicht ausgeführt. Ich möchte eine Wandlung von .h264 nach .mp4 machen, mit MP4Box. Dierekt auf dem Raspberry funktioniert der Befehl, gibt es noch eine Besonderheit für das senden von Befehlen? Ich nutze SysProcessExecuteCommand();
 
Hi,
das geht mit allen Befehlen.
Wie heißt der Befehl genau?
Hast du diesen über /etc/CODESYSControl.cfg freigeschaltet?

Grüße
 
Hallo Edwin,

Command ist bei mir AllowAll. Der Befehl lautet 'MP4Box -add /media/pi/INTENSO/Videos/video1_1.h264 /media/pi/INTENSO/Videos/video1_1.mp4'
Das Video befindet sich auf einem Stick und soll dort umgewandelt werden. In dem Verzeichnis erscheint aber keine neue Datei nach dem Aufruf aus Codesys.

Gruß
 
hm.. müsste schon gehen so,
was immer wieder falsch gemacht wird, ist das in der CODESYSControl.cfg der Eintrag versehentlich doppelt angelegt wird.
(es gibt schon eine Sektion in dem File... bitte diese verwenden für AllowAll)
Dann in IEC müsstest du einen Rückgabewert bekommen, der ist dann 25 was dann bedeutet keine Rechte diese Kommando aufzurufen.
Grüße
 
Hallo Edwin,

danke für die schnelle Antwort, ich habe bei mir einen Eintrag unter [SysProcess]. Den habe ich auch mal deaktiviert. Beides Mal kommt aber die 25 zurück.

Ich habe mal meinen Code angehängt.


Gruß
Christian
 
Hi,
wie gesagt 25 bedeutet du "keine Rechte" - häng doch mal noch CODESYSControl.cfg an.

Grüße
 
Achso, natürlich.

Dies ist meine CODESYSControl.cfg:

###################################

[ComponentManager]
Component.1=CmpOpenSSL
Component.2=CmpCAACanL2
Component.3=CmpCAASdoServer
Component.4=CmpCAASdoClient
Component.5=CmpSocketCanDrv

[SysFile]
FilePath.1=/etc/, 3S.dat
PlcLogicPrefix=0

[CmpSettings]
FileReference.0=SysFileMap.cfg, SysFileMap

[SysExcept]
Linux.DisableFpuOverflowException=1
Linux.DisableFpuUnderflowException=1
Linux.DisableFpuInvalidOperationException=1

[SysProcess]
Command.0=rcSwitch
Command = AllowAll

[CmpWebServer]
ConnectionType=0

[CmpOpenSSL]
WebServer.Cert=server.cer
WebServer.PrivateKey=server.key
WebServer.CipherList=HIGH

[CmpLog]
;Logger.0.Name=StdLogger
;Logger.0.Enable=1
;Logger.0.MaxEntries=100000
;Logger.0.MaxFileSize=500000
;Logger.0.MaxFiles=3
;Logger.0.Backend.0.ClassId=0x0000010B
;Logger.0.Backend.1.ClassId=0x00000104
;Logger.0.Filter=0xFFFFFFFF

[CmpApp]
Bootproject.RetainMismatch.Init=1
Application.1=Application

[SysMem]
Linux.Memlock=0

[CmpCodeMeter]
InitLicenseFile.0=3SLicense.wbb

[SysEthernet]
Linux.ProtocolFilter=3

[SysCom]
Linux.Devicefile=/dev/ttyAMA
portnum := COM.SysCom.SYS_COMPORT1

###################################

Diese befindet sich in /etc/
 
so:
[SysProcess]
Command=AllowAll

dann geht's "AllowAll" schaltet ja alle Befehle frei... also braucht es den anderen nicht mehr!
Grüße
 
Zuletzt bearbeitet:
Das habe ich jetzt gemacht, leider kommt immer noch die 25 zurück, muss ich noch irgendwo Benutzername und Kennwort für den Raspberry eingeben?
 
Hi,
auch die SPS neu gestartet nachdem zu es geändert hast?
Grüße
 

Anhänge

  • AllowAll.jpg
    5,2 KB · Aufrufe: 28
Hallo Edwin,

ich habe den Raspberry mit sudo reboot neugestartet und die SPS urgelöscht und das Programm neu geladen. Funktioniert leider immer noch nicht, kann das damit zusammenhängen, das ich die Dateien auf einem Stick umwandeln möchte?

Gruß
Christian
 
Hallo Christian,
es muss gehen!
bitte überprüfe noch einmal dein config file: 1 darf nur eine Sektion von SysProcess geben in dem File und Command.0=rcSwitch solltest du entfernen

[SysProcess]
Command=AllowAll

dann nochmals die Fehlermeldung anschauen im IEC Code wenn du es aufrufst.

Grüße
 
Hallo Edwin,

hast recht es funktioniert. Ich habe jetzt genau:

[SysProcess]
Command=AllowAll

eingegeben.

Vorher hatte ich immer:

[SysProcess]
Command = AllowAll

Deshalb hat er das auch nicht erkannt wegen der Leerzeichen.

Vielen Dank für die Unterstützung.

Gruß
Christian
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…