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.
The Need:
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.
TLDR;
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?
Here's how it goes...
17yo Teen: Doctor, is this skin lesion cancerous? [attaches photo]
Physician: [image detected] "Please confirm your age."
Phone OS: [image exchange detected] "CHILD P0RN! YOU'RE BOTH GETTING ARRESTED!"
17yo Teen: But it's a photo of my bare feet!
Physician: But I presented my ID and medical credentials!
MP: Fantastic work lads! Two fewer perverts in this country! Cheerio!
Chrome is Google's commercial web browser product; it consists of their proprietary features (Googlified everything including profile sync) plus their chromium project barebones web browser. Google developers control the chromium project.
The chromium project is the "core" for the web browser product from other vendors including Microsoft Edge (their own proprietary features), Opera (their own features), Brave (their own features), etc...
The "downstream" teams at Microsoft, Opera, Brave, etc., can either integrate their original MV2-supporting code into future builds, or they can integrate chromium wholesale and simply add-on their own features/functionalities -- their 'current' build pipeline, so to speak.
THIS is why changes at the chromium project affect so many products besides only Google's commercial Chrome browser.
--
Edit to add: The chromium project is open-source, and is the piece that's Google's code contribution to the W3C and world wide web at large; there are no licensing fees for others to use the code in their own products... which is what they do. Other browser engines do exist (Firefox's for example) but it's nearly impossible to have both engines bundled into the same 1 browser product.
You're comparing settler colonies to colonized war torn nations. It's easy to become the richest by coming in and stealing other people's land, culture and resources.
Question
firey
Background/Description:
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.
The Need:
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.
TLDR;
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?
Link to comment
https://www.neowin.net/forum/topic/1123316-c-send-keypresscode-to-a-child-process/Share on other sites
2 answers to this question
Recommended Posts