Posted 02 December 2012 - 03:30
I have recently gotten a raspberry pi, and have decide to not use a Desktop Environment. I have QT, and other development packages installed, however without QT-Embedded, I can't use the virtual windowing tools that QT Comes with. I wanted to create a media center style PC without the fancy additions of XBMC and other media centers. As I don't have a DE/Window system I can't run anything with a gui. I wanted to make a system that would allow me to run/play movies on the pi from any of my devices (Phone, Tablet, Desktop). So I have decided to make a GUI/Server on my computer that would control the PI via TCP. I would use PHP for a web system that would create trigger files that a FileSystemWatcher would pick up for the mobile devices, and will use a direct C# gui on the desktop.
I can do this with no problem as it is done with a standard TCP Connection. I will send commands such as: ~MSFS; to Mount the Shared file system (if not done), ~PV;FileName to Play the Video using omxplayer. All of this is pretty easy and as I will drive everything from the desktop it isn't a lot of pi side stuff to do. Now the problem is.. by forking the process I lose the direct input into the program, and as I will be running it externally instead of on the device I don't get the direct CLI input. As it is all command line, I pause videos by pressing "p". I am sure there are other commands I just haven't looked into them.
As I will be controlling it from the PC Server I want to have the ability to send commands such as ~PAUSE; or equivelant, from the desktop to the pi, and have it send the 'p' key to the omxplayer. I have read about using pipes to communicate between parent a child processes, however as I am not taking input via command line for this it would be done all internally during the TCP Packet processing, I don't know how to get that stream. In C# it would just be a memorystream or stock stream that I could just save off and call good. I am not sure if I can do that with the pipe. Now, pausing is just an example, however having the ability to pause a video is a good thing, and would really be a requirement in making it useful.
I am making a client/server program for my Raspberry PI, that will run a child process. I need to send a specific key to the child process when a specific packet is sent. ie) Server Sends ~PAUSE, Client Processes and sends the "p" key to the child process, which then should pause the video (as that's how it works when I run the program directly, hitting p will pause it). How do I do it?