Source usage
Gday all,
I'm working on source tracking with RMS, and have the following paradigm.
A row of 5 source buttons to select a source. (PC, Laptop, DVD, VCR, DocCamera.)
Two data projectors which can show any source, irrespective of what the other projector is showing. Each projector can be independently blanked.
One button for each projector, effectivly acting like a "take" button on a matrix switcher.
The usual process for displaying a source would be:
1 - Select the desired source from the row of sources.
2 - Specify which projector to show it on via "take" button.
I am trying to obtain source tracking for the 5 sources, to see what proportion of time they are being used (either on one or both projectors). When a projector is blanked, the Source Usage timer should consider that the equipment is not being used. (I'm interested more in behavioural use rather than an equipment odometer.)
Should I create a virtual device for the PC & Laptop, and try to shoe-horn the RMSTransportMod onto the virtual, or should I be using the RMSSrcUsage module instead? Given that my DVD & VCR are IR controlled I can't get any real transport feedback. I was hoping to track their usage in the same manner as PC, Laptop & DocCamera.
Any thoughts / guides appreciated.
Roger McLean
Swinburne University
I'm working on source tracking with RMS, and have the following paradigm.
A row of 5 source buttons to select a source. (PC, Laptop, DVD, VCR, DocCamera.)
Two data projectors which can show any source, irrespective of what the other projector is showing. Each projector can be independently blanked.
One button for each projector, effectivly acting like a "take" button on a matrix switcher.
The usual process for displaying a source would be:
1 - Select the desired source from the row of sources.
2 - Specify which projector to show it on via "take" button.
I am trying to obtain source tracking for the 5 sources, to see what proportion of time they are being used (either on one or both projectors). When a projector is blanked, the Source Usage timer should consider that the equipment is not being used. (I'm interested more in behavioural use rather than an equipment odometer.)
Should I create a virtual device for the PC & Laptop, and try to shoe-horn the RMSTransportMod onto the virtual, or should I be using the RMSSrcUsage module instead? Given that my DVD & VCR are IR controlled I can't get any real transport feedback. I was hoping to track their usage in the same manner as PC, Laptop & DocCamera.
Any thoughts / guides appreciated.
Roger McLean
Swinburne University
0
Comments
You can use the amx devices from the “i!-ConnectLinxStdFunctionList.xls” or create your own as I did here in the RMSMain.axi.
.
DEFINE_VARIABLE /////////////////////////////////////////////////////// // Devices /////////////////////////////////////////////////////// // i-ConnectLinx paramater storage VOLATILE SLONG asnNumberLevelArgValues[3] VOLATILE CHAR acStringEnumArgValues[3][50] (*Custom Sources*) // PC_SEL vdvCLActions(1051) TpButton(101) // MAC_SEL vdvCLActions(1052) TpButton(102) // LAPTOP_SEL vdvCLActions(1053) TpButton(104) // REAR_VGA_SEL vdvCLActions(1054) TpButton(105) // DOC_CAM_SEL vdvCLActions(1055) TpButton(110) // AUX_CVIDEO_SEL vdvCLActions(1056) TpButton(111) // REAR_CVIDEO_SEL vdvCLActions(1057) TpButton(112) // VCR_SEL vdvCLActions(1058) TpButton(4) // DVD_SEL vdvCLActions(1059) TpButton(3) // i!-ConnectLinx Standard Actions VOLATILE INTEGER nchCLButtons[] = { 1051, // Select PC 1052, // Select MAC 1053, // Select Podium Laptop 1054, // Select Rear VGA 1055, // Select DocCam 1056, // Select Podium AUX 1057, // Select Rear AUX 1058, // Select VCR 1059 // Select DVD } // i!-ConnectLinx Touch Panel Buttons VOLATILE INTEGER nchCLPanelButtons[] = { 101, // Select PC 102, // Select MAC 104, // Select Podium Laptop 105, // Select Rear VGA 110, // Select DocCam 111, // Select Podium AUX 112, // Select Rear AUX 4, // Select VCR 3 // Select DVD } DEFINE_START // i!-ConnectLinxEngineMod DEFINE_MODULE 'i!-ConnectLinxEngineMod' mdlCL(vdvCLActions) (*******************************************) (* DATA: i!-ConnectLinx Engine *) (*******************************************) DATA_EVENT[vdvCLActions] { STRING: { STACK_VAR CHAR cTemp[1000] CHAR cTrash[10] INTEGER nId // Look for arguments IF (LEFT_STRING(DATA.TEXT,3) = 'ARG') { // Get arg ID cTemp = DATA.Text cTrash = REMOVE_STRING(cTemp,'ARG',1) nId = ATOI(cTemp) cTrash = REMOVE_STRING(cTemp,'-',1) // Store it if we have room IF (MAX_LENGTH_ARRAY(acStringEnumArgValues) >= nId) acStringEnumArgValues [nId] = cTemp } } ONLINE: { // Set Room Info SEND_COMMAND DATA.DEVICE,'SET ROOM INFO-Custom Room Name HERE' // System Controls // Power On (1001) // Power Off (1002) //SEND_COMMAND DATA.DEVICE,'ADD STD-1001-1002' (*Custom Sources*) SEND_COMMAND vdvCLActions,'ADD ACTION-1051,Select PC,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1052,Select MAC,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1053,Select Podium Laptop,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1054,Select Rear Panel VGA,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1055,Select Document Camera,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1056,Select Podium AUX Video,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1057,Select Rear Panel AUX Video,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1058,Select VCR,,Sources' SEND_COMMAND vdvCLActions,'ADD ACTION-1059,Select DVD,,Sources' (*Macro for projector power*) SEND_COMMAND DATA.DEVICE,'ADD STD-1101-1102' SEND_COMMAND vdvCLActions,"'ADD MACRO-Projector Power OFF'" SEND_COMMAND vdvCLActions,"'ADD MACRO-Projector Power ON'" (*Macro for system power*) SEND_COMMAND DATA.DEVICE,'ADD STD-1002' SEND_COMMAND vdvCLActions,"'ADD MACRO-System Power OFF'" //SEND_COMMAND vdvCLActions,"'ADD MACRO-System Power ON'" } } (*******************************************) (* BUTTON: i!-ConnectLinx Engine *) (*******************************************) BUTTON_EVENT [vdvCLActions,nchCLButtons] { PUSH: { DO_PUSH(vdvTPa,nchCLPanelButtons[GET_LAST(nchCLButtons)]) } } (*******************************************) (* CHANNEL: i!-ConnectLinx Feedback *) (*******************************************) CHANNEL_EVENT [vdvTPa,nchCLPanelButtons] { ON: ON[vdvCLActions,nchCLButtons[GET_LAST(nchCLPanelButtons)]] OFF: OFF[vdvCLActions,nchCLButtons[GET_LAST(nchCLPanelButtons)]] }This is all you need to add in your MAIN.axs file. RMS will do the rest.
Your references to i!-ConnectLinx got me on the right track. When initially reading through the RMS Programmer documentation I skipped the chapter on "Upgrading from v1.0" since I'm starting out with v3.0. As luck would have it, that chapter gives quite a nice description of the changes between v1 & v2. The section on "Source Usage & Multiple Displays" was particularly useful in my situation.
Out of curiosity, are there any guidelines with channel allocations for the vdvCLActions? Am I free to use whatever I want? Are 0-999 reserved for anything in particular?
Yours,
Roger McLean
Swinburne University
Hi Roger.
AMX Aust can give you the complete list of Connectlinx parameters. There's a partial list in the RMS Programmer's Guide somewhere from memory.
...Phil Dunn
I'd like to put all my IDs into a suitable range that will not be encroached upon by the AMX Standard Action List (SAL) in future revisions. Currently I am picking small ranges within the SAL range (1001 - 1887) that are not currently utilised. It's working fine for my purposes - I just don't want it to cause subtle problems later on if the SAL is enhanced to use the "spare" IDs that I'm currently using...
Roger McLean
Swinburne University
Roger,
Another tip - to track multiple sources, don't forget to set set RMSSetMultiSource(TRUE). That will capture true select time for all sources regardless of which projector is used. Otherwise sources are treated as mutually exlcusive & you'll get inaccurate data.
Source usage can never be treated as precision data. There are too many variables especially with IR-controlled devices - eg user pressed play or stop on the DVD, not the panel. Or the user presses Laptop then walks out of the theatre leaving everything running for hours.
The best you can hope for is approximate - but still useful - figures. But don't tell management they are anything but accurate!!
Cheers.
...Phil
(Brisbane, Oz)
Yeah, I thought about the IR controlled issue. My approach is to track the source that I'm sending to the projector rather than transport. Given that we have blanking available on both our projectors, I'm taking the approach that lecturers won't want to show a huge blue screen (no sync) for extended periods of time. Looking at my past logs they tend to blank the projector if they don't want it on. (When a projector is blanked, my SourceSelect turns off that channel in ConnectLinx, so I'm not counting blank-minutes.) When a projector is blanked for 15 minutes, it is automatically turned off by the AMX master.
Oh, and as for people leaving the system running, I've got PIRs in the rooms. If there is no movement for 2 hours, a "Confim shutdown" appears on the touch panel. If it is not confirmed or cancelled within 5 mintues, the system shuts down everything. (2 hours is suitable for a long media class where they are sitting very still watching a movie.) I've also got a midnight shutdown (time synced), with no confirmation.
Thanks for your tips.
Roger McLean.
Swinburne University.