¿ªÔÆÌåÓý

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

Re: 3 Series Multiple Programs - Tips, Tricks and Issues


 

Sorry about the flow chart link being broken.? Here's a visual representation of what I ended up doing:

It downloads as a .pdf.? Hopefully it helps tie the description to how it actually works.? This example uses the "transposition" method by dedicating a slot in the processor to basically just shift an IPID that would cause conflicts to an IPID that won't.

You can see how there are (3) instances of the "Open Office" room type and (2) instances of the "Small Huddle" room type that would each have to talk to the same DM/VC program slot and would have conflicting EISC IPIDs in the DM/VC program in slot 01.? By transposing to offset IPIDs for the EISCs it lets me define unique IPIDs in the DM/VC program and exactly the same IPIDs in the compiled "room program".? The transposition program just passes the data back and forth seamlessly.? The only downside to this method is that it eats a program slot in your processor and if you needed all 10 it might be an issue.? The beauty is that you could easily add an RMC3 and just use it's slots to transpose for you.

The transposition program itself is pretty simple and I'm actually using the same compiled program for all three transposition slots, but using crosspoints based on a value from a text file to steer which EISC signals between matching pairs.

In the transposition program, I have EISCs defined at B1, B2, B3, B5 and B6 as well as E0 and E4.? I just defined 1000 digital/analog/serial signals for each that go to corresponding control (E0 and E4) and equipment (B1,B2,B3,B5,B6) crosspoints.? A module reads two analog values from an XML file that tells each control crosspoint which equipment crosspoint to connect to and voila.? So far I'm using progload -p:x -n to load the program without setting the IP table and then manually setting the IP table entries as desired but I may use values from the XML file to configure the IP Table from within the program at runtime if I deem it necessary.

As a side note, no MSPs are required in the transposition program as it just passes serial signals through as transient.? As long as there are MSPs as necessary in the destination programs, the strings will be maintained permanent in memory where they belong.

Enjoy....



On Wed, Sep 24, 2014 at 10:49 AM, j pride jpride@... [Crestron] <Crestron@...> wrote:
?

Neil, thank you for typing that up. I bookmarked it and will check that out next when i start messing with multiple apps per processor.?

::::::::::::
J Pride


On Wed, Sep 24, 2014 at 1:53 AM, Neil Dorin neildorin@... [Crestron] <Crestron@...> wrote:
?

I posted about this a few weeks ago (topic #199243). I even included a flow chart diagram of the particular system where I ran across the issue I was trying to solve initially. At the time I got little or no response from the group. Possibly it's not a situation many others have encountered.?

There are certainly multiple approaches to solving conflicting resource issues but in my case the solution ended up allowing three instances of the same compiled program to run on three different processors and all be able to use a different EISC IPIDS to talk to the correct program where it's necessary COM ports and DM devices were defined.?

The obvious way to accomplish this was to define multiple EISC symbols at multiple IDs and write the IP table from the program at runtime to only use the IPID needed, but I found that to be conceptually messy and could possibly cause issues with another program not being able to register an IPID, depending on program start order which I can't always control.?

In the end, I chose to use an empty program slot to define an EISC at an IPID consistent with the one in the compiled room program and another at the true destination IPID. Effectively "transposing" from one IPID to another. The only things in the program are two EISC symbols with however many joins necessary defined to simply pass signals straight through. I simply manually set the IP table as necessary. The room program passes it's signals to/from a ?transposition program in the same processor which then steers them to/from the correct destination (could be a program in the same processor or a different one).?

Another trick is to use S# libraries with static variables to pass data from one program to another without having to define any hardware symbols (like EISCs) with potentially conflicting IDs.


On Sep 23, 2014, at 9:53 PM, j pride jpride@... [Crestron] <Crestron@...> wrote:

?

"or (my personal new favorite approach) using an empty program slot as an IPID resource translator/relay, but in my experience it pays off in spades when I can use the exact same compiled code in multiple slots on the same or different processors¡±

Can you expound on the first concept in this quote? Also, how can one load the exact same code into multiple slots on the same processor if com ports and ipids can't be shared, unless each program isn't using those things (which seems unlikely)?

Sorry for the formatting, on my phone...

On Sep 23, 2014 1:44 PM, "Neil Dorin neildorin@... [Crestron]" <Crestron@...> wrote:
?

All of the resource sharing concerns/restrictions are quite well documented in online help and Crestron Labs.? It's not like it's a secret that programs can't share COM ports, IPIDs, Cresnet IDs, etc.

Sure it's sometimes a challenge that requires either re-writing the IP table from the program at runtime, or (my personal new favorite approach) using an empty program slot as an IPID resource translator/relay, but in my experience it pays off in spades when I can use the exact same compiled code in multiple slots on the same or different processors.? It makes for a far more consistent product, especially when dealing with large commercial projects with multiple rooms that function identically.

On Tue, Sep 23, 2014 at 12:28 PM, neil.carthy@... [Crestron] <Crestron@...> wrote:
?

Maybe obvious in hindsight but I wasted an hour or so debugging an ethernet device that wouldn't connect to a processor before I realised that I had used that particular ethernet slot on a different program. The error in the processor log file was unambiguous but I checked a lot of other things before getting to that.

Now, if I have multiple programs, I make sure that they do not use overlapping ENET slots.




Join [email protected] to automatically receive all group messages.