BDLCAM - Webcam Control Software
A file can be place in the same folder as the BDLCAM program and can contain commands to be blocked from web users. The file should be called 'blocked.txt' and should contain one command per line. A simple example of a blocked.txt file would be:
This would mean that any web requests starting with x10 would not be processed.
The command does not have to be a full command, you can place parts of commands. For example, placing 'move' in the file would not allow any command beginning with 'move' whilst 'movelt' would only stop a user move a camera left. A good example of use is where you only want viewers to be able to chose a preset. Putting 'move' in the blocked.txt file would stop the move commands but would still allow the 'pres' commands.
Macros enables you to issue a series of commands with a single command. The macros are stored in a file called macro.txt which should be placed in the same folder as the BDLCAM program. The format of the file is 'macroname,command' with one command on each line. An example of a macro.txt file could be:
With this example 'cmd=macromymacro' would cause two commands to be issued, pres00 and pres01.
With the introduction of macros comes a new command 'sleep'. This enables you to place a pause/sleep between commands. The format of the command is sleepxxxx, where xxxx = the number of seconds to sleep/pause. An example would be:
Now 'cmd=macromacro2' would cause the camera to go to pres00 and then pause for 5 seconds before going to pres01.
In addition to the previously available inactivity triggers 'focus saver' and 'goto preset', you can now specify a macro to be triggered after a specified number of seconds.
BDLCAM supports multiple cameras. The way this is achieved is by allowing one implementation of BDLCAM to call another. So basically you have one master instance that typically communicates with the outside world (port forwarding etc) and then slave instances that can either be on the same machine or different machine and don't need to visible to the outside world. When running multiple instances on the same machine just copy the bdlcam folder as bdlcam01, bdlcam02 etc for the slave instances. I would also recommend renaming the exes to bdlcam01.exe bdlcam02.exe etc to avoid getting confused.
This can be seen in the demo setup where you can select one of two cameras and then move the selected camera. In the example I have BDLCAM running on two seperate machines although they can also be on a single machine.
This is achieved using an 'id' feature which allows you direct a command to another implementation of BDLCAM. The id can prefixe a command and id00 is always the local version of BDLCAM. Therefore 'cmd=movelt' and 'cmd=id00movelt' would achieve the same results. For ids from 01-99 BDLCAM checks a 'remoteid.txt' file that is also placed in the same directory as BDLCAM. The format of the 'remoteid.txt' file is id,URL:
In the case above 'cmd=id01movelt' would redirect the 'movelt' command to the BDLCAM program running on port 81 of the machine with IP address 220.127.116.11
An additional command 'activeid' enables us to make further use of this feature. When a command comes from a web user where no id is specified it is automatically prefixed with the current activeid. When BDLCAM first runs activeid is always set to '00', but it can be changed using the command 'activeidxx' (where xx is the required id).
Continuing the example above 'cmd=movelt' would move the local camera left, but then after issuing 'cmd=activeid01', 'cmd=movelt' would then be sent to the other implementation of BDLCAM specified in the 'remoteid.txt' file. This allows for commands from a single control panel to be sent to different cameras.
In the demo I used two of the advanced features above, macros and activeid.
If you look at the HTML for the camera buttons you will see that they are calling macros, 'cmd=id00macrocamera01' and 'cmd=id00macrocamera02'. My macro.txt file looks like this:
So clicking on camera 1 switches the video switcher to channel one and then sets the activeid as 00. Notice that the commands are prefixed with id00, this is because regardless of the activeid I always want the commands sent to the BDLCAM program with the video switcher attached.
For each camera template included with BDLCAM there are two html files
There is the main file such as general.htm and then another file that has the suffix -cp so general-cp.htm The -cp suffixed file contains the controls with image map.
In the main file you will see some tags/comments of <!--bdlcam-CodeStart--> and <!--bdlcam-CodeStop--> When using the "Use Easy Setup" mode everything between those tags is replaced with the code shown in the video streaming setup page. This was added to help those who are not as comfortable with editing html code.
The other files to look at are the .apl files which contain the streaming code for the various programs and therefore what is inserted bewith the <!--bdlcam-CodeStart--> and <!--bdlcam-CodeStop--> The xx.xx.xx.xx:xx is replaced on the fly by bdlcam with the correct IP address again removing the need for users to have to work out the IP address or have to edit the file.
Under view configure devices select 'homemade LPT' then
in the port box put the address of the port ie '&H378' etc
The command is vselxx where xx is the value which is explained below
The parallel switchers typically use binary bits
So you would send 9 (1+8)
Then you want to turn on 5 as well as 1 and 4 you would send
So you would send 25 (1+8+16)
Now you want to turn off 4 and leave 1 and 5 on
So you would send 17 (1+16)