Any suggestions for improving debugging and diagnostics would be appreciated.
Here are a suggestion to get the discussion started.
How about list box for each type of device/port Send_Command that would be found in Software History/Product Information. This would eliminate the need to find and manually enter common commands such setting the baud rate on a com port.
If you?re including the editor as part of debugging and diagnostics then here is my list.
Editor
1) Please fix the Automatically Stamp File with Creation and Last Modified Date so that it doesn?t muck up the code folding whenever a file is saved(whether it?s an auto save or manual save). I really miss not being able to use the last modified option. Here are a couple of threads that discussed this before:
Aug 2006 http://www.amxforums.com/showthread.php?t=1844
Feb 2007 http://www.amxforums.com/showthread.php?t=2418
2) Please improve the auto suggest/complete for STRUCTs. I don?t know if others have experienced the same but for me sometimes it works, and sometimes it doesn?t. It seems like the larger the program the less it works and that?s the time I could use it the most.
3) One of the many current useful editor features is having Call-tips displayed when a user defined function name is followed by an open parenthesis. It would be welcome to see Call-tips for built in Netlinx functions as well.
For example if someone types in:
IP_CLIENT_OPEN(
Then the following Call-tips would be displayed:
IP_CLIENT_OPEN(INTEGER LocalPort,CHAR ServerAddress[ ],LONG ServerPort, INTEGER Protocol
And even better if any of the parameters have Netlinx built in pre-defined constants (e.g. IP_TCP, IP_UDP and IP_UDP_2WAY) then those options would popup for auto suggest when reaching that parameter (in this example the INTEGER Protocol param.)
4) This is an oldie from V2.3 and more of a nuisance than anything, a request to be able to Edit Master TCP/IP settings without having it duplicated first.
May 2005 http://www.amxforums.com/showthread.php?t=679
2) Allow us to edit the Device, Port, and System in the Netlinx Notifications dialog box. After you create an entry you can go back and edit all properties for that entry except for the D:P:S itself.
3) I don?t know how others feel but I would find it helpful to have checkboxes to enable/disable entries in the Netlinx Device Notifications Options dialog box. Something like the attached.
4) BIG request to fix debugging (hitting breakpoints and stepping through code) in modules. Breakpoints are always one line off in modules. It took me a while to figure out that in order to break on the line you want, you have to set the breakpoint one line above the line that you want (even if the line above is a comment or blank) When you step though code it gets confusing especially when it steps on blank lines and comments. I?m never sure I can trust what I see. Here is code that verifies breakpoints are one line off in modules.
MODULE_NAME='TestMod' (DEV vdvTest)
DEFINE_EVENT
CHANNEL_EVENT[vdvTest,1] {
ON: {
SEND_STRING 0, 'Entering channel event'
// 2) put a breakpoint on this comment only and it will break and highlight this line. Single step once and the following SEND_STRING 0 will print
SEND_STRING 0, 'Channel 1 on' // 1) Put a breakpoint on this line only and it won't break at all
SEND_STRING 0, 'Exiting channel event'
}
}
5) Request for Verify TKN on Netlinx Master to be more than just a file date and time stamp comparison. Is it possible to get something like the Axcess days where it did a binary comparison? (at least that?s what I think it did) Recompiling the same exact code that was just downloaded will tell us the TKNs don?t match which really shouldn?t be the case...should it?
I third or forth Dave?s original request for making bookmarks persistent in a workspace along with many of the other thoughtful suggestions posted in this thread.
Looking for this?
C:\Program Files\Common Files\AMXShare\COM\nlrc.exe
Double-click it. You'll be happy to see what comes up.
OMG...
We had a job a few years back where I wrote a perl script to build up the source code from a series of blocks based upon a spreadsheet that our sales force used. Also made heavy us of #DEFINE statements within the code. All that was missing was a commandline compiler, that I was told by an AMX Supplier that it 'Didn't Exist' but looking at that I can only assume it has always been there.... to quote cartman.. GOD DAMMIT....
Thanks for pointing that out There aren't any exe's in there that do Macros for you are there ^_^
Is anyone going to put these into action? Can someone at AMX let us know what they think of all this?
Oh c'mon Eric! You should know better. AMX rarely says anything about what they will or won't fix here on the forum (do you blame them though?) If AMX doesn't any action on these suggestions, who wants to help make a compiler / IDE of our own? (Which could be distributed by AMX to ensure it doesn't fall in the wrong hands. Haha - look at me, actuallying thinking something like that *could* happen.)
Thanks for pointing that out There aren't any exe's in there that do Macros for you are there ^_^
No problem. I don't think there's much else that we could use that would enhance any 3rd party programs.
Joe - excellent suggestions. I think about how much I have grown accustom to Microsoft's Visual Studio, and then going back to NS2 . . . yikes. Now - I know AMX is not, and probably does not have the resources like MS does, but I think it's time for an overhaul of NS.
IMHO VA will increase product sales but the overall quality of AMX installations will suffer which in turn might have a negative affect on referrals and subsequently sales will decrease.
I also think that by time VA is made a viable alternative to hand coding through NS2, support bi-directional serial communications and parsing it will likely be obsolete and Microsoft will have mastered a version of WMC that will be far superior for far less $$.
Obviously the suits and engineers are a lot smarter than I and I'm probably completely off track but that's my take on the VA project.
This is a custom field and you can't do custom on an assembly line. We should emphasize the "custom" as that's what make this product truely unique.
It would be nice to be able to copy/paste an IR file channel assignment from the template into studio define_constants area from IREDIT.
Highlight and copy the chan/function area in IREDIT, and a very clever little chunk of 'the new studio' could paste it into your code with an equals sign injected in between the name and the value.
Alright, if the equals is to hard, perhaps just Chan, Space, Function, CR.
Would make array assembly for IR devices so much quicker.
Out of curiosity - when you say "template", do you really mean AMX's template? Or do you mean any old IR file. I wrote a "utility" a while back that "reads" an IRL file and then displays only the Channel number, function name, and hex of the IR called "Earl & Irv" (from irl & irv file extensions). I abandonned it for some reason, but reviving it wouldn't be hard.
It wouldn't be difficult to add a function like you're talking about, and then paste it into NS. (Or better yet, drag it into NS like you're talking about.)
NS lacks a lot of "cool" features, which is why I had written some utilities to help out while programming. Of course, I never use those utilities - they were just "neat" ideas at the time.
Here's a screen shot of one of the versions I was working on.
This may have already been mentioned, but I'd like to see the compiler compile Include files as well. I use Includes apparently more than many programmers, but I find them an easy way to throw in a bunch of code I use in a lot of rooms without overly complicating the main code. Unfortunately, sometimes I'll make an edit in an include file, and then go to the main code, compile it, and send it out, without realizing that I forgot to compile the include file itself.
Why can't the first step in the compiler be to look for include files, compile them, and then come back and compile the main code?
This may have already been mentioned, but I'd like to see the compiler compile Include files as well. I use Includes apparently more than many programmers, but I find them an easy way to throw in a bunch of code I use in a lot of rooms without overly complicating the main code. Unfortunately, sometimes I'll make an edit in an include file, and then go to the main code, compile it, and send it out, without realizing that I forgot to compile the include file itself.
Why can't the first step in the compiler be to look for include files, compile them, and then come back and compile the main code?
J
ICLUDE file don't need to be compiled separately. They are just an outsoured part of the "mainfile", and are compiled to the time the maincode is compiled. An Include *may* be a kind of full working source, but it's not a must.
They only thing you can get in trouble is to forget to save the modified Include before you compile your main file. Without saving, the include is used unmodified.
I use a bunch of include files and NS auto saves all files before a compile. I'm not sure if this is a feature I turned on at one point, but it insures I always compile the revisions I've made (it also automatically saves screw-ups tho ). NS also compiles any modules that are part of the project as long as I have the .axs file in the module section and not the .tko.
Thanks for clearing that up, now I can more accurately describe my problem.
I don't save before I compile manually. I have the "Automatically Save Files before Compile" option checked in the NetLinx preferences, so I just hit F7, it auto saves the main code, and it compiles the saved main code.
The problem is, if I don't save the include file, it includes the previously saved include file, not the current one I have modified. I guess then, my request would be that include files be autosaved upon compile as well as the main code.
For the folks that want to generate NetLinx code from an IRL file, you can select the "Tools-Code Wizard..." menu option in NS2. Select the "I want to generate constants from an IRL file." option.
You are prompted for an IRL and a prefix for the constant variables. The constants are stuffed into the DEFINE_CONSTANTS section.
Quick way of knowing what codes are available in the IRL file and saves time typing in all the values.
For the folks that want to generate NetLinx code from an IRL file, you can select the "Tools-Code Wizard..." menu option in NS2. Select the "I want to generate constants from an IRL file." option.
DUH!!!
Why do I feel that the last time anyone ever used the Code Wizard in NS2 was during the online training / tutorial? I personally forgot about it because 5 of the 6 options in the wizard are useless in my experience / does not fit my needs.
Thanks for reminding us about that - might be handy!!
Are you sure about this? In my experience, NS only saves the active file you have open before a compile . . . .
J
I think I know where the confusion is coming in. I normally just click on Build Active system (it's in my tool bar). This option does save all files. F7 and the compile option do not seem to save everything, as you have indicated.
Maybe you could use preferences to set a shortcut to build active system?
What I want then, is a combination of "Compile" (which compiles the currently open file), and "Build Active System" (which builds the system you have set as "active" in the workspace.
I have 20+ systems in my workspace, and I don't always switch the one I'm working on to "Active". What I'd like to see is something like "Build Current System". Basically, this one would only show up if you have a Master file open (if I'm currently editing an include file, a module file, this would not be available), and it would do exactly what "Build Active System" does, except it would work on the open file and all of its includes and modules, not the active system in the workspace.
I realize that by this point in time, I"m being incredibly picky, and I've been working without this just fine, but in an ideal world, thats the functionality I would like.
For the folks that want to generate NetLinx code from an IRL file, you can select the "Tools-Code Wizard..." menu option in NS2. Select the "I want to generate constants from an IRL file." option.
You are prompted for an IRL and a prefix for the constant variables. The constants are stuffed into the DEFINE_CONSTANTS section.
Quick way of knowing what codes are available in the IRL file and saves time typing in all the values.
Why do I feel that the last time anyone ever used the Code Wizard in NS2 was during the online training / tutorial? I personally forgot about it because 5 of the 6 options in the wizard are useless in my experience / does not fit my needs.
Thanks for reminding us about that - might be handy!!
Double Duh!
What a good idea that function is. Wish I'd thought of it!
I hereby retract my request for the IR import function V2.00 from the record and request an RTFM button implimentation instead!
Why do I feel that the last time anyone ever used the Code Wizard in NS2 was during the online training / tutorial? I personally forgot about it because 5 of the 6 options in the wizard are useless in my experience / does not fit my needs.
Thanks for reminding us about that - might be handy!!
Agreed. Maybe this feature should be placed in the Tools menu next to the related "Find IRV/IRL..." so that it is more easily found.
No professional computer user with any kind of ego would open a Wizard; those are for n00bs.
I vote for integration of Subversion it is much better than source save. We use it for over two years now and it is great ! Besides there is a excelent integration into the Windows Explorer named TortoiseSVN.
But instead implementing a specific one it should be configurable or better made as a kind of plugin, so everyone could expand it !
A good feature would be to make extensions to the tools menu that can have placeholders depending on the active system.
Just think of a tools menu entry like "telnet %IP%" on key F10. Every time you press F10 a telnet connection is opened to the master with the IP settings from Active System. (I would do a "putty.exe %IP%" instead :-) )
usefull placholders will be:
%IP% IP of the Active System (<TransTCPIP>)
%NAME% Name of the Active System (<Identifier>)
%SERIAL% Serial connection data (<TransSerial>)
%USERNAME% (<UserName>)
%PASSWORD% (<Password>)
%PLATFORM% from the System/Plattform tag ("System"/"Plattform")
The tags in the brackets are the tags from the AXW file.
That would be great and a lot of help for doing jobs with multiple systems, even for those who work with many systems.
Should be a easy one for the expert group at AMX ;-)
I'd like to see the Device Notifications dialog actually work with a 0 system number. I.e. The system I'm currently connected to. I manage 30+ masters and occasionally need to look a various strings via notifications. In addition to changing the master comm setting (which is fair enough), I currently have to create a new notification which is bound to a specific system. It would be much more efficient to allow notifications for a system number of 0.
I'd like to see the Device Notifications dialog actually work with a 0 system number. I.e. The system I'm currently connected to. I manage 30+ masters and occasionally need to look a various strings via notifications. In addition to changing the master comm setting (which is fair enough), I currently have to create a new notification which is bound to a specific system. It would be much more efficient to allow notifications for a system number of 0.
Roger McLean
Swinburne University
I see your point, but 0 is also used in other places as a wild card for "all" systems. No doubt they were thinking of that, and thought it would be a Bad Thing, and suppressed it.
I see your point, but 0 is also used in other places as a wild card for "all" systems. No doubt they were thinking of that, and thought it would be a Bad Thing, and suppressed it.
What about if studio takes the system number out of the current active system from the workspace.
Normaly if you have multiple system you also have a properly setup workspace with the system numbers set.
By the way. Studio 2.5 already do this, at least for "control a device" and "emulate a device". It takes the System number from the current active system.
So if you have the system numbers setup in your workspace all is fine.
It would be nice to have warnings, when reserved words are used. Just spent 3 hours of debugging the Event-Handlers because I was dumb enough to define a Struct type named "DEVICE"
Comments
PS *cough* Command Line Compiler *cough*
plz k thx bai
C:\Program Files\Common Files\AMXShare\COM\nlrc.exe
Double-click it. You'll be happy to see what comes up.
Editor
1) Please fix the Automatically Stamp File with Creation and Last Modified Date so that it doesn?t muck up the code folding whenever a file is saved(whether it?s an auto save or manual save). I really miss not being able to use the last modified option. Here are a couple of threads that discussed this before:
Aug 2006 http://www.amxforums.com/showthread.php?t=1844
Feb 2007 http://www.amxforums.com/showthread.php?t=2418
2) Please improve the auto suggest/complete for STRUCTs. I don?t know if others have experienced the same but for me sometimes it works, and sometimes it doesn?t. It seems like the larger the program the less it works and that?s the time I could use it the most.
3) One of the many current useful editor features is having Call-tips displayed when a user defined function name is followed by an open parenthesis. It would be welcome to see Call-tips for built in Netlinx functions as well.
For example if someone types in:
IP_CLIENT_OPEN(
Then the following Call-tips would be displayed:
IP_CLIENT_OPEN(INTEGER LocalPort,CHAR ServerAddress[ ],LONG ServerPort, INTEGER Protocol
And even better if any of the parameters have Netlinx built in pre-defined constants (e.g. IP_TCP, IP_UDP and IP_UDP_2WAY) then those options would popup for auto suggest when reaching that parameter (in this example the INTEGER Protocol param.)
4) This is an oldie from V2.3 and more of a nuisance than anything, a request to be able to Edit Master TCP/IP settings without having it duplicated first.
May 2005 http://www.amxforums.com/showthread.php?t=679
5) Yes, it would be great to collapse any set of braces.
Debugger
1) Request for Clear buttons on Control/Emulate a Device like the image posted at the top of the following Jan 2007 thread: http://www.amxforums.com/showthread.php?t=2297
2) Allow us to edit the Device, Port, and System in the Netlinx Notifications dialog box. After you create an entry you can go back and edit all properties for that entry except for the D:P:S itself.
3) I don?t know how others feel but I would find it helpful to have checkboxes to enable/disable entries in the Netlinx Device Notifications Options dialog box. Something like the attached.
4) BIG request to fix debugging (hitting breakpoints and stepping through code) in modules. Breakpoints are always one line off in modules. It took me a while to figure out that in order to break on the line you want, you have to set the breakpoint one line above the line that you want (even if the line above is a comment or blank) When you step though code it gets confusing especially when it steps on blank lines and comments. I?m never sure I can trust what I see. Here is code that verifies breakpoints are one line off in modules.
Main Source File:
Module ? TestMod.axs
5) Request for Verify TKN on Netlinx Master to be more than just a file date and time stamp comparison. Is it possible to get something like the Axcess days where it did a binary comparison? (at least that?s what I think it did) Recompiling the same exact code that was just downloaded will tell us the TKNs don?t match which really shouldn?t be the case...should it?
I third or forth Dave?s original request for making bookmarks persistent in a workspace along with many of the other thoughtful suggestions posted in this thread.
Thanks.
Is anyone going to put these into action? Can someone at AMX let us know what they think of all this? Or are we just whistling to the wind????
**bump bump***
"Is this thing on???"
** bump bump ***
OMG...
We had a job a few years back where I wrote a perl script to build up the source code from a series of blocks based upon a spreadsheet that our sales force used. Also made heavy us of #DEFINE statements within the code. All that was missing was a commandline compiler, that I was told by an AMX Supplier that it 'Didn't Exist' but looking at that I can only assume it has always been there.... to quote cartman.. GOD DAMMIT....
Thanks for pointing that out There aren't any exe's in there that do Macros for you are there ^_^
Nice!
a cute aside...
I love how the window ends with "Press Enter To Exit"
it's so Windoze
No problem. I don't think there's much else that we could use that would enhance any 3rd party programs.
Joe - excellent suggestions. I think about how much I have grown accustom to Microsoft's Visual Studio, and then going back to NS2 . . . yikes. Now - I know AMX is not, and probably does not have the resources like MS does, but I think it's time for an overhaul of NS.
It's like ********'s SIMPL windows
i miss SO much stuff in NS it might even be nice to have them give us the source code, and let us make our own
I also think that by time VA is made a viable alternative to hand coding through NS2, support bi-directional serial communications and parsing it will likely be obsolete and Microsoft will have mastered a version of WMC that will be far superior for far less $$.
Obviously the suits and engineers are a lot smarter than I and I'm probably completely off track but that's my take on the VA project.
This is a custom field and you can't do custom on an assembly line. We should emphasize the "custom" as that's what make this product truely unique.
Highlight and copy the chan/function area in IREDIT, and a very clever little chunk of 'the new studio' could paste it into your code with an equals sign injected in between the name and the value.
Alright, if the equals is to hard, perhaps just Chan, Space, Function, CR.
Would make array assembly for IR devices so much quicker.
It wouldn't be difficult to add a function like you're talking about, and then paste it into NS. (Or better yet, drag it into NS like you're talking about.)
NS lacks a lot of "cool" features, which is why I had written some utilities to help out while programming. Of course, I never use those utilities - they were just "neat" ideas at the time.
Here's a screen shot of one of the versions I was working on.
Why can't the first step in the compiler be to look for include files, compile them, and then come back and compile the main code?
J
They only thing you can get in trouble is to forget to save the modified Include before you compile your main file. Without saving, the include is used unmodified.
Jeff
I don't save before I compile manually. I have the "Automatically Save Files before Compile" option checked in the NetLinx preferences, so I just hit F7, it auto saves the main code, and it compiles the saved main code.
The problem is, if I don't save the include file, it includes the previously saved include file, not the current one I have modified. I guess then, my request would be that include files be autosaved upon compile as well as the main code.
J
For the folks that want to generate NetLinx code from an IRL file, you can select the "Tools-Code Wizard..." menu option in NS2. Select the "I want to generate constants from an IRL file." option.
You are prompted for an IRL and a prefix for the constant variables. The constants are stuffed into the DEFINE_CONSTANTS section.
Quick way of knowing what codes are available in the IRL file and saves time typing in all the values.
Why do I feel that the last time anyone ever used the Code Wizard in NS2 was during the online training / tutorial? I personally forgot about it because 5 of the 6 options in the wizard are useless in my experience / does not fit my needs.
Thanks for reminding us about that - might be handy!!
Are you sure about this? In my experience, NS only saves the active file you have open before a compile . . . .
J
I think I know where the confusion is coming in. I normally just click on Build Active system (it's in my tool bar). This option does save all files. F7 and the compile option do not seem to save everything, as you have indicated.
Maybe you could use preferences to set a shortcut to build active system?
Jeff
What I want then, is a combination of "Compile" (which compiles the currently open file), and "Build Active System" (which builds the system you have set as "active" in the workspace.
I have 20+ systems in my workspace, and I don't always switch the one I'm working on to "Active". What I'd like to see is something like "Build Current System". Basically, this one would only show up if you have a Master file open (if I'm currently editing an include file, a module file, this would not be available), and it would do exactly what "Build Active System" does, except it would work on the open file and all of its includes and modules, not the active system in the workspace.
I realize that by this point in time, I"m being incredibly picky, and I've been working without this just fine, but in an ideal world, thats the functionality I would like.
J
What a good idea that function is. Wish I'd thought of it!
I hereby retract my request for the IR import function V2.00 from the record and request an RTFM button implimentation instead!
Thanks for the refresher David.
:-)
Source Safe Integration would be nice...
Agreed. Maybe this feature should be placed in the Tools menu next to the related "Find IRV/IRL..." so that it is more easily found.
No professional computer user with any kind of ego would open a Wizard; those are for n00bs.
I vote for integration of Subversion it is much better than source save. We use it for over two years now and it is great ! Besides there is a excelent integration into the Windows Explorer named TortoiseSVN.
But instead implementing a specific one it should be configurable or better made as a kind of plugin, so everyone could expand it !
Just think of a tools menu entry like "telnet %IP%" on key F10. Every time you press F10 a telnet connection is opened to the master with the IP settings from Active System. (I would do a "putty.exe %IP%" instead :-) )
usefull placholders will be:
%IP% IP of the Active System (<TransTCPIP>)
%NAME% Name of the Active System (<Identifier>)
%SERIAL% Serial connection data (<TransSerial>)
%USERNAME% (<UserName>)
%PASSWORD% (<Password>)
%PLATFORM% from the System/Plattform tag ("System"/"Plattform")
The tags in the brackets are the tags from the AXW file.
That would be great and a lot of help for doing jobs with multiple systems, even for those who work with many systems.
Should be a easy one for the expert group at AMX ;-)
I'd like to see the Device Notifications dialog actually work with a 0 system number. I.e. The system I'm currently connected to. I manage 30+ masters and occasionally need to look a various strings via notifications. In addition to changing the master comm setting (which is fair enough), I currently have to create a new notification which is bound to a specific system. It would be much more efficient to allow notifications for a system number of 0.
Roger McLean
Swinburne University
I see your point, but 0 is also used in other places as a wild card for "all" systems. No doubt they were thinking of that, and thought it would be a Bad Thing, and suppressed it.
Normaly if you have multiple system you also have a properly setup workspace with the system numbers set.
By the way. Studio 2.5 already do this, at least for "control a device" and "emulate a device". It takes the System number from the current active system.
So if you have the system numbers setup in your workspace all is fine.