¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io
Date

Scripting Issues

 

Anyone successfuly used ProgramRetrieve in their scripts?

Mine gives me error codes and I can't get the file.
Connection is through Internet at a static IP.

My Code:
LogFile=|MyLogFile|
Connect=|pac21connect|
ProgramRetrieve "C:\Retrievals\pac21.spz"

Error Generated:
Command Line 1[FAILURE, 2 minutes 40 seconds]: ProgramRetrieve
"C:\Retrievals\pac21.spz"
Error for Line 1: ComChannel.cpp(198) : Timeout waiting for the
device to respond to the command resumeprogram<LF>. Waiting for one
of the following tokens [>].


Re: Newbie Simpl+ Question

scates98
 

Hey Chip,

Thanks for your reply! I spent about a day or two trying to figure
out how I could program this in SIMPL+ and eventually gave up because
I couldn't figure out how to do it. I went back to SIMPL Windows and
continued writing the module. When I look at the code I've written in
SIMPL Windows it just looks like a lot of code and when I see my code
go that way I start thinking I've made things too complicated. My
paranoia starts going because I think signals won't be resolved in
logic waves and then things won't work exactly as they should. I've
done all I can to keep the code down to it's minimum so things will
work efficiently.

Since the menu is going to be generated by a TPS-GA-TPI (touchpanel
interface for standard display devices) there will be no touch input
to navigate the menu. The only device to interface with the menu
being displayed will be an ML-600 remote. When the user presses Menu
on the ML-600, I want the Menu to toggle on/off. They will then have
to use the direction pad to navigate the on-screen menu. I've broken
this down into two components, Menu Selection and Menu Control which
is selected by the left/right dirpad buttons. When in Menu Selection
mode the user is choosing from the list of rooms, sources, lights,
shades, etc. when the user is in Menu Control mode the user is
selecting options from the current Menu Selection. Example, when the
user selected rooms from the Menu Selection they immediately switch to
Menu Control mode and start choosing a floor followed by a room. The
inputs are fairly simple dirpad signals and such to control
navigation. Output signals are to switch between pages and subpages
for menu navigation. Example: pressing the Enter button on the dirpad
when selecting Rooms from the Menu Selection list will switch the
TPS-GA-TPI to display the room selection page and force the Floor
Selection subpage high. After using the up/down dirpad buttons the
user will select a floor and press the dirpad enter button again to
choose a floor which will display the room list for that floor.

This is why I was thinking of using an array. In SIMPL Windows I
control this using a Ring Counter with Seed so I can send an analog
value to the Ring counter to turn all outputs off or force one on.
This in conjunction with interlocks help to enable the correct buffer
for navigational control. If I knew how to create a buffer in SIMPL+
I might have enough to make the module work. However, I keep thinking
I'm reinventing the wheel if all I'm doing is making the same signals
in SIMPL+ that I've already written in SIMPL Windows.

I hope this answers your question. I appreciate your input and
perhaps you're right. Maybe I should keep this in SIMPL Windows. At
least I'll know how to troubleshoot it! lol

Thanks,

- Chris


--- In Crestron@..., "Chip Moody" <cfm@...> wrote:


I'm certainly not going to steer you away from diving into S+, but
I'm going to question whether what you're trying to accomplish in this
case is better off left in SIMPL. Based on what you've described, it
doesn't sound like you're going to be pushing the limits on the
processor by any means - even if you had 16 instances of the "block"
of code AND had 16 people pounding buttons in each zone at the same
time. (16 instances of a block of code with a zillion signals where
only one instance is going to be used by the client at any one time is
pretty much a non-issue)

If you want to neaten things up a bit, get the block to a point
where you think it's got all the goezintas and goezouttas you need,
and turn it into a SIMPL module. Then you can just drop 16 instances
of the completed module into your program. No, it doesn't make any
difference on processing - it'll just make your main program's code
easier to read through and maintain.

If you're still interested in making an S+ version for
self-educational purposes at the very least, could you describe the
signals going in/out a bit more? I wasn't able to get a clear enough
picture to advise/suggest S+ approaches.

- Chip


--- In Crestron@..., "scates98" <ccates98@> wrote:

Hi all,

Sorry for the long post, but I like to give a lot of details to help
people understand what I'm trying to do. I'm an experienced SIMPL
Windows programmer but SIMPL+ is still pretty new to me. I'm trying
to find a way to program a custom menu subsystem for my client and was
hoping someone could help me in building this in SIMPL+.

The client will be using an ML-600 and he's only going to be using
some basic inputs like: dirpad up/down/left/right/enter and page
up/down on the remote to navigate an on-screen display generated by a
TPS-GA-TPI. He wants to have the ability to control any zone in the
house. So I've created a GUI so he can select room control, source
control, lighting control, climate control, shade control and security
control.

In SIMPL Windows I am using a series of buffers and interlocks to
control when the dirpad up/down/left...etc. signals are in use for a
particular menu. I am also using a series of Ring Counter with Seed
symbols to allow him to navigate the on-screen menu using only the
dirpad on the ML-600. Example: the user selects "Choose Room" from
the primary menu, then uses the ring counter to scroll through the
floors, another ring counter controls the scrolling through rooms for
the selected floor.

As I'm building this project, I am noticing that my menu system, built
in SIMPL Windows, is creating a lot of signals and I'm concerned with
how well it will function after I've duplicated it for all zones which
require it (at least 16 zones). I know that if I were to build this
in SIMPL+ it would be much more efficient and easier to copy, but I am
confused on how I could write it as I'm not experienced in SIMPL+. I
thought of using an array to create a table where the first row would
contain values for the primary menu (rooms, sources, lights, etc.).
Then each column would contain values for each of the primary menu
items (ex: 1=first floor, 2=main floor, 3=upper floor, etc.). However
I do not understand how to buffer the dirpad up/down commands to
control the scrolling through the list. I keep thinking about using
an IF statement but then I'm writing a large amount of nested IF
statements to control when the up/down command is enabled for a
specific menu. Perhaps using a long SWITCH/CASE statement would
work?

Any help you can provide would be greatly appreciated as I know I need
to get my head into SIMPL+ programming to become a better programmer.
Please try not to get too technical with your replies as I'm still
new to programming this way and can get lost quickly.

Thanks In Advance For All Your Help,

- Scates

P.S. I've read the SIMPL+ programming help PDF and it's helped me to
get this far. I really need to take some sort of programming class to
better learn this.


Re: Question on finding the number of defined array elements.

Matt
 

Touche


Why?

You're just saying if some condition is true, then do nothing. Not
exactly something I'd typically see someone programming, but it *IS*
perfectly valid.


--- In Crestron@..., "Matt" <mjrtoo@> wrote:

I would have expected to see a compiler error on the fatal ; at
the
end of an IF statement.



True, but I always put them in so that if I do add another line
I
don't mess up the execution order/nesting. (Didn't see the ; -
fatal,
but a trace should have shown 10 outputs rather than just 1.)

Lindsay

--- In Crestron@..., "Matt" <mjrtoo@> wrote:

Thanks Lindsay and Chip, it's always puntuation isn't it. If
I
were
to remove the trace statement, could you use no brackets? If
the
brackets are required, I guess there's another error in the
help
file.



Hi Matt,

You need to put the statements after the IF in {}.

Lindsay

--- In Crestron@..., "Matt" <mjrtoo@> wrote:

I'm messing around with an upcoming project, and am
looking
to
determine the number of elements a string array has been
assigned
in
Simpl. Looking at S+ I see the directive isSignalDefined
().
I
have
the following code (not complete).

STRING_INPUT in$[10][25];

Function Main()
{
FOR(i = 10 to 1 Step -1)
{
IF(IsSignalDefined(in$[i]));
TRACE("i = %d", i);
BREAK;
}
}

Within Simpl, I have only two strings expanded on the
symbol,
but
NumSources always = 10, I was expecting to see 1.

Is this the correct approach and/or any advice on what's
incorrect?


Denon DCM-390 Module

kyle805
 

Does anyone out there have a module built for the Denon DCM-390 CD
changer?


Re: Question on finding the number of defined array elements.

Chip Moody
 

That was a potential guess for me, but I didn't know if it was one
of those "iffy" situations in the S+ compiler that might bite me in
the ass down the road, y'know?

Maybe I'll get off my butt and see what happens if I change it over
the weekend...

- Chip

P.S. Oliver - thanks for your answer too, and enjoy the beer!!


--- In Crestron@..., "Joseph K. Vossen" <jkv@...> wrote:

[snip]

My mindset was that the result of MID doesn't exist as a variable,
well, actually it does. I can't say for certain with the SIMPL+
compiler, but all of the compilers I have worked on will generate a
"temporary" whose type/size is "local" to the block and is used to
hold the value for cases like this. The temporary is generated on the
stack so it will "disappear" when you go out of scope. You can't
reference it directly (by name) since it is typically generated
above/below (depends on how the stack frame is maintained) the
variables that the programmer declared for that block.

[more snip]


Re: Question on finding the number of defined array elements.

Joseph K. Vossen
 

[snip]

My mindset was that the result of MID doesn't exist as a variable,
well, actually it does. I can't say for certain with the SIMPL+ compiler, but all of the compilers I have worked on will generate a "temporary" whose type/size is "local" to the block and is used to hold the value for cases like this. The temporary is generated on the stack so it will "disappear" when you go out of scope. You can't reference it directly (by name) since it is typically generated above/below (depends on how the stack frame is maintained) the variables that the programmer declared for that block.

[more snip]


Re: Question on finding the number of defined array elements.

 

Disclaimer: TOTAL GUESS!

I'd say that in the case of a function that *returns* a value, that
value must be created on the stack. So your MID is creating a new
string. That "new" string is then either assigned to a string
variable or returned to the calling function.

So: you're not passing ByRef in this case, but essentially "returning
ByVal". Meaning, you don't need to use temp$.

The MID(SomeExisting...) is creating a new string, passing it ByRef
to Fudge, which then modifies that *new* string (by the REMOVE()).

I think...

I'll have to test that theory - but not now... it's Beer O'Clock!

Enjoy your weekends everyone!
Ol

--- In Crestron@..., "Chip Moody" <cfm@...> wrote:


This is actually something I was wondering about when I made the
XM
Now Playing module, and just couldn't bring myself to write TBTS on
this.

In the XM module, I take the result of a MID function and pass it
to
one of my own functions that in turn manipulates the results of the
MID and returns the result of THAT manipulation.

If I could abbreviate/abstract it, it might look something like
this:

STRING_FUNCTION Fudge (STRING src$)
{
// Among other things, do something along these lines:
Garbage$ = REMOVE(";",src$);
// Blah blah, more code here...
RETURN (MyProcessedString$);
}

PUSH Go
{
tx$ = Fudge (MID(SomeExistingStringVar$,3,6));
}

My mindset was that the result of MID doesn't exist as a variable,
so I can't really mess around with the contents of that result like
I
show in that snippet up there. So in the ACTUAL module, one of the
first things that happens inside Fudge is I copy "src$" into local
variable "temp$", then work on temp$ exclusively:

STRING_FUNCTION Fudge (STRING src$)
{
temp$ = src$;
// Among other things, do something along these lines:
Garbage$ = REMOVE(";",temp$);
// Blah blah, more code here...
RETURN (MyProcessedString$);
}

Does that make sense? Does anyone know for certain if what I did
was required, or does the result of MID (or any other string
function
for that matter) exist in some malleable state that I can operate
on?

Thanks,
- Chip


--- In Crestron@..., "Oliver Hall" <oliver.hall@> wrote:

This is where foo pipes up to say that Crestron's implementation
of
ByRef does actually make a copy the data 8)


Re: Question on finding the number of defined array elements.

Chip Moody
 

This is actually something I was wondering about when I made the XM
Now Playing module, and just couldn't bring myself to write TBTS on this.

In the XM module, I take the result of a MID function and pass it to
one of my own functions that in turn manipulates the results of the
MID and returns the result of THAT manipulation.

If I could abbreviate/abstract it, it might look something like this:

STRING_FUNCTION Fudge (STRING src$)
{
// Among other things, do something along these lines:
Garbage$ = REMOVE(";",src$);
// Blah blah, more code here...
RETURN (MyProcessedString$);
}

PUSH Go
{
tx$ = Fudge (MID(SomeExistingStringVar$,3,6));
}

My mindset was that the result of MID doesn't exist as a variable,
so I can't really mess around with the contents of that result like I
show in that snippet up there. So in the ACTUAL module, one of the
first things that happens inside Fudge is I copy "src$" into local
variable "temp$", then work on temp$ exclusively:

STRING_FUNCTION Fudge (STRING src$)
{
temp$ = src$;
// Among other things, do something along these lines:
Garbage$ = REMOVE(";",temp$);
// Blah blah, more code here...
RETURN (MyProcessedString$);
}

Does that make sense? Does anyone know for certain if what I did
was required, or does the result of MID (or any other string function
for that matter) exist in some malleable state that I can operate on?

Thanks,
- Chip

--- In Crestron@..., "Oliver Hall" <oliver.hall@...> wrote:

This is where foo pipes up to say that Crestron's implementation of
ByRef does actually make a copy the data 8)


Re: Question on finding the number of defined array elements.

Joseph K. Vossen
 

[snip]

Now... if they'd just implement multiple-inheritance in S+ (*JOKING!*)
don't even go there :))


Re: Question on finding the number of defined array elements.

Chip Moody
 

Part of me wants to ROTFL over that, but no - that's just not funny. :)

- Chip

--- In Crestron@..., "Oliver Hall" <oliver.hall@...> wrote:

Now... if they'd just implement multiple-inheritance in S+ (*JOKING!*)

Ol


Re: Newbie Simpl+ Question

Chip Moody
 

I'm certainly not going to steer you away from diving into S+, but
I'm going to question whether what you're trying to accomplish in this
case is better off left in SIMPL. Based on what you've described, it
doesn't sound like you're going to be pushing the limits on the
processor by any means - even if you had 16 instances of the "block"
of code AND had 16 people pounding buttons in each zone at the same
time. (16 instances of a block of code with a zillion signals where
only one instance is going to be used by the client at any one time is
pretty much a non-issue)

If you want to neaten things up a bit, get the block to a point
where you think it's got all the goezintas and goezouttas you need,
and turn it into a SIMPL module. Then you can just drop 16 instances
of the completed module into your program. No, it doesn't make any
difference on processing - it'll just make your main program's code
easier to read through and maintain.

If you're still interested in making an S+ version for
self-educational purposes at the very least, could you describe the
signals going in/out a bit more? I wasn't able to get a clear enough
picture to advise/suggest S+ approaches.

- Chip

--- In Crestron@..., "scates98" <ccates98@...> wrote:

Hi all,

Sorry for the long post, but I like to give a lot of details to help
people understand what I'm trying to do. I'm an experienced SIMPL
Windows programmer but SIMPL+ is still pretty new to me. I'm trying
to find a way to program a custom menu subsystem for my client and was
hoping someone could help me in building this in SIMPL+.

The client will be using an ML-600 and he's only going to be using
some basic inputs like: dirpad up/down/left/right/enter and page
up/down on the remote to navigate an on-screen display generated by a
TPS-GA-TPI. He wants to have the ability to control any zone in the
house. So I've created a GUI so he can select room control, source
control, lighting control, climate control, shade control and security
control.

In SIMPL Windows I am using a series of buffers and interlocks to
control when the dirpad up/down/left...etc. signals are in use for a
particular menu. I am also using a series of Ring Counter with Seed
symbols to allow him to navigate the on-screen menu using only the
dirpad on the ML-600. Example: the user selects "Choose Room" from
the primary menu, then uses the ring counter to scroll through the
floors, another ring counter controls the scrolling through rooms for
the selected floor.

As I'm building this project, I am noticing that my menu system, built
in SIMPL Windows, is creating a lot of signals and I'm concerned with
how well it will function after I've duplicated it for all zones which
require it (at least 16 zones). I know that if I were to build this
in SIMPL+ it would be much more efficient and easier to copy, but I am
confused on how I could write it as I'm not experienced in SIMPL+. I
thought of using an array to create a table where the first row would
contain values for the primary menu (rooms, sources, lights, etc.).
Then each column would contain values for each of the primary menu
items (ex: 1=first floor, 2=main floor, 3=upper floor, etc.). However
I do not understand how to buffer the dirpad up/down commands to
control the scrolling through the list. I keep thinking about using
an IF statement but then I'm writing a large amount of nested IF
statements to control when the up/down command is enabled for a
specific menu. Perhaps using a long SWITCH/CASE statement would work?

Any help you can provide would be greatly appreciated as I know I need
to get my head into SIMPL+ programming to become a better programmer.
Please try not to get too technical with your replies as I'm still
new to programming this way and can get lost quickly.

Thanks In Advance For All Your Help,

- Scates

P.S. I've read the SIMPL+ programming help PDF and it's helped me to
get this far. I really need to take some sort of programming class to
better learn this.


Re: Question on finding the number of defined array elements.

 

I agree, that in the right hands, pointers are extremely powerful,
but I feel Crestron have chosen wisely here.

As foo's already said, the potential for misuse of pointers would
open us up to a world of pain. I'm not knocking anyone here; we all
have to start somewhere, but there do appear to be a lot of guys
programming systems with some pretty shaky foundations in procedural
languages, and even simple syntactic issues (like the root of this
thread) could wreak havoc scrambling your processor's brains. So I
suppose you could argue "Pointers don't kill processors, programmers
do" ;-) Anyway - anyone who's had to debug bad pointer arithmetic
knows what a time-consuming process it can be, and that's on your own
code - it's 100x harder when it's someone else's.

The efficiency argument can be mitigated too - you can always use
ByRef in your function declarations (in fact, you can't avoid it with
STRING). I've written an XML parser that doesn't move the XML
document at all (though it does mean creating a lot of markers...
which I guess are just my version of (safe?) pointers).

This is where foo pipes up to say that Crestron's implementation of
ByRef does actually make a copy the data 8)

Now... if they'd just implement multiple-inheritance in S+ (*JOKING!*)

Ol

--- In Crestron@..., "Joseph K. Vossen" <jkv@...> wrote:

agreed...in my non-Crestron circle of travels in the past, I have
found that a *good* understanding of pointers separates the good
programmers from the great ones. And then when you jump into
function pointers, that opens up a whole new world of fun.....

having pointers in SIMPL+ would benefit, for example, those tasks
that perform a *lot* of parsing, such as busting up XML pages. Sure
one can do it now with what is available, I just think the code would
be a bit more compact, IMHO

-----Original Message-----
From: fooguy89 <fooguy89@...>
Sent: Jan 23, 2009 10:53 AM
To: Crestron@...
Subject: [Crestron] Re: Question on finding the number of defined
array elements.

I'm pretty sure the reason Crestron doesn't do Pointers is because
of
support. They tend to perform a lot of support that doesn't seem
to
be "their problem" - issues that are clearly programming mistakes,
but
they do try to help resolve them (I know people knock TB for a lot,
but I mean they do try to be helpful if you get the right folks).

Can you just imagine the chaos of newbies trying to use pointers,
overwriting memory, blah blah blah, and Crestron trying to suck it
up
and fix it/teach them?

As a professional programmer, sure, it would be great to have, but
I
can definitely see why many things are limited.

Sometimes I don't understand the need to try to fix and assist with
blatant programming problems (If you were to call microsoft and
whine
about how your system crashed because you did a NULL pointer
access or
overwrite the bounds of your array, they'd probably just be like
"Uh....GO FIND AND FIX IT YOURSELF!!")


--- In Crestron@..., Joseph K. Vossen <jkv@> wrote:

the semi-colon after the if() is a valid statement from the
parser's
point of view; it just doesn't do what you want/expect

here is a simple example of how that is useful; the following 'C'
code copies a NULL-terminated string, where 'p' points to the
destination and
'q' points to the source:. The while() terminates when the NULL
terminating
byte is hit.

while (*p++ = *q++)
; // <- note
lone semi-colon

ya' just gotta love pointers...sure wish SIMPL+ had 'em.......

On Friday 23 January 2009 12:33 am, you wrote:
I would have expected to see a compiler error on the fatal ;
at the
end of an IF statement.

True, but I always put them in so that if I do add another
line I
don't mess up the execution order/nesting. (Didn't see
the ; -
fatal, but a trace should have shown 10 outputs rather than
just 1.)

Lindsay


Re: Question on finding the number of defined array elements.

Jeremy Weatherford
 

What would you do with pointers that you can't do with array indexes?
Function arguments are already passed by reference, so what's this
"copying data around all over"?

It's easy to bounds-check array indexes to keep a program from doing
bad things when it screws up. It's hard to check pointer arithmetic.
It's also hard to get dynamic memory allocation right. I think
Crestron has struck a good balance with SIMPL+'s features, power, and
robustness.

Jeremy

On Fri, Jan 23, 2009 at 10:12 AM, Chris Erskine <chris@...> wrote:
I agree that not only would your code be more compact but more efficient since you would not have to be copying data around all over. On the other hand, pointers would cause so much more problems in the code that systems would be crashing all over. Crestron would require better TB personnel and better tools since you would need a debugger that would let you step through the S+ code when it was running.


Re: DNAV

Chip Moody
 

Y'know, I don't mind half-assed implementations if they're labeled
as "Beta" or "Not Ready For Prime Time" or "Play With This, But We
Suggest Not Using It For Client Projects Yet"... I'm all for trying
stuff out to see if it might be useful, providing feedback and/or
finding problems with it, but in this case I've certainly been under
the impression that for panels that support D-Nav, it's supposed to
have been a "finished" product.

But aside from that, I'm REALLY surprised at the lack of QC on this
latest TPMC17 firmware. I made a single-page project with NOTHING but
a vertical nav list in it, verified that it didn't work for crap, and
sent it in to TBTS on Wednesday. Today I heard back that my problem
was reproduced and submitted to the firmware guys, with no expectation
of when it will be fixed.

D-Nav came out on other panels how long ago? It took forever to
make it to this one only to find that lots of it just plain doesn't
work. :(

Like I said - I wouldn't be nearly as miffed if the firmware was
labeled as beta...

- Chip

--- In Crestron@..., "Matt" <mjrtoo@...> wrote:

Right, another half-assed implementation by Crestron.



One of the big problems I am running into in the field is that my
horizontal nav is locking up on my 8X's. It requires a panel reboot
to
restore functionality. They have latest firmware, vtpro, etc....

For the time being I have had to ditch the D-Nav in a couple of
projects and use logic driven menus instead because they work
everytime.

Also, you cannot change the direction the horizontal list flows via
the arrows. As it stands now it seems to flow the wrong way of what
I
am expecting every time I use it. ;)

-JOHN

--- In Crestron@..., "Chip Moody" <cfm@> wrote:


Since they finally released firmware to support this on the
TPMC17,
I took a few minutes to try this out today. Overall impression is
"Meh".

The horizontal and vertical nav lists seemed the most
promising, but
mine won't scroll at all. I looked all through their properties,
but
think I'm missing something...


Re: vtpro-e hang time

Chris Erskine
 

How much memory is in your PC and what is the usage of the memory when you are compiling? Does it exceed the physical memory so that it starts swapping?



Chris

-----Original Message-----
From: Crestron@... [mailto:Crestron@...] On Behalf Of Nightcountry
Sent: Friday, January 23, 2009 9:49 AM
To: Crestron@...
Subject: [Crestron] Re: vtpro-e hang time

--- In Crestron@..., "scates98" <ccates98@...> wrote:

I experience this problems on some panels as well but I just have to
wait a minute or two and it always finishes. I've found that I really
have to be careful not to use too many fonts in my projects as it
causes the compile time to slow down as wall as keeps the file size
too large for some panels. My recommendation to you is to eliminate
any unnecessary fonts and give it another go.

- Ccates
Thanks - the file size I am using with the tps6l is around 10 meg
however the panels capacity is 28 - when you say eliminate unnecessary
fonts do you mean the number of font styles or just text information?
Cheers



--- In Crestron@..., "Nightcountry" <patrickbedford@>
wrote:

Hi is anyone else having a problem when compiling a vtpro program -
pc hangs at 50 percent when loading fonts and sometimes freezes
completely - another installer I know is having the same issues .....
the program is taking 300,000 kb in memory - have an I-7 processor
with 6 gigs of ram
and am still having problems - with vt 3.8 and now with vt 3.9
thanks


------------------------------------



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


Newbie Simpl+ Question

scates98
 

Hi all,

Sorry for the long post, but I like to give a lot of details to help
people understand what I'm trying to do. I'm an experienced SIMPL
Windows programmer but SIMPL+ is still pretty new to me. I'm trying
to find a way to program a custom menu subsystem for my client and was
hoping someone could help me in building this in SIMPL+.

The client will be using an ML-600 and he's only going to be using
some basic inputs like: dirpad up/down/left/right/enter and page
up/down on the remote to navigate an on-screen display generated by a
TPS-GA-TPI. He wants to have the ability to control any zone in the
house. So I've created a GUI so he can select room control, source
control, lighting control, climate control, shade control and security
control.

In SIMPL Windows I am using a series of buffers and interlocks to
control when the dirpad up/down/left...etc. signals are in use for a
particular menu. I am also using a series of Ring Counter with Seed
symbols to allow him to navigate the on-screen menu using only the
dirpad on the ML-600. Example: the user selects "Choose Room" from
the primary menu, then uses the ring counter to scroll through the
floors, another ring counter controls the scrolling through rooms for
the selected floor.

As I'm building this project, I am noticing that my menu system, built
in SIMPL Windows, is creating a lot of signals and I'm concerned with
how well it will function after I've duplicated it for all zones which
require it (at least 16 zones). I know that if I were to build this
in SIMPL+ it would be much more efficient and easier to copy, but I am
confused on how I could write it as I'm not experienced in SIMPL+. I
thought of using an array to create a table where the first row would
contain values for the primary menu (rooms, sources, lights, etc.).
Then each column would contain values for each of the primary menu
items (ex: 1=first floor, 2=main floor, 3=upper floor, etc.). However
I do not understand how to buffer the dirpad up/down commands to
control the scrolling through the list. I keep thinking about using
an IF statement but then I'm writing a large amount of nested IF
statements to control when the up/down command is enabled for a
specific menu. Perhaps using a long SWITCH/CASE statement would work?

Any help you can provide would be greatly appreciated as I know I need
to get my head into SIMPL+ programming to become a better programmer.
Please try not to get too technical with your replies as I'm still
new to programming this way and can get lost quickly.

Thanks In Advance For All Your Help,

- Scates

P.S. I've read the SIMPL+ programming help PDF and it's helped me to
get this far. I really need to take some sort of programming class to
better learn this.


Re: vtpro-e hang time

Nightcountry
 

--- In Crestron@..., "scates98" <ccates98@...> wrote:

I experience this problems on some panels as well but I just have to
wait a minute or two and it always finishes. I've found that I really
have to be careful not to use too many fonts in my projects as it
causes the compile time to slow down as wall as keeps the file size
too large for some panels. My recommendation to you is to eliminate
any unnecessary fonts and give it another go.

- Ccates
Thanks - the file size I am using with the tps6l is around 10 meg
however the panels capacity is 28 - when you say eliminate unnecessary
fonts do you mean the number of font styles or just text information?
Cheers



--- In Crestron@..., "Nightcountry" <patrickbedford@>
wrote:

Hi is anyone else having a problem when compiling a vtpro program -
pc hangs at 50 percent when loading fonts and sometimes freezes
completely - another installer I know is having the same issues .....
the program is taking 300,000 kb in memory - have an I-7 processor
with 6 gigs of ram
and am still having problems - with vt 3.8 and now with vt 3.9
thanks


Mitsubishi AC and Intesis

 

Has anyone integrated a Mitsubishi Mr. Slim, or other, A/C system with
the Intesis Modbus box?



The contractor has asked me whether this would be better than using
Mitsubishi's G50 controller.

Thanks in advance, for any input.


Re: vtpro-e hang time

scates98
 

I experience this problems on some panels as well but I just have to
wait a minute or two and it always finishes. I've found that I really
have to be careful not to use too many fonts in my projects as it
causes the compile time to slow down as wall as keeps the file size
too large for some panels. My recommendation to you is to eliminate
any unnecessary fonts and give it another go.

- Ccates



--- In Crestron@..., "Nightcountry" <patrickbedford@...>
wrote:

Hi is anyone else having a problem when compiling a vtpro program -
pc hangs at 50 percent when loading fonts and sometimes freezes
completely - another installer I know is having the same issues .....
the program is taking 300,000 kb in memory - have an I-7 processor
with 6 gigs of ram
and am still having problems - with vt 3.8 and now with vt 3.9
thanks


Re: Question on finding the number of defined array elements.

Chris Erskine
 

I agree that not only would your code be more compact but more efficient since you would not have to be copying data around all over. On the other hand, pointers would cause so much more problems in the code that systems would be crashing all over. Crestron would require better TB personnel and better tools since you would need a debugger that would let you step through the S+ code when it was running.



Chris

-----Original Message-----
From: Crestron@... [mailto:Crestron@...] On Behalf Of Joseph K. Vossen
Sent: Friday, January 23, 2009 9:06 AM
To: Crestron@...
Subject: Re: [Crestron] Re: Question on finding the number of defined array elements.

agreed...in my non-Crestron circle of travels in the past, I have found that a *good* understanding of pointers separates the good programmers from the great ones. And then when you jump into function pointers, that opens up a whole new world of fun.....


having pointers in SIMPL+ would benefit, for example, those tasks that perform a *lot* of parsing, such as busting up XML pages. Sure one can do it now with what is available, I just think the code would be a bit more compact, IMHO

-----Original Message-----
From: fooguy89 <fooguy89@...>
Sent: Jan 23, 2009 10:53 AM
To: Crestron@...
Subject: [Crestron] Re: Question on finding the number of defined array elements.

I'm pretty sure the reason Crestron doesn't do Pointers is because of
support. They tend to perform a lot of support that doesn't seem to
be "their problem" - issues that are clearly programming mistakes, but
they do try to help resolve them (I know people knock TB for a lot,
but I mean they do try to be helpful if you get the right folks).

Can you just imagine the chaos of newbies trying to use pointers,
overwriting memory, blah blah blah, and Crestron trying to suck it up
and fix it/teach them?

As a professional programmer, sure, it would be great to have, but I
can definitely see why many things are limited.

Sometimes I don't understand the need to try to fix and assist with
blatant programming problems (If you were to call microsoft and whine
about how your system crashed because you did a NULL pointer access or
overwrite the bounds of your array, they'd probably just be like
"Uh....GO FIND AND FIX IT YOURSELF!!")


--- In Crestron@..., Joseph K. Vossen <jkv@...> wrote:

the semi-colon after the if() is a valid statement from the parser's
point of view; it just doesn't do what you want/expect

here is a simple example of how that is useful; the following 'C'
code copies a NULL-terminated string, where 'p' points to the destination and
'q' points to the source:. The while() terminates when the NULL terminating
byte is hit.

while (*p++ = *q++)
; // <- note lone semi-colon

ya' just gotta love pointers...sure wish SIMPL+ had 'em.......

On Friday 23 January 2009 12:33 am, you wrote:
I would have expected to see a compiler error on the fatal ; at the
end of an IF statement.

True, but I always put them in so that if I do add another line I
don't mess up the execution order/nesting. (Didn't see the ; -
fatal, but a trace should have shown 10 outputs rather than just 1.)

Lindsay


------------------------------------



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