Projector Cooling Lockout
playskool1
Posts: 64
It is weird that this worked on a project that had 2 projectors and the one that I am now working on only has 1 projector.
What I am trying to point out is when you turn off the projector it starts its cooling process before initially turning off all the way. On my TP I created a pop up page so that a message will pop up and say "Projector is cooling down. Please wait." this message stays on and locks out any button presses until the projector is powered down.
What is actually happening is that the pop up does not even appear. While turning off a projector and it is in the cooling state, I am still able to switch inputs, change volume, and press other buttons.
I am trying to lock that out during the cooling process. This is a portion of the code:
What I am trying to point out is when you turn off the projector it starts its cooling process before initially turning off all the way. On my TP I created a pop up page so that a message will pop up and say "Projector is cooling down. Please wait." this message stays on and locks out any button presses until the projector is powered down.
What is actually happening is that the pop up does not even appear. While turning off a projector and it is in the cooling state, I am still able to switch inputs, change volume, and press other buttons.
I am trying to lock that out during the cooling process. This is a portion of the code:
--------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_DEVICE dvPROJECTOR = 5001:1:0 //MITSUBISHI XL255OU PROJECTOR dvTP = 10001:1:0 //AMX MVP-8400 8" WIRELESS --------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_CONSTANT TL1 = 1 --------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_TYPE STRUCT _PROJ { INTEGER POWER CHAR RESPONSE[5] } --------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_VARIABLE INTEGER projector1power INTEGER projectorpower INTEGER nLOCKOUT _PROJ sPROJ[1] LONG TIMES[] = {0,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000} --------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_START CREATE_BUFFER dvPROJECTOR,sPROJ[1].RESPONSE CREATE_BUFFER dvDSP,cDSP_RESPONSE SEND_COMMAND dvTP,"'PAGE-Logo'" --------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_EVENT BUTTON_EVENT [dvTP,23] //Projector ON BUTTON_EVENT [dvTP,24] //Projector OFF { PUSH: { projector1power = button.input.channel PULSE [button.input.device, button.input.channel] IF(button.input.channel =23) SEND_STRING dvPROJECTOR,"'00!',$0D" //ON Projector ELSE SEND_STRING dvPROJECTOR,"'00"',$0D" //OFF Projector } } BUTTON_EVENT[dvTP,254] //SHUT DOWN { PUSH: { TIMELINE_CREATE(TL1,TIMES,11,TIMELINE_ABSOLUTE,TIMELINE_ONCE) } } BUTTON_EVENT[dvTP,255] //CANCEL { PUSH: { SEND_COMMAND dvTP,"'PAGE-Source_Select'" TIMELINE_KILL(TL1) } } BUTTON_EVENT[dvTP,256] //SHUT DOWN NOW { PUSH: { TIMELINE_KILL(TL1) SEND_STRING dvPROJECTOR,"'00"',$0D" //TURN PROJECTOR1 OFF SEND_STRING dvDSP,"'SET 1 FDRMUTE 49 1 '" //MUTE PROGRAM VOLUME SEND_COMMAND dvTP,"'PAGE-Logo'" //FLIP TO START UP PAGE } } TIMELINE_EVENT[TL1] { SEND_COMMAND dvTP,"'PAGE-Shut_Down'" SEND_COMMAND dvTP,"'TEXT1-',ITOA(11 - TIMELINE.SEQUENCE)" IF(TIMELINE.SEQUENCE = 11) { SEND_STRING dvPROJECTOR,"'00"',$0D" //TURN PROJECTOR OFF SEND_STRING dvDSP,"'SET 1 FDRMUTE 49 1 1'" //MUTE PROGRAM VOLUME } } DATA_EVENT[dvSWITCH] DATA_EVENT[dvPROJECTOR] { ONLINE: { SEND_COMMAND DATA.DEVICE,"'SET BAUD 9600,N,8,1 485 disable'" } STRING: { IF(LENGTH_ARRAY(sPROJ[1].RESPONSE)) { sPROJ[1].POWER = ATOI(MID_STRING(sPROJ[1].RESPONSE,4,1)) //0-OFF;1-ON;2-COOLING } } } --------------------------------------------------------------------------------------------------------------------------------------------------------- DEFINE_PROGRAM WAIT 10 { SEND_STRING dvPROJECTOR,"'00vP',$0D" } IF(sPROJ[1].POWER = 2) { SEND_COMMAND dvTP,"'@PPN-LockOut'" SEND_COMMAND dvTP,"'TEXT3-Projector is cooling down. Please wait.'" } ELSE { IF(!nLOCKOUT) SEND_COMMAND dvTP,"'@PPF-LockOut'" } [dvTP, 23] = ( projector1power = 1 ) [dvTP, 24] = ( projector1power = 0 )
0
Comments
So something like
Of course, I'm oversimplifying it. But that's the basic idea.
Why lock users out of their panel? What if they need to turn the lights on or change the volume, etc? I have found locking the panel to be annoying to clients because its just annoying and also because they will think its broken when it stops responding to button presses, which is also annoying. Plus its just plain annoying.
Paul
Then don't do it.
We've done this several different ways. Probably the one that I prefer is to build a pop up that just covers the projector power on button, thereby disabling it and nothing else. The pop up has a flashing button on it that just says that the projector is in a cool down cycle and that the user needs to wait before trying to turn it back on. Sometimes, the customers preference is to have this pop up show whenever the projector is cooling. Other times, the customer prefers that the pop up only appear if the power on button is pressed while in the cool down cycle -- instead of trying to turn the proj on, the pop up appears. Then, of course, there's a decision to be made about what to do when the cool down cycle is over. Some like to store the power on and execute when the cycle is over, others prefer to just ignore the power on. There are arguments both ways, but it really doesn't matter.
As far as the coding example posted, I don't see how the buffer that is being examined in the data_event is ever cleared. sProj[1].response -- is it ever cleared?
Either
c_Buffer='' // this is two ' not a single "
or
CLEAR_BUFFER c_Buffer
will work
One good reason to lock a touch panel is so that the client doesn't keep mashing buttons and getting frustrated because they don't understand why the projector isn't responding. A nice popup asking them to patiently wait sidesteps this. But I always put a "close" button on it, so they can override the lock at will. It's more of a notification then than a lockout, but at least they know what is going on.
Exactly the reason why I have a popup go over the whole panel. I like the idea of having an "close" button for those who really really need to override the lockout wait time.
Of course users never press the other buttons... they are too mesmerized by the blinking buttons and text! They even tend to take a cheerleader approach as the projector status updates: Initializing... Striking Lamp... Warming up... ON! Yay!
That has been my bottom-line approach too: make it as brain-dead simple to use as possible, and as idiot-proof as possible. If a more advanced user comes along, for them make exceptions with more intricate controls. For example, we sell a fair amount of Meridian receivers. My standard control set for them is limited to a page of surround presets and a volume control, basic navigation and the front panel display. Yet, I recently had a customer who wanted to edit surround modes, and tweak them on the fly ... so for him I has to add bass, treble, surround delay parameters, etc. But I by no means give that to every single client, most would just find new ways to make it sound like junk.
I also agree - I was originally a whole page countdown timer for warming and cooling (cooling only shows if the system is powered on and a projector source is selected during the cooling time) For me it's a control thing (just ask my wife...) I think ther eis a part of me that likes making people wait to use the system. but that is for a different forum.
Seriously now I try to allow use of lighting controls, shades and environment, and you can change what source is selected but you don't get source controls for the current selected source until the warming/cooling screen goes away. I don't turn on teh projector unitl a projector source is selected.
I generally give the user complete control over any surround mode, individual spkr levels, etc but have a button that returns everything to a known state. They seem to enjoy playing around with all the features and seeing what they do knowing they can always return to a state that sounds good.
Paul
I kinda like the approach. It's different from other ways to do it, sure, but I'm becoming a fan.
J
I like that way as well - as long as you let the end user know what is going on - so they don't keep pushing the buttons constantly. That is why I use the pop-up to alert people.
You ever note how when you describe just how much of an idiot you'd have to be to not be able to use a touchpanel correctly, you start being able to picture people in your head who are EXACTLY that much of an idiot?
J
especially when the sales team shows up...
My favorite touchpanel assumption problem ( Me assuming that people can figure it out); I did a system about 10 years ago, and it was used an like by the end user, but the company I was working for at the time was shooting a promotionaly video in that room with a monkey. ( A chimp actually) The chimp was in a suit and tie and was shot sitting in the chair at the head of the table pushing buttons on the touchpanel. The audio was saying something like - so easy even our executives can run the system. (executives = chimp in case you didn't pick that up)
Well I get a phone call the next morning tha the touchpanel was locked up. I go down there - reboot and the system starts working, but I couldn't figure out why it had happened. (I had to review part of the video) Well it ends up that the chimp had pressed the system off button, poping up an Are You Sure page with a yes and no. The chimp randomly pressing buttons had started selecting source buttons instead of answering the Yes/No buttons. And that cause great havoc in my program. After that I started being a little more rigid in locking down the panels and covering over or locking out buttons I don't want to be pressed (love the model setting)
After all - you never know when a "chimp" is going to run your system.
Oh, I'm reasonably sure that everyone of my clients have a chimp. They just don't show them when I'm around...
And yes, Modal is awesome beyond all reason.
J
I am curious how hitting source buttons when the 'are you sure' popup is displayed created havoc with your program. My 'are you sure' popup is modal but even if someone could do that I can't think how it could have any ill effect.
Or program it...
Paul
The only thing I don't like about that is if someone is using the projector and turns it off prematurely, and then unsuccessfully tries to turn it back on during its cooldown, they might walk away thinking the system is turning off. Then when the cooldown period is over, it comes back on since they hit the on button but they are long gone by then. Since some of these projectors are on a lift, I don't want them going back into the ceiling and turning on as its a fire hazard. So I make it so that turning it on during its cooldown period does nothing, but turning it off during the warmup will turn it off. This way, the only way it comes on is if the unit is off and the user hit the on button. If they hit off during the warmup though it will queue that and turn the unit off after the warmup is finished so that you can leave and not worry about turning it off after the warmup.
Paul
I can see where you're going with that. The walking away part might be an actual issue, but the way my systems are designed, the lift isn't ever a fire hazard. I don't bring down the screen and lift in response to you turning the projector on, I bring down the screen and lift in response to the projector telling me it's coming on. So no matter how it happens, even if a user has walked away, if the projector comes back on, the lift will come back down. No fire hazard
A) that was ten years ago - my programming has changed a lot.
that was Company C stuff - no model
c) I believe that ( and I'mtrying to remember) there were certian lockouts preventing true source selection from hapenning with the RUSure page popped. ( source would not actually route and go to the projector - or in this case any of the three displays at the front of the room - 40" mitsubishi CRT monitors at the time) But the lockouts did not extend to the page flips - which continued. So the system looked to the end user like it was selecting sources, but nothing was happening in the program to switch the sources.
But that doesn't really matter - I just wanted to tell the story of the chimp.
That's good. Still, it can leave the projector on with no one watching which is why I do it that way. People tend to get funny about it because lamps are so expensive and they have a limited life span.
Paul