Jump to content

Rolf Kalbermatter

Members
  • Posts

    3,786
  • Joined

  • Last visited

  • Days Won

    245

Everything posted by Rolf Kalbermatter

  1. QUOTE(Gabi1 @ Oct 9 2007, 09:18 AM) Yes I do mean that and it's because of what you mention in your last sentence. A lot of work to create something which is hard to debug, maintain and use. I have some experience with this but with templates, since reentrancy was not possible for dynamic VIs back then. And it is a pain in the ###### whenever I have to go back and change something about it and then consequently test it too. Rolf Kalbermatter
  2. QUOTE(Smikey @ Oct 9 2007, 02:50 AM) I would say you are on the wrong board here. The SMX2064 not being a NI product, MAX can do little more than verify that the general PXI registers are there and some manufacturer identification is available. Other than that MAX does almost certainly not know how to access that board. Then the Visual Basic application: If it encounters a problem, you will have to take it up with the programmer of that application. Again NI and probably just about anybody else here can not even guess what the problem might be. Rolf Kalbermatter
  3. QUOTE(Gabi1 @ Oct 9 2007, 08:49 AM) Well aside from the obvious of having the VI simply in a BD and accessing that particular instance from there, no! Unlike non-reentrant VIs where the name of a VI is enough to reopen a VI reference to it, reentrant VIs maintain their data space attached to the VI instance (reference) and once you loose such a reference you loose the data space. But then using reentrant VIs through VI Server is usually more trouble than it is worth so I personally wouldn't really do it. Rolf Kalbermatter
  4. QUOTE(JFM @ Oct 8 2007, 07:54 AM) I'm not sure what version of Pharlap they purchased. But even if they got the source code for it, fiddling with the network socket code in an OS is a very tricky thing to do. Probably there would be a #define somewhere for the maximum allowable sockets and that is were it goes wrong. In many RT OSes the sockets are maintained in a static list and being static means it is preallocated at compile time and can never grow bigger than the max. Changing that into a dynamic list has possible performance drawbacks and makes the resource management in general more complex, so that is not something one wants to modify into an existing static implementation. Nice to hear that VxWorks seems not to have this limitation. Rolf Kalbermatter
  5. QUOTE(klessm1 @ Oct 8 2007, 11:46 AM) The best bet is always to use the newer version of a lib if you get such a conflict but it will not always work. The newer version may change interfaces (yes it's a bad thing to do, but it's very easy to if the developers don't watch very extremely carefully) and then crash the application which was compiled to the older lib. But as long as it seems to work, I would definitely try it. If you get to know what they use QTlib for, I would be really curious. I could try a disassembler but don't feel like doing it nor have I the time at the moment. Rolf Kalbermatter
  6. QUOTE(crelf @ Oct 8 2007, 06:48 AM) That is mostly from comments on the wine-devel mailing list at http://www.winehq.org/pipermail/wine-devel/. But searching through all of the mailing list archives won't be trivial. A lot of work on MSI was done by Mike Mc Cormack and Robert Shearman from Codeweavers and they had some comments on MSI in a few mailings. I couldn't find easily a specific wiki page for MSI on wiki.winehq.org so I'm not sure about a more concise collection on findings about MSI. Rolf Kalbermatter
  7. QUOTE(crelf @ Oct 7 2007, 03:01 PM) Hard to find that back! I was looking about 6 months ago for a tool to see how MSI is built up to fix some issues with a corrupted installation that refused to allow me to uninstall it nor upgrade it to a newer version. And on the MS site I came across an article about the tool Orca which is basically the original tool to look into and edit MSI files. In there one of the persons involved in the development of MSI quite at the start explained how it got started and the decision to use a relational database structure as the base of an MSI file and he was strongly suggesting that that use of a relational database was quite an overkill in terms of what needed to be solved but that at the time they started to realise it it was already a fact. I would be glad to point you to that article but have to admit that I have no idea anymore what search criteria got me there in the first place but it was on an MS or MSDN site somewhere. And on my current system most of the software that used to show up under the National Instruments Installer now also shows up in the main installed components section and refuses to uninstall from either location. Upgrading still seems to work for that software but I also have components visible that are really subcomponents of other (non NI) software and don't give any option to uninstall, repair or whatever. So I'm sure my MSI registry database is currently quite messed up but I hesitate to do a full reinstall of this machine as that takes me at least 3 days to do, with all the NI software and other tools that I frequently use. The MS registry clean utilities that should help don't do anything for these entries either! PS: I do follow Wine development too and they did a lot of work on MSI support in the last two years and the overal consent there seems to be that MSI might be to most overengineered part of Windows and contains quite some rather questionable design decisions and implementations. Rolf Kalbermatter
  8. QUOTE(ashishuttarwar @ Oct 3 2007, 03:09 PM) I would really recommned doing that. It's not a good idea to rely on a particular MAX default setting. You might end up just copying the program to a different computer (maybe your development machine died) and suddenly it doesn't work at all. Setting the serial port parameters explicitedly in your program before using it will prevent this problem. And believe me when you are in a hurry it is usually not the first thing to do to search the problem exactly there. So 5 minutes of extra programming time can save you many minutes or even hours of problem solving later on. Rolf Kalbermatter
  9. QUOTE(Michael_Aivaliotis @ May 16 2007, 07:57 PM) I think NI shoot in their own foot when they decided to go with MSI as their installer solution. Not only is MSI even according to some of the people involved in its development quite an overkill in many aspects to the problem of software installation but it is such a huge and infelxible beast that you simply have two choices: Dump it and go for something else or live with its difficulties and inefficiencies. And as longer as you do the second as harder its gets to do the first. Rolf Kalbermatter
  10. QUOTE(Michael_Aivaliotis @ Oct 3 2007, 01:36 PM) I remember several comments of him that would sound to me like belonging in the same category. Rolf Kalbermatter
  11. QUOTE(klessm1 @ Oct 5 2007, 11:43 AM) LabVIEW 8.5 does use the QTLib for something in its user interface or whatever but I'm not sure for what. Look in your LabVIEW 8.5 directory to see those DLLs. The problem you are having is that your Surround SCC software uses that library too but not the same version as LabVIEW 8.5 uses. That gets you into the so called DLL hell. LabVIEW already has loaded it's own QTLib DLLs when the Surround SCC client gets loaded. This client also wants to load his QTLib for some functionality but since Windows sees that that DLL is already loaded into the current process it will simply attempt to have this client library link to LabVIEWs version of the DLL. And that goes wrong since those libraries are not binary compatible, something Unix shared library developers never usually worry to much about since they are used to versioning of the shared library name to resolve such issues. I'm afraid you run into a roadblock with Surround and LabVIEW 8.5. As I have no idea for what LabVIEW 8.5 brings its QTLib stuff with it I can also not help you with any ideas if and what would have to be disabled in LabVIEW in order to not have it load QTLib, if anything can be disabled. For its UI Widget stuff I can't really imagine that they replaced the entire existing windows manager code to use QTLib instead of continuing to use their own already implemented window management code, so what QTLib really is good for in LabVIEW 8.5 is really a secret to me. Rolf Kalbermatter
  12. QUOTE(Aristos Queue @ Oct 6 2007, 06:32 PM) I would try to make a control required and then turn it into an indicator. But not sure if that could produce something. It certainly didn't in earlier versions. Rolf Kalbermatter
  13. QUOTE(Yannick @ Oct 4 2007, 03:18 AM) Duplicate post, see http://forums.ni.com/ni/board/message?board.id=170&message.id=276066#M276066' target="_blank">here. The explanation in that post for string pointers inside a structure is wrong. It won't work like that without extra measures. Depending on the DLL it may crash immediately, corrupt some memory silently and crash later on, but something will go wrong sooner or later. Rolf Kalbermatter
  14. QUOTE(BrokenArrow @ Oct 2 2007, 03:55 PM) Those box characters did even in DOS only show up if one didn't use some other codepage for displaying. Now caused codepages in DOS such a pain that they were not as often used so you could usually get away with this, but Windows 3.1 extended the codepage idea greatly and made serious use of it before they implemented 16bit Unicode support in Windows NT and ported it back for Windows 95. Only with Unicode was it possible to have support for displaying different languages at the same time without constantly having to switch codepages. Another means for that was MBCS (multibyte character encoding)which is what LabVIEW uses itself to support eastern languages in its localized versions but that is quite a painful standard as a character can have a varying number of bytes, with certain codes reserved to indicate the switch to a different "codepage". While the display of the lower half of ASCII characters is well defined, what is displayed for the higher half depends on the viewer and its interpretation. If displayed in a Windows (and LabVIEW) control you can also get away with setting them to certain fonts as every font has an implicit codepage for its first 256 characters. Rolf Kalbermatter
  15. QUOTE(robijn @ Oct 3 2007, 03:49 AM) What I meant is that the WinAPI to deal with ini files has no clean means of dealing with comments. Adding them is impossible through the API and ignoring them is very limited. Only lines starting with a semicolon will be ignored at all by recent Windows versions. But for a line myToken=YES; This is a comment querying myToken will return "YES; This is a comment" Definitely not what the OP wanted! The same funcionality and more than what Windows has can be already done with the Configuration functions. The only drawback with those functions is that they disturb the layout of ini files sometimes (but not the functionality). And all I can say to that is that INI files are not really meant to be read by humans and definitely not by non-programmers. That is one reason why MS moved it into the registry where the presentation of data is left to an application (regedit) instead of having it embedded in the data. Rolf Kalbermatter
  16. QUOTE(siva @ Oct 3 2007, 03:16 AM) OK I see you are using the InternetToolkit Web Server. The App Properties mentioned are only present for the built in Web Server in newer LabVIEW systems. Can't do everything the Internet Toolkit server can (such as CGI) but is quite capable for more static things. Rolf Kalbermatter
  17. QUOTE(EdDeWitt @ Oct 1 2007, 03:09 PM) Not just LabVIEW for everyone!!! There isn't any standard at all and the only defacto standard is what Windows invented for ini files and as far as Windows is concerned there are no comments in an ini file. The fact that there are lines that contain some data that is never queried with a GetPrivateProfileString is all that makes them comments. Similarly SetPrivateProfileString does not really give you any functionality to add comments to an ini file. As per Windows a section is enclosed between brackets and what comes behind is not read and a ini token has a name that starts a line and a value that follows the equal sign. The value can be a quoted string if it must contain line breaks but otherwise it goes to the end of the line. One could of course devise various variants on this and restrict above limit to request double quoted strings for anything that contains line breaks AND spaces and stop reading a token value as soon as there is a non quoted space but that is not how Windows invented it. The Configuration functions already do some non-Windows stuff by escaping special characters and normalizing paths in order to be platform independant. If you want to change above behaviour it is fairly easy to modify the Configuration file VI's to do so as they are clearly structured and build up. They do the double quoting already for strings containing spaces but at least in 8.2.1 is a bug in that respect where the quoting is skipped if the section did not yet exist when adding a new key. Extending the configuration VIs to allow adding comments programmatically will however by a much more involved task. It's one thing to just ignore some data and a completely different one to add infrastructure to support it. Rolf Kalbermatter
  18. QUOTE(Aristos Queue @ Sep 30 2007, 10:36 AM) Hmm, I have to say that the FP grid does not work like this for me. I tend to drop controls on a front panel and then nudge them with the cursors to where I want them (or use alignment and distribution) since the grid simply does not work well for me independent of what settings I have it. I recently resorted to disable the grid snapping for most VIs I'm working on after I found this by accident. For FPs that are meant to be visible to the end user the grid is to restrictive to get the look I want, since most of my FPs except the main screens usually really are application dialogs and use the system dialog style, and for other FPs I just put them so they are logically aligned in a similar manner than the connector pane is layed out. As far as I'm concerned a global "don't snap to the grid" option would be the best I could ask for. And yes my FPs usually adapt the background color to the system dialog background color too, so there goes your other argument :-) Rolf Kalbermatter
  19. QUOTE(ryanlai @ Oct 1 2007, 03:01 AM) Traditionally the parallel port was an output only digital port. In order to make it get bidirectional various people came up with various solutions. 1) use one of the strobe lines as input and clock in data over that. Makes it really just a slow 1bit serial port!!!!! 2) Some hardware manufacturers made the hardware so that 4 of the 8 bits could be set as input. Better than 1 but not possible with every parallel port (the ones that only can drive the 8 digital data lines). 3) Some other manufacturers decided to go for the full bidirectional functionality of the entire port. 2) and 3) require extra register bits to setup the port in the desired manner and are of course exclusive of each other at any given time. Because of this variety and the many bugs in the actual hardware implementations VISA does not try to do anything on its own with the parallel port. Windows can be configured to operate the parallel port in one of these three modes provided the hardware chip supports that mode. But even when set that way none of above solutions will work with a 1 to 1 cable to transfer data between computers. You need to wire the handshake lines accordingly to the mode you have set the computers (and both are better set the same) to make this work at all. You can get some more detailed explanation for instance here http://www.thaiio.com/parallelportinfo.html So if VISA Read and Write will do the right thing on a parallel port depends on the actual wiring, the mode the parallel port is set in Windows and if the hardware supports that properly, which nowadays integrated chip-sets usually should. Who after this discurs still thinks connecting computers through a parallel port is a good idea, does this for a hobby and knows what side of a solder iron gets hot or can't be helped IMHO. Getting a serial port wired up correctly is in comparison almost trivial. Rolf Kalbermatter
  20. QUOTE(Eugen Graf @ Oct 1 2007, 09:35 AM) For anyone looking for this information: Basically lvserial is meant to work similar to the VISA functions but without using VISA and instead going directly to the Windows COMM API. And I think Martin Henz did an amazing job and someone ELSE could put some time into it to help with documentation if they feel it is needed. Rolf Kalbermatter
  21. QUOTE(Michael_Aivaliotis @ Oct 1 2007, 10:31 AM) Personally I have resolved to copy my library VIs into the project directory itself whenever used in a project to avoid the mentioned troubles of changed behaviour between project developments. And one other thing I usually do for bigger projects is a unit test framework. It will not solve the problem of automatically detecting any dependencies in any project you ever programmed, but for projects where you have a well defined unit test framework in place you can easily run this unit test in every project you are interested in regularly to make sure there have been no regressions. This also helps greatly during development of a project itself where you can tend to make subtle changes to a seemingly unimportant function and suddenly other things fail in an amazing way. Rolf Kalbermatter
  22. QUOTE(Ben @ Oct 1 2007, 05:42 PM) There are also Application Properties for this but I'm not sure if they are visible in a standard LabVIEW installation. Rolf Kalbermatter
  23. QUOTE(brianafischer @ Sep 28 2007, 01:01 PM) You can usually do that for digital outputs but not for analog outputs. It would anyhow only read the value written in the digital registers of the DA converter and not the actual value on the analog output. To read the analog value there needs to be an AD converter too and that would make the DA converters extra expensive. However most NI-DAQ boards do have a lot more analog inputs so wiring the analog output externally to an analog input will allow you to do what you want. On some boards you can even use internal signal routing lines but programming the according switches is a lot more complicated than a simple external wire. Rolf Kalbermatter
  24. QUOTE(tnt @ Sep 28 2007, 04:41 AM) Making sure VISA is installed will of course help tremenduously! MAX is only the UI configuration tool for all NI driver software. As such it does NOT access any hardware at all directly but looks for installed NI software drivers such as NI-VISA, NI-DAQ, NI-DAQmx etc and queries them for known resources. I didn't consider that you could somehow end up with MAX on a computer without having installed VISA. Rolf Kalbermatter
  25. QUOTE(Shoyurx @ Sep 27 2007, 12:37 PM) The serial port in your computer is entirely independant of your external device. If you can't see it in MAX it is either not there, not properly installed in your OS or disabled. MAX automatically shows the serial devices it can detect from the OS. It does not allow you create arbitrary devices for that class since that makes no sense. A port is either there and accessible or it isn't. Have you tried to do a Refresh of the MAX configuration (hitting F5 after starting it up)? That will rescan the system for built in devices and show any it can detect. If that does not give you a serial port then you have to start debugging there and see why MAX can't seem to find it. After you got your port you can start to deal with your device but until then it is completely irrevelant to this. Rolf Kalbermatter
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.