Remote to control a VC++ Cinder application for the Visually Impaired
I am working on a project for the Visually Impaired which uses a Depth Camera to let them know what is around them.
Here are some links for the project.
We use 8 vibration motors on the body which connect to the main application over WiFi to give haptic feedback about the obstacles in front.
The main application is written in VC++ and Cinder.
The main application runs on a laptop which goes in a back pack, this is why we need a remote control application which can control the main application, and know the status of the main application (if it is running, status of the haptic feedback motors, range of detection, etc). I stumbled upon unified remote and I came to know that I can make a custom remote.
My question is how can I do the communication with the app to get the status of the main application. For example, how do you get the names of the slides in the advanced powerpoint remote. I want to know simple things like if a motor is on/off. If the main app is running/off or it crashed etc.
Please tell me how can I do that.
Also if you have any interest in building this remote, please let me know and we can communicate further and I can share more details.
This project is about making a difference in how a visually impaired perceives the world by augmenting their senses. You help can take a one step closer to that dream.
To enable communication between your application and unified remote, you need to use some sort of IPC (interprocess communication). PowerPoint for example uses COM (which is a Windows native technology that can do a lot of things, albeit very complex to use and implement).
I would say one of the easiest methods would be to use files. You could have two files, one which is an input file (where Unified Remote writes commands to control the application), and another which is an output file (which shows the current status of the application).
For example, every time the motors statuses change you could write a file (let's say status.txt) from your cinder application that contains the status of each motor per line:
on on off off
You could then create a remote that reads this file using the
local lines = libs.fs.readlines("C:\my_app\status.txt");
Conversely, for input your cinder application could read a file (say control.txt) and waits for a command to appear. Your remote could write a line to the file using the
For more info about the file system library in Unified Remote, have a look here:
I think that would be the simplest solution. To do something more advanced you could implement a web server in your cinder application (for example using http://pocoproject.org/). That is how most applications solve IPC now days, but will require much more work.
FYI: all of the standard remote controls are open-source. Have a look here for inspiration: