Home NetLinx Studio

Suggestions for future revisions of Studio

1678911

Comments

  • felixmoldovanfelixmoldovan Junior Member Posts: 197
    Yep. FTCon. Easily confusing the con's
  • annuelloannuello Junior Member Posts: 294
    Im running into more and more times that I can only load code to a master after hours. I'd like to be able to leave studio open and program a timer to load the code to the selected rooms.

    One way that I manage this is to push the new code to the master during business hours, but I leave the reboot checkbox unticked. I then set a "reboot time" via the program that is already running on the master. When it reaches the time, the program calls reboot(0), which results in the new program being loaded.

    I set the reboot time via RMS. My approach is probably not the recommended one, but I parse the 'QUESTION-' string and look for specially constructed "questions". E.g. REBOOT AMX @ 23:30. I then parse the entire "question" to fill out my reboot timer, etc. My reboot code allows the following parameters: @ hh:mm, @ SHUTDOWN (when a user turns "off" the system), NOW (immediately), ASAP (immediately if in standby state, otherwise at shutdown), OFF (cancel the reboot request), ? (query for current reboot setting).

    This approach gets really powerful when you use the Send A Question To Rooms (plural) feature, since you can pick a large number of rooms in one go. When doing major code roll outs (> 30 rooms in one night) I will stagger the reboot time from 10pm through to 11:30pm, just to reduce the load a bit on the server.

    If you're running v3 firmware (I.e. haven't upgraded to v4, or have rolled your v4 back to v3) you can also exploit the FTP feature. I wrote a simple PHP script which takes a .tkn file and a list of IP addresses, then FTPs the .tkn to each IP address, with optional reboot.

    I'm still working on a mass-deployment system which will leverage FTCon.exe, but interrupt-free time to develop such systems is hard to come by in most of our jobs.

    Roger McLean
    Swinburne University
  • travistravis Junior Member Posts: 180
    Haven't looked in this thread in a long time and I might have said this already:
    If I could just use constants in constant declarations for more complex data types(it works fine with integers), it would help me a lot.

    DEVCHAN dcOne = {dvREL8_11,1}
    DEVCHAN dcTwo = {dvREL8_11,2}
    DEVCHAN dcArr[] = {dcOne,dcTwo}

    same thing with strings

    I don't want to move things down into define_variable or some other ugly work around.
  • feddxfeddx Junior Member Posts: 140
    Not sure if it's been mentioned

    The ability to edit code while uploading FW or code. I know, it's silly, and I could just as easily open a new instance of NS, but this would be cool.
  • JeffJeff Junior Member Posts: 374
    A few things

    1) I'd like the idea to have default directories for includes and modules. Instead of moving each module or include into my workspace folder and editing it from there, I keep all modules and includes in a central location, and add them from there. You can add those directories to the compiler in settings, but when you right click on "Includes" and select "Add Existing Include File", it always takes you to the workspace directory. That means every time I add a module or include, I always perform the same navigation to get to the directory the files are. Ideally this would be selectable to either use a default directory or use the workspace as default, so that people who do store their files in the workspace directory would also still be happy.
    2) I know this is minor, but please fix the device mapping issue that requires "DEFINE_DEVICE" to be in all caps. Every other line of my code is in lowercase, but that is in uppercase, and it makes my little OCD brain twitch to the point that I had to put a comment in to remind myself not to change it ;) It's just silly that you have a case sensitive IDE with a case insensitive language.
    3) When the auto suggestion box pops up, why does Tab select one of the options? From my perspective I would much rather this only happen on enter. When I'm typing in variable declarations, I generally type volatile/persistent/nonvolatile, then tab twice, then the type, then tab twice, then the name of the variable. This means that if I'm creating, for example, a dev array, I type non_volatile tab tab dev tab, and as soon as I hit Tab after type dev, it autocompletes to devchan, even though I wanted dev. I'm not sure what utility there is in having tab select the autosuggestion when enter already does that, and when you might want to tab after typing something in.

    I feel like there are more things that have been driving me crazy but that's all I remember for now. Perhaps I shall come back later with more ranting.
  • chillchill Luddite Posts: 186
    Jeff wrote: »
    A few things

    1) I'd like the idea to have default directories for includes and modules.

    There are default directories, they're just not useful locations for me.
    ...every time I add a module or include, I always perform the same navigation to get to the directory the files are...

    You can drag module and includes into the workspace from a Windows window; or maybe I'm not understanding the question. And I believe that the directory where the workspace is is in the path by default.
    ...
    3) When the auto suggestion box pops up, why does Tab select one of the options?...

    Because of such brain-damaged behavior, I keep auto-complete turned off. I find it's faster and less frustrating to just type what I want.
  • JeffJeff Junior Member Posts: 374
    chill wrote: »
    There are default directories, they're just not useful locations for me.

    There are directories, but when you choose "Add an existing file" It doesn't go to them. I'd like to have it start there.
    chill wrote: »
    You can drag module and includes into the workspace from a Windows window; or maybe I'm not understanding the question.

    I didn't know this. That's a useful workaround for now, but I'd still prefer to not have to have do it in windows, and just have this program know where my modules are. I can't be the only person out there who keeps all his modules in the same place.
    chill wrote: »
    I believe that the directory where the workspace is is in the path by default.

    Right, and what I'm saying is I'd like to be able to choose EITHER the workspace as default (for people who keep modules and includes in their individual project folders) or a specified default directory (for people who keep everything in the same location). Just going to default directories like I use doesn't solve the problem, it just changes which users are unsatisfied with it ;) I was trying to propose something that made it more useful for me without removing functionality that works well for other users.
    chill wrote: »
    Because of such brain-damaged behavior, I keep auto-complete turned off. I find it's faster and less frustrating to just type what I want.

    I'm leaning that way myself, it's getting to where it hurts more than it helps. I just figured I might try ranting here and seeing if they would fix it before giving up completely.
  • jjamesjjames AMX Sustaining Engineer Posts: 2,900
    chill wrote: »
    There are default directories, they're just not useful locations for me.
    You can change / add default directories by going to Settings -> Preferences -> NetLinx Compiler, and then select Include Files. Add or change at will.
  • JeffJeff Junior Member Posts: 374
    That doesn't change what I'm talking about. If you look at my original post you'll see that I mentioned you could change what directories Compile from, I'm talking about what directory shows up when I right click on the "Module" folder in the workspace, and select "Add Existing Module File" That causes a dialog to open up that always starts within the workspace directory, NOT those compiler directories I selected.

    I'd like the default directory for modules to be where the program expects me to look for modules. Clearly AMX understands that I keep all my modules in one place, because they allow me to set a directory that all of my modules are in. If the program understands that, then why does it keep expecting me to have modules in my workspace directory instead of my module directory?
  • jjamesjjames AMX Sustaining Engineer Posts: 2,900
    If you look at my post, you'll see I quoted "chill". :)
  • JeffJeff Junior Member Posts: 374
    If you look at my post you'll see I was snarky for no reason. Doh!
  • rfletcherrfletcher Junior Member Posts: 217
    Jeff wrote: »
    2) I know this is minor, but please fix the device mapping issue that requires "DEFINE_DEVICE" to be in all caps. Every other line of my code is in lowercase, but that is in uppercase, and it makes my little OCD brain twitch to the point that I had to put a comment in to remind myself not to change it ;) It's just silly that you have a case sensitive IDE with a case insensitive language.

    Huh, so that's why that broke... I did not know that. I'm not sure I care about the functionality enough to put the caps back in though, I've just been doing custom device mapping since they broke that.
  • JeffJeff Junior Member Posts: 374
    I actually didn't know it until very recently. I was going to post on here complaining about broken device mapping, then I decided to do a search on the forums to see if anyone else had the same problem, and I found the issue. Can't remember who originally figured it out.
  • rrdbstudiosrrdbstudios Posts: 160
    This isnt so much for studio, but for tp4... Be able to change the focus of an object or group. For instance, I have a popup in front and in focus, but I select a sub option which opens on top of the previous popup, I would like to de-focus the previous popup, so that the new one can be used and more or less have a "cool" look effect; upon closing that popup, the previous background pop comes back into focus.

    Obviously, as for studio, it would be nice to have commands to do this via code as well.
  • trobertstroberts Member Posts: 226
    Function should be allowed to return a DEV value

    Not sure if this has been requested or not but it would be a nice addition if a function should be allowed to return a DEV value, so that the following would be possible.

    DEFINE_FUNCTION DEV fASSIGN_DEV_TO_CTRL
    {
    bla bla bla
    return 5001:1:0;
    }

    button event
    push[tp,btn]
    pulse[fASSIGN_DEV_TO_CTRL,chan]
  • jdonachiue@shaw.ca[email protected] Junior Member Posts: 57
    Double Click Compiler WARNING to Take you to the warning in code

    I use #WARN to make notes for Compiling and it would be nice to be able to DBL Click to get to that location.

    I know this has been requested, but it bears repeating...
    It would also be nice to DBL Click Errors and get to the error; not 2 Page Ups to get near the error...
  • viningvining X Member Posts: 4,355
    Works for me! The only problem seems to be with include file #WARN's they just go to the corresponding line number in the main but otherwise it works just fine for warn's in the main or modules.
  • jdonachiue@shaw.ca[email protected] Junior Member Posts: 57
    That is the issue then; include files...
    It is as though include files were an after thought to Netlinx.

    This is pretty much all that is in my Source file:

    // ****************************************************************************
    // Include Files
    // ****************************************************************************
    // Application System Compiler Switches
    #INCLUDE 'SYS_Compiler.axi';
    // Application System
    #INCLUDE 'SYS_System.axi';
    // Include AMX Framework Library of Functions
    #INCLUDE 'AFL_System_2_0.axi';
    // ****************************************************************************
    // Include Files
    // ****************************************************************************
  • quibraljquibralj Junior Member Posts: 5
    blue screen background

    maybe its good to be like a turbo C backgroun.. the blue background..just my idea..
  • chillchill Luddite Posts: 186
    #undefine ... so I can override a #define that's in somebody else's include.

    A get_last() that works in a level_event.
    .
  • HARMAN_ChrisHARMAN_Chris Harman Professional University Posts: 306
    quibralj wrote: »
    maybe its good to be like a turbo C backgroun.. the blue background..just my idea..

    @quibralj - You may already be aware of this, but you can change this in NS today. I personally use the dark palette found in this post: http://www.amxforums.com/showthread.php?8481-Solarized-colour-scheme
  • Joe HebertJoe Hebert Junior Member Posts: 2,154
    chill wrote: »
    A get_last() that works in a level_event..

    That was fixed back in 2007

    http://www.amxforums.com/showthread.php?1670-get_last-for-dev-arrays-on-level-events-a-solution&p=21994#post21994

    Did it break?
  • Jim DonachiueJim Donachiue Junior Member Posts: 82
    Function Parameter List Hint

    Please parse this list and show one or two parameters on a line;
    so I do not have a list of parameters on one line that may go off of the screen.

    i.e.
    In Netlinx Studio Type:
    Define_Function TAudio_Create( - HINT POPS UP

    Picture this on one line in a Hint Window:
    TAudio_Create(Integer Index, Dev Device, Integer Zone, Integer Type, Integer SubType, Char Caption[], Char Name[]/*Polycom-VirtualChannel;Biamp-InstanceID;ClearOne-Name*/, Char Param1[]/*Polycom-NA;Biamp-Index1;ClearOne-DeviceType*/, Char Param2[]/*Polycom-NA;Biamp-UnitID;ClearOne-DeviceID*/)

    I would like to see a multi-line HInt Window:
    TAudio_Create(Integer Index, Dev Device,
    Integer Zone, Integer Type,
    Integer SubType, Char Caption[],
    Char Name[]/*Polycom-VirtualChannel;Biamp-InstanceID;ClearOne-Name*/,
    Char Param1[]/*Polycom-NA;Biamp-Index1;ClearOne-DeviceType*/,
    Char Param2[]/*Polycom-NA;Biamp-UnitID;ClearOne-DeviceID*/)

    Please and Thank you.

    I know this is very easy to accomplish - even if it was coded in VB, but I think Netlinx Studio is code in Visual C++.
  • Jim DonachiueJim Donachiue Junior Member Posts: 82
    Allow custom code folding i.e.

    #REGION 'Display Control'
    DEFINE_EVENT
    BUTTON_EVENT[tpsDisplay, btnsDisplayPowerOn]
    {
    PUSH:
    {
    TDisplay_Power(Get_Last(btnsDisplayPowerOn), True);
    }
    }
    ... etc
    #ENDREGION
  • nickmnickm Blinky Light Aficionado Posts: 152
    Allow custom code folding i.e.

    #REGION 'Display Control'
    DEFINE_EVENT
    BUTTON_EVENT[tpsDisplay, btnsDisplayPowerOn]
    {
    PUSH:
    {
    TDisplay_Power(Get_Last(btnsDisplayPowerOn), True);
    }
    }
    ... etc
    #ENDREGION

    Very much THIS ^^^^^^

    Being able to set custom folds would be a huge productivity boost.
  • chillchill Luddite Posts: 186
    Joe Hebert wrote: »

    I did not know it had been fixed. Maybe I should get in the habit of reading release notes :^|

    Thanks.
    .
  • SquealerSquealer Junior Member Posts: 3
    NS Object Oriented Style

    Why not make NS Object Oriented ?
  • nicholasjamesnicholasjames Junior Member Posts: 154
    Squealer wrote: »
    Why not make NS Object Oriented ?
    Duet is Java.
  • SquealerSquealer Junior Member Posts: 3
    Duet is Java.

    Duet Plugin Costs money, Not everyone willing to pay :-(
  • zerkalozerkalo Junior Member Posts: 19
    I hope for the following features / fixes:
    - Timeline arrays that work with get_last(), such as the device arrays
    - timeline_create does not work with INTEGER time interval arrays, only works with LONG type arrays. Still the code compiles without errors. Either make it possible to initialize a timeline with integer array, or give an error or at least a warning when compiling.
Sign In or Register to comment.