Raspberry Pi - Datei starten

david d

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
    PlaySound.jpg
    25,4 KB · Aufrufe: 137
  • Raspi_PlayMP3_triggered_byPLC.zip
    51,9 KB · Aufrufe: 124
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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 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();
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
Aufruf_Befehl.jpg

Gruß
Christian
 
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/
 
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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zurück
Oben