Home AMX User Forum NetLinx Studio

Suggestions for future revisions of Studio

145791012

Comments

  • mpullinmpullin Posts: 949
    jjames wrote: »
    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.
  • JeffJeff Posts: 374
    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.

    J
  • 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....
    matt95gsr wrote: »
    I have used it, and do from time to time still use it - but not often enough to warrant keeping it around.
  • 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...
  • ericmedleyericmedley Posts: 4,177
    Jimweir192 wrote: »
    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.
  • Likewise, however the point is that having access to these files online would be a benefit...
  • Archived Applications on amx.com

    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.
  • jjamesjjames Posts: 2,908
    Doug Hall wrote: »
    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. :D
  • That's great - will it include Firmware??
  • Archived Firmware

    We currently archive firmware at least one release back.
    http://amx.com/techcenter/archivedFirmware.asp
    The new website makes this link easy to find!
  • Spire_JeffSpire_Jeff Posts: 1,917
    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.

    Jeff
  • viningvining Posts: 4,368
    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?
  • DHawthorneDHawthorne Posts: 4,584
    I'm sure it does use some form of multi-pass compilation, but the rules need some tweaking.
  • ericmedleyericmedley Posts: 4,177
    Here's a feature request...

    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.
  • ColzieColzie Posts: 470
    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?
  • jjamesjjames Posts: 2,908
    Sounds to me like a compiler issue, but i get what you're saying. That would be nice & handy.
  • ericmedleyericmedley Posts: 4,177
    Colzie wrote: »
    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.

    I dunno, just a thought
  • 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.
  • JeffJeff Posts: 374
    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?
  • Yes definitely!
  • viningvining Posts: 4,368
    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.
  • JeffJeff Posts: 374
    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
  • DarksideDarkside Posts: 345
    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.
  • Spire_JeffSpire_Jeff Posts: 1,917
    Jeff wrote: »
    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.

    Jeff
  • JeffJeff Posts: 374
    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?

    J
  • chillchill Posts: 186
    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.
  • yuriyuri Posts: 861
    chill wrote: »
    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.

    isn't that gonna happen in NS3?
  • mpullinmpullin Posts: 949
    yuri wrote: »
    isn't that gonna happen in NS3?
    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!
  • IP Sockets in Diagnostics

    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.
  • jjamesjjames Posts: 2,908
    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.

    Any takers?
Sign In or Register to comment.