I could have swore that it populates the system number of the workspace.
Maybe so, but it shouldn't. If it populates with the Device and Port of the last device that was controlled, it should use the System of that device as well, as opposed to mixing and matching, possibly causing a command to a totally unintended device... that was my point.
I'm sure someone else has already mentioned this, but would it be possible to update the Run to Cursor option to actually work in a system with modules in it?
When I try to use it inside a module, it never actually stops, and when I try to use it in the mainline of a system that has modules, the debugger is always a line or two off. I regularly find myself clicking every line near where I want to stop, hitting "Run to Cursor", and having it tell me that line is invalid for the Run to Cursor option.
This same issue manifests itself when stepping through code.
I'd very much like to use these debug features, but its next to impossible to step through anything to find my issues if it highlights the wrong line all the time.
I probably haven't opened an old pjs project in a year, and as soon as I said this I found myself having to open one yesterday. Still wouldn't care about maintaining support for it, though....
Surely the simple answer to this (and similar issues with software / firmware) would be to have a protected area on amx.com where certified programmers can access:
Previous key version of software - i.e. older NS2 with support for PJS file types, previous couple of versions of the main apps in case of bugs in new releases.
Legacy Firmware versions - for when we have to update old installs...
I know all these things can be obtained from TS on request - but it is always outside of office hours when your backs against the wall and you need these things...
Surely the simple answer to this (and similar issues with software / firmware) would be to have a protected area on amx.com where certified programmers can access:
Previous key version of software - i.e. older NS2 with support for PJS file types, previous couple of versions of the main apps in case of bugs in new releases.
Legacy Firmware versions - for when we have to update old installs...
I know all these things can be obtained from TS on request - but it is always outside of office hours when your backs against the wall and you need these things...
Thats what I'd like to see...
I try and save all versions of software and firmware.
We will be rolling a new archive out on our website before the end of this year. We think that this will be greatly beneficial in supporting legacy systems while cleaning up the current application pages.
We will be rolling a new archive out on our website before the end of this year. We think that this will be greatly beneficial in supporting legacy systems while cleaning up the current application pages.
Excellent! The larger the archive the better. Hopefully all previous versions of the applications will be available.
Is there any way to have the compiler work a little different? The change I would like is for the compiler to first go through the code, and get all of the define_constant sections and learn about all of the constants, then do the same for variables, then do a compile like normal. I don't know if this is an easy fix, but it would make parts of my life a little easier and it would make it more convenient to use include files without having to worry about order of include.
From what the smart people have told me that's the way most compilers work. 2 passes, on the first pass you build the entire file and on the 2nd pass you compile it. I would think it would be easy but what do I know. Where's those smart people when you need them?
Currently, includes work in such a way that they are inserted into code whereever you place the INCLUDE 'filename' command in the main code.
This has its uses. But, I wish there was a way to make an include that each section of the include would be placed in the right section of code in the main program.
In other words, If you could put the include at the top of the code but it would be setup so that the devices, constants, variables, etc. in the main program could be used in the include. Currently If you locate the INCLUDE at the very top of the main code file, the DEFINE_whatevers in the main code do not yet exist in the INCLUDE's compile and will therefor have to be declared over there with different names or you'll have to move the INCLUDE statement down in the main code somewhere.
So, the what I'll call SUPER_INCLUDE file compile would take any devices and sorta virtually paste them into the main files DEFINE_DEVICE section at compile and the DEFINE_VARIABLE section would be virtually pasted in the DEFINE_VARs section, etc...
That way an include would be a true way to just organize all your code. You wouldn't have to worry about not having parts of the main code not there depending upon where you put the INCLUDE statement.
You can have multiple define_device, define_vars, etc., anywhere in your code. How would super_include know which section to put the include contents into? I guess it could use the first appropriate section in the Master file?
You can have multiple define_device, define_vars, etc., anywhere in your code. How would super_include know which section to put the include contents into? I guess it could use the first appropriate section in the Master file?
I guess you'd have to make some rules. For example, super_include would put it in the first instance found or something. I know in my case I'd end up with a simple master code file with only Includes (or super includes if you will) but the various includes could share variables and functions as a result. I don't even know how it would effect modules.
Eric,
I am not sure if this is what you are asking about but currently we use Include files a lot. In each of our include files we have all of the sections (i.e. DEFINE_DEVICE, DEFINE_VAR, DEFINE_EVENT...). We place the #INCLUDE calls right underneath the DEFINE_VARIABLE section of the main code.
For Instance
DEFINE_DEVICE
dvSomeDevice1 = 5001:1:1
dvAnotherDevice1 = 5001:2:1
DEFINE_VARIABLE
VOLATILE INTEGER nVar1
DEFINE_VARIABLE//INCLUDE CALLS GO BELOW
#INCLUDE 'Misc Functions.axi'
#INCLUDE 'Dev 1 Include File.axi'
#INCLUDE 'Dev 2 Include File.axi'
There are limitations or rules you have to follow though.
Each include file can access the devices and variables of the main code plus functions/calls. But each include file can only access devices, variables or functions/calls of the include file called before it. So in my example both Dev 1 Include and Dev 2 Include can access the functions, variables and what not in the Misc Functions include but Dev 1 Include can not access a device or function in the Dev 2 Include. Any devices or variables that you want available to all includes should be defined in the main code. Your SUPER_INCLUDE file needs to be called first then each include file after it can using anything defined in the SUPER_INCLUDE.
Like I said I am not sure if this is what you are talking about but it works for us.
That's not quite it, he's asking about being able to place that file at the very top of your mainline, and be able to have the define_event section within the include file reference devices and variables created in the mainline code.
Yea, you can work around it, like y'all do, but wouldn't it be cool if we didn't have to?
That's sort of what was discussed earlier in this thread about changing the way the code is compiled. DHawthorne termed this as a multi pass compiler which seems like a nice term and basically what should happen is that on the1st pass the compilers pulls out the contents of all the various DEFINE sections and places them in a single DEFINE section for that particular type of define. So if you have dozens of includes with dozens of DEFINE_VARIABLE the first pass would take them all and write them into a single DEFINE_VARIABLE and so on with all the other defines. The next pass of the compiler would then actually do the compiling. So it escence a super DEFINE_VARIABLE.
Are there any situations where a single pass compiler functioning as it currently does would be preferential to a multi pass compiler like DHawthorne described? It seems to me that multiple passes>a single pass at all times, but maybe I'm missing something.
Is there any particular reason that you might want a define variable section to not compile until after some random define event section?
SUPER_INLCUDE has a good ring to it, so I am not trying to upstage its name by any means....but maybe MERGE_INCLUDE is a little more specific for our needs.
From apps I have used in the past - many of which had exact timestamps (timecode) as a reference - 'merge' as a process would literally overlay the files and place the correct times between the appropriate existing values in the master file.
NSX could do something similar by using define_x as the lookup and insertion points.
Are there any situations where a single pass compiler functioning as it currently does would be preferential to a multi pass compiler like DHawthorne described? It seems to me that multiple passes>a single pass at all times, but maybe I'm missing something.
Is there any particular reason that you might want a define variable section to not compile until after some random define event section?
J
The compiler has to be multipass, or be able to deal with things like a multipass because functions and calls are already handled properly. You can put a function or a call anywhere in code and call it from anywhere and the compiler will handle it properly.
OK, fair enough, but it needs an additional pass, or a redesign of the order, or something. I'm with all the people who say all define_variable, define_constant, and define_device sections need to be compiled before anything else is.
And you didn't quite answer the question, but that may be because I phrased it wrong.
If AMX were to make a change, and compile define_device, define_variable, and define_constant first, then move on to other sections, instead of moving in order down the page, would this take away anything you can currently do? Or would this only make it easier to place includes?
I know I've posted this request before - possibly in this very thread, though I'm too lazy to read all 14(!) pages to find out.
In device notifications, it would be a huge benefit to be able to see strings to and from IP sockets, i.e. the 0:x:0 devices that have an ip_[client|server]_open associated with them. Of course there are workarounds, but it would help with troubleshooting and debugging if they worked like any other device.
I know I've posted this request before - possibly in this very thread, though I'm too lazy to read all 14(!) pages to find out.
In device notifications, it would be a huge benefit to be able to see strings to and from IP sockets, i.e. the 0:x:0 devices that have an ip_[client|server]_open associated with them. Of course there are workarounds, but it would help with troubleshooting and debugging if they worked like any other device.
That has been asked for a hundred times and it was not specifically mentioned in the features of NS3 that were listed in the announcement. So I am guessing no. Hope I'm wrong!
We hear you load and clear on this one and the developers assure me that NetLinx Studio will support this. The issue is in NetLinx master firmware not supporting it. We have the request in to that group already so now the topic belongs in the other forum.
On top of the auto complete not being enabled in comments suggestion / feature request, would anyone else find it helpful to have it disabled in string literals? I find that when typing a string literal it's just as annoying having the auto suggest pop up as in comments.
Comments
When I try to use it inside a module, it never actually stops, and when I try to use it in the mainline of a system that has modules, the debugger is always a line or two off. I regularly find myself clicking every line near where I want to stop, hitting "Run to Cursor", and having it tell me that line is invalid for the Run to Cursor option.
This same issue manifests itself when stepping through code.
I'd very much like to use these debug features, but its next to impossible to step through anything to find my issues if it highlights the wrong line all the time.
J
Previous key version of software - i.e. older NS2 with support for PJS file types, previous couple of versions of the main apps in case of bugs in new releases.
Legacy Firmware versions - for when we have to update old installs...
I know all these things can be obtained from TS on request - but it is always outside of office hours when your backs against the wall and you need these things...
Thats what I'd like to see...
I try and save all versions of software and firmware.
We will be rolling a new archive out on our website before the end of this year. We think that this will be greatly beneficial in supporting legacy systems while cleaning up the current application pages.
Excellent! The larger the archive the better. Hopefully all previous versions of the applications will be available.
We currently archive firmware at least one release back.
http://amx.com/techcenter/archivedFirmware.asp
The new website makes this link easy to find!
Jeff
Currently, includes work in such a way that they are inserted into code whereever you place the INCLUDE 'filename' command in the main code.
This has its uses. But, I wish there was a way to make an include that each section of the include would be placed in the right section of code in the main program.
In other words, If you could put the include at the top of the code but it would be setup so that the devices, constants, variables, etc. in the main program could be used in the include. Currently If you locate the INCLUDE at the very top of the main code file, the DEFINE_whatevers in the main code do not yet exist in the INCLUDE's compile and will therefor have to be declared over there with different names or you'll have to move the INCLUDE statement down in the main code somewhere.
So, the what I'll call SUPER_INCLUDE file compile would take any devices and sorta virtually paste them into the main files DEFINE_DEVICE section at compile and the DEFINE_VARIABLE section would be virtually pasted in the DEFINE_VARs section, etc...
That way an include would be a true way to just organize all your code. You wouldn't have to worry about not having parts of the main code not there depending upon where you put the INCLUDE statement.
I guess you'd have to make some rules. For example, super_include would put it in the first instance found or something. I know in my case I'd end up with a simple master code file with only Includes (or super includes if you will) but the various includes could share variables and functions as a result. I don't even know how it would effect modules.
I dunno, just a thought
I am not sure if this is what you are asking about but currently we use Include files a lot. In each of our include files we have all of the sections (i.e. DEFINE_DEVICE, DEFINE_VAR, DEFINE_EVENT...). We place the #INCLUDE calls right underneath the DEFINE_VARIABLE section of the main code.
For Instance
There are limitations or rules you have to follow though.
Each include file can access the devices and variables of the main code plus functions/calls. But each include file can only access devices, variables or functions/calls of the include file called before it. So in my example both Dev 1 Include and Dev 2 Include can access the functions, variables and what not in the Misc Functions include but Dev 1 Include can not access a device or function in the Dev 2 Include. Any devices or variables that you want available to all includes should be defined in the main code. Your SUPER_INCLUDE file needs to be called first then each include file after it can using anything defined in the SUPER_INCLUDE.
Like I said I am not sure if this is what you are talking about but it works for us.
Yea, you can work around it, like y'all do, but wouldn't it be cool if we didn't have to?
Is there any particular reason that you might want a define variable section to not compile until after some random define event section?
J
From apps I have used in the past - many of which had exact timestamps (timecode) as a reference - 'merge' as a process would literally overlay the files and place the correct times between the appropriate existing values in the master file.
NSX could do something similar by using define_x as the lookup and insertion points.
The compiler has to be multipass, or be able to deal with things like a multipass because functions and calls are already handled properly. You can put a function or a call anywhere in code and call it from anywhere and the compiler will handle it properly.
Jeff
And you didn't quite answer the question, but that may be because I phrased it wrong.
If AMX were to make a change, and compile define_device, define_variable, and define_constant first, then move on to other sections, instead of moving in order down the page, would this take away anything you can currently do? Or would this only make it easier to place includes?
J
In device notifications, it would be a huge benefit to be able to see strings to and from IP sockets, i.e. the 0:x:0 devices that have an ip_[client|server]_open associated with them. Of course there are workarounds, but it would help with troubleshooting and debugging if they worked like any other device.
isn't that gonna happen in NS3?
We hear you load and clear on this one and the developers assure me that NetLinx Studio will support this. The issue is in NetLinx master firmware not supporting it. We have the request in to that group already so now the topic belongs in the other forum.
Any takers?