I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
|
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a >lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
toggle quoted message
Show quoted text
On 4/12/2012 5:56 PM, avsystemdesign wrote: I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
I agree with Steve. There are times where you can't get around using a stepper, but time based symbols shouldn't be your first choice if avoidable.
toggle quoted message
Show quoted text
--- In Crestron@..., Steve Kaudle <crestron@...> wrote: From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a >lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
toggle quoted message
Show quoted text
--- In Crestron@..., Steve Kaudle <crestron@...> wrote: From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a >lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
Do you have full feedback from the displays?
toggle quoted message
Show quoted text
--- In Crestron@..., "avsystemdesign" <avsystemdesign@...> wrote: Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle <crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a >lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
Yes, the displays do provide feedback.
toggle quoted message
Show quoted text
--- In Crestron@..., "weddellkw" <weddellkw@...> wrote: Do you have full feedback from the displays?
--- In Crestron@..., "avsystemdesign" <avsystemdesign@> wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle <crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a >lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
toggle quoted message
Show quoted text
On 4/12/2012 6:32 PM, avsystemdesign wrote: Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@...> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
toggle quoted message
Show quoted text
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote: To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@...> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
I just yesterday sat with one of the other programmers here for an hour to try to standardize things here and basically got nowhere, and we're just three programmers. It drives the owner nuts, but we're programmers and almost if it goes hand in hand, have egos. I once worked at a company for just two weeks: Try telling someone who's been programming for 12 years (self taught, not a single class) that there's a better way to do things. Resentment doesn't even begin to describe it. I quit because (among other things) there was no way in hell I was going to go back to buffers after doing crosspoints.
/rant
toggle quoted message
Show quoted text
--- In Crestron@..., Barry Newton <barry@...> wrote: You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote:
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
So it goes both ways I see. :)
Though buffers have their place, there are many times when buffers are so much easier than breaking out crosspoints that it makes sense to use them. It depends upon the circumstance, 'going back to buffers' is a little generic. If you're saying that people don't use crosspoints when you're connecting multiple panels to devices with all signal types in play, then I'd agree that not using crosspoints, and not even looking at them, is an issue.
toggle quoted message
Show quoted text
--- In Crestron@..., "jgreenink16" <jgreenink16@...> wrote: I just yesterday sat with one of the other programmers here for an hour to try to standardize things here and basically got nowhere, and we're just three programmers. It drives the owner nuts, but we're programmers and almost if it goes hand in hand, have egos. I once worked at a company for just two weeks: Try telling someone who's been programming for 12 years (self taught, not a single class) that there's a better way to do things. Resentment doesn't even begin to describe it. I quit because (among other things) there was no way in hell I was going to go back to buffers after doing crosspoints.
/rant
--- In Crestron@..., Barry Newton <barry@> wrote:
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote:
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
So you want to write another systembuilder?
toggle quoted message
Show quoted text
--- In Crestron@..., Barry Newton <barry@...> wrote: You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote:
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
|
No, I'm not thinking a code generator or any type of automated tool. I'm thinking more a framework of standards programmers could develop and agree to follow so that different programmers could develop functional blocks that interoperate. I suspect just getting agreement on some big issues would be difficult (like TP-room-device vs. TP-device), but it might be worth doing.
If you were just kidding with that question, ha ha, good one ;-).
Barry
toggle quoted message
Show quoted text
On Apr 13, 2012, at 2:20 PM, matt_rasmussen_2000 wrote: So you want to write another systembuilder?
--- In Crestron@..., Barry Newton <barry@...> wrote:
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote:
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|
That's a far reaching generalization to call that methodology anything like systembuilder.
For a long time, I've shared a similar mentality to Barry's whereby it irritates me to no end how juvenile and immature the AV programming community as a whole is (I concede that there are obvious exceptions, but for the case of this argument let's assume I'm right).
If you look at ANY other software industry and compare it to ours, the contradictions are glaring. Why? Because we tend to cling to the silly notion that we're "different" because we deal with A/V and archaic proprietary RS-232 protocols and such....
The reality is that we're no different. We produce computer software. We write code. We build graphical user interfaces. Guess what? We're not exactly pioneers here....
I think it was Nathan in the thread about locked code/modules lately that made a statement that brought a smile to my face and gave me hope. The world of PC programming discovered years ago that protecting common code that almost every one of their competitors was using wasn't making them more competitive or profitable and that it was far more beneficial to themselves, and the industry as a whole, to share such code amongst each other. These days, most PC programmers rarely write anything truly original, instead they use OOP libraries and class modules to adapt for their purposes. The originality, profitability and ingenuity comes in combining them in some new and more effective way that advances the efficiency or capability of the software. It's pretty hard to get to that point if you have to start from scratch and write everything yourself. With a solid foundation (i.e. Andriod OS) that is developed and improved in a open source environment, there is still a TON of room and market to build innovative profitable products.
I watch my own team of ~10 programmers constantly each spend hours trying to solve the same problem on their own. While I value each person's approach and don't really have an opinion on which way is better as long as the finished product is the same, it's terribly inefficient for the company and themselves. What AV programmers need to realize is that we would all make more money and do less work if we behaved more like the rest of the programming world. Find the common problems and scenarios, solve them generically, efficiently and in a way that is reusable in as many situations as possible and instead spend your time and effort on the problems and scenarios that are uncommon or adding new features that add value.
</rant...>
toggle quoted message
Show quoted text
On Fri, Apr 13, 2012 at 12:20 PM, matt_rasmussen_2000 <mjrtoo@...>wrote: **
So you want to write another systembuilder?
--- In Crestron@..., Barry Newton <barry@...> wrote:
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote:
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited
feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle.
So if A takes 10s to warm up, but has been powered up at the same
time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@> wrote:
From a more abstract/best practices standpoint, you should try to
keep
the amount of timed events (steppers, delays, one-shots, etc...) you
use
to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything
like
'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed
events
and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based
on a
specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and
I am always looking at improving and following best practices. Having said that I have a question.
Is it bad to have 2 or 3 steppers running concurrently? Depending
on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is
triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up.
If a different source is selected, it might be destined for other
displays, which in turn will trigger their respective steppers.
So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in
the Database area.
Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in
the Database area.
Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the
Database area.
Yahoo! Groups Links
|
By and large, I agree but I think you have a little green grass syndrome going on. The average crestron programmer is surprisingly similar to the average programmer. There arrogance and desire to rewrite the wheel is extremely prevalent.
There are certain areas where there is a lot of great open-source collaboration, but there are also sectors where everything is locked down pretty tight and you really see this culture largely perpetuated by the OS downwards.
I couldn't agree more though about a team all being on the same page. Anything else really spells disaster.
toggle quoted message
Show quoted text
--- In Crestron@..., Neil Dorin <neildorin@...> wrote: That's a far reaching generalization to call that methodology anything like systembuilder.
For a long time, I've shared a similar mentality to Barry's whereby it irritates me to no end how juvenile and immature the AV programming community as a whole is (I concede that there are obvious exceptions, but for the case of this argument let's assume I'm right).
If you look at ANY other software industry and compare it to ours, the contradictions are glaring. Why? Because we tend to cling to the silly notion that we're "different" because we deal with A/V and archaic proprietary RS-232 protocols and such....
The reality is that we're no different. We produce computer software. We write code. We build graphical user interfaces. Guess what? We're not exactly pioneers here....
I think it was Nathan in the thread about locked code/modules lately that made a statement that brought a smile to my face and gave me hope. The world of PC programming discovered years ago that protecting common code that almost every one of their competitors was using wasn't making them more competitive or profitable and that it was far more beneficial to themselves, and the industry as a whole, to share such code amongst each other. These days, most PC programmers rarely write anything truly original, instead they use OOP libraries and class modules to adapt for their purposes. The originality, profitability and ingenuity comes in combining them in some new and more effective way that advances the efficiency or capability of the software. It's pretty hard to get to that point if you have to start from scratch and write everything yourself. With a solid foundation (i.e. Andriod OS) that is developed and improved in a open source environment, there is still a TON of room and market to build innovative profitable products.
I watch my own team of ~10 programmers constantly each spend hours trying to solve the same problem on their own. While I value each person's approach and don't really have an opinion on which way is better as long as the finished product is the same, it's terribly inefficient for the company and themselves. What AV programmers need to realize is that we would all make more money and do less work if we behaved more like the rest of the programming world. Find the common problems and scenarios, solve them generically, efficiently and in a way that is reusable in as many situations as possible and instead spend your time and effort on the problems and scenarios that are uncommon or adding new features that add value.
</rant...>
|
Haha Anthony, You've pointed out a mistake in the articulation of the point I was trying to make! Rather than trying to insinuate that Crestron (AMX or any other competitor) programmers are different than the average PC programmer, I was actually getting at the fact that we're NO different, yet we continue to act like we are. The PC programming industry has about 20+ years on the AV control system programming industry, and if you look at the timeline's of their progression it's laughable that we're still about 20 years behind in many aspects on the AV side. My point is exactly that we are every bit as egotistical and arrogant as PC programmers, but as an industry, they've been forced to work together and collaborate far more than we do, and as a result have matured as an industry (* note I did not say mature as individuals ;) ). Because most AV programmers (even in CAIP firms or large commercial companies like where I am) tend to work alone, as "lone wolves", and while we may occasionally try to sit in the same room together and tolerate each others ideas and presence, we haven't been forced to truly collaborate. Then we might actually learn a thing or two! </second rant> On Fri, Apr 13, 2012 at 2:02 PM, Anthony Desimone < anthony_desimone@...> wrote: **
By and large, I agree but I think you have a little green grass syndrome going on. The average crestron programmer is surprisingly similar to the average programmer. There arrogance and desire to rewrite the wheel is extremely prevalent.
There are certain areas where there is a lot of great open-source collaboration, but there are also sectors where everything is locked down pretty tight and you really see this culture largely perpetuated by the OS downwards.
I couldn't agree more though about a team all being on the same page. Anything else really spells disaster.
--- In Crestron@..., Neil Dorin <neildorin@...> wrote:
That's a far reaching generalization to call that methodology anything like
systembuilder.
For a long time, I've shared a similar mentality to Barry's whereby it irritates me to no end how juvenile and immature the AV programming community as a whole is (I concede that there are obvious exceptions, but for the case of this argument let's assume I'm right).
If you look at ANY other software industry and compare it to ours, the contradictions are glaring. Why? Because we tend to cling to the silly notion that we're "different" because we deal with A/V and archaic proprietary RS-232 protocols and such....
The reality is that we're no different. We produce computer software. We write code. We build graphical user interfaces. Guess what? We're not exactly pioneers here....
I think it was Nathan in the thread about locked code/modules lately that made a statement that brought a smile to my face and gave me hope. The world of PC programming discovered years ago that protecting common code that almost every one of their competitors was using wasn't making them more competitive or profitable and that it was far more beneficial to themselves, and the industry as a whole, to share such code amongst each other. These days, most PC programmers rarely write anything truly original, instead they use OOP libraries and class modules to adapt for their purposes. The originality, profitability and ingenuity comes in combining them in some new and more effective way that advances the efficiency or capability of the software. It's pretty hard to get to that point if you have to start from scratch and write everything yourself. With a solid foundation (i.e. Andriod OS) that is developed and improved in
a open source environment, there is still a TON of room and market to build
innovative profitable products.
I watch my own team of ~10 programmers constantly each spend hours trying to solve the same problem on their own. While I value each person's approach and don't really have an opinion on which way is better as long as
the finished product is the same, it's terribly inefficient for the company
and themselves. What AV programmers need to realize is that we would all make more money and do less work if we behaved more like the rest of the programming world. Find the common problems and scenarios, solve them generically, efficiently and in a way that is reusable in as many situations as possible and instead spend your time and effort on the problems and scenarios that are uncommon or adding new features that add value.
</rant...>
|
I thought it was commonplace to make modules for repetitive tasks, reusable code blocks is really the only way to do it. So I'm not sure what the question really was. You're all writing code from scratch everytime and not sharing a common module database amongst the programmers? This is not an industry problem, it's an administration problem.
This site is all about sharing modules and programming techniques that seem to work best so I disagree we're immature about it, but people like doing things their own way. The only way to get everyone to do things exactly the same is to use a configuration model like Crestron is trying to do with Systembuilder, and extron has done with global configurator. Maybe once we get an object oriented programming language things can advance to the point I think you're trying to make but for now it's the way it is.
The files section is full of examples of people trying to share common code, I freely share my code blocks with CAIPs we occasionally use because I have setup specific guidelines how our systems need to work, and why make someone do that work when I can just give it to them and save valuable time.
I do think what we do is different, while we work within a specific programming structure, the devices we interface with are all over the board. This is far different than a windows programmer that has specific constraints and guidelines that are always true, we do not have that conveinance of an object library, we always have to do some sort of customization between systems based upon factors external to the OS itself.
my .02 anyway, fwiw.
toggle quoted message
Show quoted text
--- In Crestron@..., Neil Dorin <neildorin@...> wrote: That's a far reaching generalization to call that methodology anything like systembuilder.
For a long time, I've shared a similar mentality to Barry's whereby it irritates me to no end how juvenile and immature the AV programming community as a whole is (I concede that there are obvious exceptions, but for the case of this argument let's assume I'm right).
If you look at ANY other software industry and compare it to ours, the contradictions are glaring. Why? Because we tend to cling to the silly notion that we're "different" because we deal with A/V and archaic proprietary RS-232 protocols and such....
The reality is that we're no different. We produce computer software. We write code. We build graphical user interfaces. Guess what? We're not exactly pioneers here....
I think it was Nathan in the thread about locked code/modules lately that made a statement that brought a smile to my face and gave me hope. The world of PC programming discovered years ago that protecting common code that almost every one of their competitors was using wasn't making them more competitive or profitable and that it was far more beneficial to themselves, and the industry as a whole, to share such code amongst each other. These days, most PC programmers rarely write anything truly original, instead they use OOP libraries and class modules to adapt for their purposes. The originality, profitability and ingenuity comes in combining them in some new and more effective way that advances the efficiency or capability of the software. It's pretty hard to get to that point if you have to start from scratch and write everything yourself. With a solid foundation (i.e. Andriod OS) that is developed and improved in a open source environment, there is still a TON of room and market to build innovative profitable products.
I watch my own team of ~10 programmers constantly each spend hours trying to solve the same problem on their own. While I value each person's approach and don't really have an opinion on which way is better as long as the finished product is the same, it's terribly inefficient for the company and themselves. What AV programmers need to realize is that we would all make more money and do less work if we behaved more like the rest of the programming world. Find the common problems and scenarios, solve them generically, efficiently and in a way that is reusable in as many situations as possible and instead spend your time and effort on the problems and scenarios that are uncommon or adding new features that add value.
</rant...>
On Fri, Apr 13, 2012 at 12:20 PM, matt_rasmussen_2000 <mjrtoo@...>wrote:
**
So you want to write another systembuilder?
--- In Crestron@..., Barry Newton <barry@> wrote:
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
On Apr 12, 2012, at 6:54 PM, Steve Kaudle wrote:
To some extent that's dependent on the display's in question (or more specifically, the completeness of their control API's). Lets assume that the displays can either be queried and/or will provide unsolicited
feedback for the current power state (off, warming, on, or cooling). Given that, I'd write a module that would always tell me the current power status, and if either of the display's 'warming_fb' outputs were high, activate the subpage.
On 4/12/2012 6:32 PM, avsystemdesign wrote:
Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle.
So if A takes 10s to warm up, but has been powered up at the same
time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle<crestron@> wrote:
From a more abstract/best practices standpoint, you should try to
keep
the amount of timed events (steppers, delays, one-shots, etc...) you
use
to a minimum. That said, I'd bet you'd need to use a>lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything
like
'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed
events
and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based
on a
specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and
I am always looking at improving and following best practices. Having said that I have a question.
Is it bad to have 2 or 3 steppers running concurrently? Depending
on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is
triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up.
If a different source is selected, it might be destined for other
displays, which in turn will trigger their respective steppers.
So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in
the Database area.
Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in
the Database area.
Yahoo! Groups Links
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the
Database area.
Yahoo! Groups Links
|
Sure, we make modules to use over and again, but our modules plug into our programs in whatever way we design for ourselves. The next level of discipline would be to create and share definitions for these interfaces so we can choose to create modules that would work for anyone who adheres to the interface standard.
No one is asking for everyone to do things exactly the same way, but rather to write logic modules which accept inputs and present outputs in a defined way. You certainly don't need a RAD tool to do that, nor does it require an object oriented language. This sort of approach existed long before OO became fashionable. It begins simply with one programmer proposing an interface and having a discussion with some other programmers about it to see if they can agree on a definition they are willing to adhere to.
I think Neil is right in saying what we do is no different from other programming disciplines except when we decide to be. I try to borrow as much from my former life programming (Pascal, FORTRAN, Java, C, Perl, whatever) as I can to standardize things just for myself (such as using SVN or Git so version source for starters).
I'm interested in pursuing something if anyone else is. Otherwise I'll continue to do it my way, make my own standards for myself, and be happy.
Barry
toggle quoted message
Show quoted text
On Apr 13, 2012, at 4:27 PM, matt_rasmussen_2000 wrote: I thought it was commonplace to make modules for repetitive tasks, reusable code blocks is really the only way to do it. So I'm not sure what the question really was. You're all writing code from scratch everytime and not sharing a common module database amongst the programmers? This is not an industry problem, it's an administration problem.
This site is all about sharing modules and programming techniques that seem to work best so I disagree we're immature about it, but people like doing things their own way. The only way to get everyone to do things exactly the same is to use a configuration model like Crestron is trying to do with Systembuilder, and extron has done with global configurator. Maybe once we get an object oriented programming language things can advance to the point I think you're trying to make but for now it's the way it is.
The files section is full of examples of people trying to share common code, I freely share my code blocks with CAIPs we occasionally use because I have setup specific guidelines how our systems need to work, and why make someone do that work when I can just give it to them and save valuable time.
I do think what we do is different, while we work within a specific programming structure, the devices we interface with are all over the board. This is far different than a windows programmer that has specific constraints and guidelines that are always true, we do not have that conveinance of an object library, we always have to do some sort of customization between systems based upon factors external to the OS itself.
my .02 anyway, fwiw.
--- In Crestron@..., Neil Dorin <neildorin@...> wrote:
That's a far reaching generalization to call that methodology anything like systembuilder.
For a long time, I've shared a similar mentality to Barry's whereby it irritates me to no end how juvenile and immature the AV programming community as a whole is (I concede that there are obvious exceptions, but for the case of this argument let's assume I'm right).
If you look at ANY other software industry and compare it to ours, the contradictions are glaring. Why? Because we tend to cling to the silly notion that we're "different" because we deal with A/V and archaic proprietary RS-232 protocols and such....
The reality is that we're no different. We produce computer software. We write code. We build graphical user interfaces. Guess what? We're not exactly pioneers here....
I think it was Nathan in the thread about locked code/modules lately that made a statement that brought a smile to my face and gave me hope. The world of PC programming discovered years ago that protecting common code that almost every one of their competitors was using wasn't making them more competitive or profitable and that it was far more beneficial to themselves, and the industry as a whole, to share such code amongst each other. These days, most PC programmers rarely write anything truly original, instead they use OOP libraries and class modules to adapt for their purposes. The originality, profitability and ingenuity comes in combining them in some new and more effective way that advances the efficiency or capability of the software. It's pretty hard to get to that point if you have to start from scratch and write everything yourself. With a solid foundation (i.e. Andriod OS) that is developed and improved in a open source environment, there is still a TON of room and market to build innovative profitable products.
I watch my own team of ~10 programmers constantly each spend hours trying to solve the same problem on their own. While I value each person's approach and don't really have an opinion on which way is better as long as the finished product is the same, it's terribly inefficient for the company and themselves. What AV programmers need to realize is that we would all make more money and do less work if we behaved more like the rest of the programming world. Find the common problems and scenarios, solve them generically, efficiently and in a way that is reusable in as many situations as possible and instead spend your time and effort on the problems and scenarios that are uncommon or adding new features that add value.
</rant...>
On Fri, Apr 13, 2012 at 12:20 PM, matt_rasmussen_2000 <mjrtoo@...>wrote:
**
So you want to write another systembuilder?
--- In Crestron@..., Barry Newton <barry@> wrote:
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
|
I think as a discipline, programming Crestron is no different than programming anything else. Many "good practices" apply to Crestron. Off the top of my head, things like: Don't try to solve your race conditions with delays. Check for error conditions (i.e. returns from functions in regards to SIMPL+, error returns from devices, etc....), organize your code logically (i.e. don't pile everything into one CHANGE statement or subfolder), comment your code, try to modularize your code where you can, make your variable/signal names meaningful, etc...
One of the biggest differences between programming in SIMPL/SIMPL+ vs. C is that the pool of resources to draw on is obviously limited as well as the development tools. I'd venture to say that that "sharing" is limited in Crestron programming because most people are involved in Crestron programming as a job. I think that's why you don't tend to see lots of open source Crestron this and that. Most people put in a lot of effort into their stuff, and by and large don't wish to give it out to their competitors.
That's just my 2 cents.
toggle quoted message
Show quoted text
--- In Crestron@..., Barry Newton <barry@...> wrote: Sure, we make modules to use over and again, but our modules plug into our programs in whatever way we design for ourselves. The next level of discipline would be to create and share definitions for these interfaces so we can choose to create modules that would work for anyone who adheres to the interface standard.
No one is asking for everyone to do things exactly the same way, but rather to write logic modules which accept inputs and present outputs in a defined way. You certainly don't need a RAD tool to do that, nor does it require an object oriented language. This sort of approach existed long before OO became fashionable. It begins simply with one programmer proposing an interface and having a discussion with some other programmers about it to see if they can agree on a definition they are willing to adhere to.
I think Neil is right in saying what we do is no different from other programming disciplines except when we decide to be. I try to borrow as much from my former life programming (Pascal, FORTRAN, Java, C, Perl, whatever) as I can to standardize things just for myself (such as using SVN or Git so version source for starters).
I'm interested in pursuing something if anyone else is. Otherwise I'll continue to do it my way, make my own standards for myself, and be happy.
Barry
On Apr 13, 2012, at 4:27 PM, matt_rasmussen_2000 wrote:
I thought it was commonplace to make modules for repetitive tasks, reusable code blocks is really the only way to do it. So I'm not sure what the question really was. You're all writing code from scratch everytime and not sharing a common module database amongst the programmers? This is not an industry problem, it's an administration problem.
This site is all about sharing modules and programming techniques that seem to work best so I disagree we're immature about it, but people like doing things their own way. The only way to get everyone to do things exactly the same is to use a configuration model like Crestron is trying to do with Systembuilder, and extron has done with global configurator. Maybe once we get an object oriented programming language things can advance to the point I think you're trying to make but for now it's the way it is.
The files section is full of examples of people trying to share common code, I freely share my code blocks with CAIPs we occasionally use because I have setup specific guidelines how our systems need to work, and why make someone do that work when I can just give it to them and save valuable time.
I do think what we do is different, while we work within a specific programming structure, the devices we interface with are all over the board. This is far different than a windows programmer that has specific constraints and guidelines that are always true, we do not have that conveinance of an object library, we always have to do some sort of customization between systems based upon factors external to the OS itself.
my .02 anyway, fwiw.
--- In Crestron@..., Neil Dorin <neildorin@> wrote:
That's a far reaching generalization to call that methodology anything like systembuilder.
For a long time, I've shared a similar mentality to Barry's whereby it irritates me to no end how juvenile and immature the AV programming community as a whole is (I concede that there are obvious exceptions, but for the case of this argument let's assume I'm right).
If you look at ANY other software industry and compare it to ours, the contradictions are glaring. Why? Because we tend to cling to the silly notion that we're "different" because we deal with A/V and archaic proprietary RS-232 protocols and such....
The reality is that we're no different. We produce computer software. We write code. We build graphical user interfaces. Guess what? We're not exactly pioneers here....
I think it was Nathan in the thread about locked code/modules lately that made a statement that brought a smile to my face and gave me hope. The world of PC programming discovered years ago that protecting common code that almost every one of their competitors was using wasn't making them more competitive or profitable and that it was far more beneficial to themselves, and the industry as a whole, to share such code amongst each other. These days, most PC programmers rarely write anything truly original, instead they use OOP libraries and class modules to adapt for their purposes. The originality, profitability and ingenuity comes in combining them in some new and more effective way that advances the efficiency or capability of the software. It's pretty hard to get to that point if you have to start from scratch and write everything yourself. With a solid foundation (i.e. Andriod OS) that is developed and improved in a open source environment, there is still a TON of room and market to build innovative profitable products.
I watch my own team of ~10 programmers constantly each spend hours trying to solve the same problem on their own. While I value each person's approach and don't really have an opinion on which way is better as long as the finished product is the same, it's terribly inefficient for the company and themselves. What AV programmers need to realize is that we would all make more money and do less work if we behaved more like the rest of the programming world. Find the common problems and scenarios, solve them generically, efficiently and in a way that is reusable in as many situations as possible and instead spend your time and effort on the problems and scenarios that are uncommon or adding new features that add value.
</rant...>
On Fri, Apr 13, 2012 at 12:20 PM, matt_rasmussen_2000 <mjrtoo@>wrote:
**
So you want to write another systembuilder?
--- In Crestron@..., Barry Newton <barry@> wrote:
You know, this really gets at programming technique which is something Crestron has always stayed out of. They offer best practices for specific situations sometimes, but overall architecture is absent. So like most programmers with experience, I have my own approach I use over and over. There are a lot of unpaid hours that went into it, but that time is recovered in being able to produce finished programs more quickly.
I suspect most programmers eventually abandon timed logic for the most part and begin thinking in terms of logic wave pulses and wave delays where that sort of thing is needed. I know I spend an unhealthy amount of time tweaking logic just to reduce the number of symbols.
I have wondered if there is interest in the community in creating a standard architecture for program design, something like an open source project. In my mind the focus would be creating an overall architecture with cut-and-paste-ready logic modules with well defined standard interfaces. There are a lot of device modules in the files section, but I haven't seen a lot other than that, and there is no standardization at all really.
Maybe most of you have too much invested in your own approaches to want to share techniques, even I'm not sure I want to do that, but it won't hurt to discuss it.
Sorry to hijack the thread.
Barry
|
Check out my 'Power-SRC Select-Aspect Control Module' in the MODULES section. It's simple but would work great to manage what you're trying to do. It does use steppers internally but it is reliable and I have used it in large projects with 10-15 TVs with no issues.
I gave up on real device FB a long time ago. Some devices didn't have real FB, and more than a few devices with real FB were unreliable or had such convoluted or ambiguous protocols that it was not worth trying to manage status with their FB. Also, erratic run-time performance of certain devices could not be easily compensated for ex: I had a Mits projector that would show it was OFF even though it would be cooling down for as much as 3 MINUTES! during that cool-down time it would not respond to ON commands...
HTH, Chris K...............;)
toggle quoted message
Show quoted text
--- In Crestron@..., "avsystemdesign" <avsystemdesign@...> wrote: Thanks Steve,
Then how would a person create the following condition?
Display A + B can be powered up separately, but depending on what source has been selected they both may or may not need to be powered up at the same time. And here is the kicker, they both have different warm up times, and the "system is warming up" page needs to be held high during the power up cycle. So if A takes 10s to warm up, but has been powered up at the same time as B (which takes 20s), the warm up page needs to be high for 20s.
--- In Crestron@..., Steve Kaudle <crestron@> wrote:
From a more abstract/best practices standpoint, you should try to keep the amount of timed events (steppers, delays, one-shots, etc...) you use to a minimum. That said, I'd bet you'd need to use a >lot< of steppers before the burden they put on system would be perceived by the operator. Lots of variables at play and the real world threshold will likely vary (greatly) from system to system. Note that the previous statement(s) should most defiantly not be translated into anything like 'stop using timed events if you want your systems to work right'.
From a logical/program flow standpoint, I prefer to avoid timed events and build logic that is condition dependent. Example: I don't necessarily want to send an input swap command to a projector based on a specific amount of time having passed, but rather based on real-time conditions like the (actual) power state and current input selection.
On 4/12/2012 5:56 PM, avsystemdesign wrote:
I know there are several ways to skin a cat in Crestron world, and I am always looking at improving and following best practices. Having said that I have a question. Is it bad to have 2 or 3 steppers running concurrently? Depending on the device being used, I like to have a stepper handle the procedure.
For example, source is selected, stepper for projector 1 is triggered, this fires up the proj and sends down the screen, whilst indicating the system is warming up. If a different source is selected, it might be destined for other displays, which in turn will trigger their respective steppers. So there might be a few steppers running at the same time.
------------------------------------
Check out the Files area for useful modules, documents, and drivers.
A contact list of Crestron dealers and programmers can be found in the Database area. Yahoo! Groups Links
|