Home AMX User Forum NetLinx Studio

Projector Cooling Lockout

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:
---------------------------------------------------------------------------------------------------------------------------------------------------------
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 )

Comments

  • ericmedleyericmedley Posts: 4,177
    One very simple method is to set a flag in the power down state and put a trap in the other things like source select and volume, etc...

    So something like
    BUTTON_EVENT[TP_1,Soutce_Select_Buttons]
    {
    push:
      {
      if(!proj_power_down_flag) // if the projector is NOT powering down
        {
        // go ahead and do the source select command.
        }
      else
        {
        send_command TP_1, 'adbeep'    
        // do something to let them know that they cant do that  right now.
        }
      }
    }
    

    Of course, I'm oversimplifying it. But that's the basic idea.
  • a_riot42a_riot42 Posts: 1,624
    playskool1 wrote: »
    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.

    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
  • HedbergHedberg Posts: 671
    a_riot42 wrote: »
    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.
  • HedbergHedberg Posts: 671
    So, to address the issue itself:

    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?
  • no it is not cleared. how do i go about clearing it and how come?
  • ericmedleyericmedley Posts: 4,177
    playskool1 wrote: »
    no it is not cleared. how do i go about clearing it and how come?

    Either

    c_Buffer='' // this is two ' not a single "
    or
    CLEAR_BUFFER c_Buffer

    will work
  • DHawthorneDHawthorne Posts: 4,584
    This topic seems to keep coming up.

    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.
  • DHawthorne wrote: »
    This topic seems to keep coming up.

    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.
  • I don't like locking anything if not absolutely necessary. Outgoing command buffering to a projector makes sure it never gets sent a command before it's ready. I blink the power button during transitions, and have a text field next to the power button that blinks the current status too. But the actual power and blackscreen buttons are the only 2 buttons that I 'lock' during a projector transition.

    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!
  • It all depends on the user. I have a different user every 1.5 hrs so I need to make things hardcore. Since they all have different levels of knowledge on technical things I tend to lead the user more so than let them have too many choices.
  • DHawthorneDHawthorne Posts: 4,584
    It all depends on the user. I have a different user every 1.5 hrs so I need to make things hardcore. Since they all have different levels of knowledge on technical things I tend to lead the user more so than let them have too many choices.

    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.
  • It all depends on the user. I have a different user every 1.5 hrs so I need to make things hardcore. Since they all have different levels of knowledge on technical things I tend to lead the user more so than let them have too many choices.

    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.
  • a_riot42a_riot42 Posts: 1,624
    DHawthorne wrote: »
    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 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
  • JeffJeff Posts: 374
    When I first started, I always popped up a page over anythign that would turn the projector on, but still allowed people to access other buttons in the interim. Then I moved to a new company, and one of the programmers here wrote a series of projector modules that does an excellent job of queuing data. Now, I just let it go the way things get pushed. If the projector is cooling down, and you turn it on, as soon as it finishes cooling down, it turns back on. Sure, it takes forever, but the user gets exactly what they want, all the time.

    I kinda like the approach. It's different from other ways to do it, sure, but I'm becoming a fan.

    J
  • Jeff wrote: »
    Sure, it takes forever, but the user gets exactly what they want, all the time.

    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.
  • JeffJeff Posts: 374
    I do almost entirely conference room systems, so my panels all have a section of the panel with current projector status at all times. This way I don't need to show a popup. It either reads "Off", "Warming Up", "Cooling Down", or the name of the source currently displayed. I guess if it ever became an issue I could make it more obvious, but to me, if the projector status is "Cooling Down", and you can't figure out why it isn't turning on . . . . .

    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
  • Jeff wrote: »

    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.
  • ericmedleyericmedley Posts: 4,177
    JohnMichnr wrote: »
    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...
  • JeffJeff Posts: 374
    More than half of my work is government or government contractors. I assume there will be chimps running the system.

    And yes, Modal is awesome beyond all reason.

    J
  • a_riot42a_riot42 Posts: 1,624
    JohnMichnr wrote: »
    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)

    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.
    JohnMichnr wrote: »
    After all - you never know when a "chimp" is going to run your system.

    Or program it...
    Paul
  • a_riot42a_riot42 Posts: 1,624
    Jeff wrote: »
    When I first started, I always popped up a page over anythign that would turn the projector on, but still allowed people to access other buttons in the interim. Then I moved to a new company, and one of the programmers here wrote a series of projector modules that does an excellent job of queuing data. Now, I just let it go the way things get pushed. If the projector is cooling down, and you turn it on, as soon as it finishes cooling down, it turns back on. Sure, it takes forever, but the user gets exactly what they want, all the time.

    I kinda like the approach. It's different from other ways to do it, sure, but I'm becoming a fan.

    J

    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
  • JeffJeff Posts: 374
    a_riot42 wrote: »
    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_riot42 wrote: »
    I am curious how hitting source buttons when the 'are you sure' popup is displayed created havoc with your program.
    Or program it...
    Paul

    A) that was ten years ago - my programming has changed a lot.
    B) 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.
  • a_riot42a_riot42 Posts: 1,624
    Jeff wrote: »
    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 :)

    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
  • DHawthorneDHawthorne Posts: 4,584
    I don't queue commands during a cool down period, I throw them away. I've had one too many experiences of antsy customers whacking on buttons expecting an instant response, then watching in horror as the thing they just turned off comes back on and starts going ape ... and, as mentioned, well after they walked out of the room sometimes. That's part of my logic in a pop-up lockout screen; the end user knows exactly why things are not responding, and they know exactly when they can start mashing buttons again. It's not so much of a lockout as it is notification they are being ignored :).
Sign In or Register to comment.