AzeoTech

Administrators
  • Content Count

    5,671
  • Joined

  • Last visited

Everything posted by AzeoTech

  1. Sure. Use channel.clearAll() to remove all channels, then channel.Add() to add new ones. Channel.add() doesn't let you specify every parameter, but once you've created the channel with it, you can then address the channel by name to change other parameters. Combine that with reading the file using file.open, etc.
  2. The OPC driver won't do anything with a channel until you read or write that channel. So you can easily have script look at a startup flag and then only read the desired OPC channels. Since most OPC is async, you only have to read the channel once to get it into the async table, but you can do this after doing other processing.
  3. AzeoTech

    User Screen Components

    Correct, there is no linking. There are two ways to handle your challenge that I can think of: 1) push as much of your code into function calls in sequences so that you have a minimal amount of code in the actual symbol. The only thing that makes this difficult in the current release is that there is no way to get the name of the component. But that is an easy fix on our part, so we'll add that right now and make it available on the beta. Contact us directly via email for a link to the beta. Anyhow, the idea is that the component really has no script, other than a function call to script that is in a sequence, passing whatever details are needed. 2) put your script into a string variable and use execute() to run it. This is not as efficient because DAQFactory has to compile the string into code with every execute(), but it does work. You can, in fact, do this from a file, by using File. functions to load a text file with script, and then execute() to run it. But of course, that has some serious security issues unless you make it read-only on the client side.
  4. Alas, the desktop probably has a hub internally, so most any USB device could be interfering. After updating, I would contact LabJack support for some input as this is most likely on their side.
  5. Following that same suggestion, I would make sure the LabJack is alone on the USB hub. You might be getting interference from other USB devices, one of the many reasons I dislike USB connections.
  6. At present it only supports GET.
  7. No. This is an unusual feature of Javascript/jquery not typical to most programming languages. Usually the way you would handle this is to put whatever script you have that runs when you click inside a function (Sequence) and have the button call that function. Then you can also call that function from anywhere else.
  8. That is a bit odd. You aren't polling very fast at all. I would start by double checking that you are running the latest LabJack UD drivers and firmware. I'd also set the Timing of all 4 of my channels to the same. There is no advantage of reading them at different timings unless you really need that, in which case I would consider setting the Avg? column and average 1 second reads down to whatever rate you want.
  9. Yes, there was a bug that would cause this to happen. In actual fact, the serial port is deleted, which is why you can't click on Configure, but it still shows up in the list. This issue has been fixed for the next release. You can contact us directly for a beta, or just run with it, understanding that even though it shows in the list, it isn't really there.
  10. That is fine. You can assemble the name from a channel by simply concatenating values. For example: "c:\dataDir\myFile_" + myChannel[0] + ".csv"
  11. Screenshots are done with: page.capture() Uploading can be done through the FTP. commands, or possibly other solutions (shell commands?). Depends on what you are doing. Download data from the web is done with: http.get() Note that most of these functions require DAQFactory Pro.
  12. 1. You can use the file.makeDirectory() function to create a new folder. Note that in newer releases of DAQFactory, the c:\DAQFactory folder is marked as read only for non-admins. This is for security reasons 2+3) I'm not sure what you mean by recipe as DAQFactory doesn't have built in recipes per se. 4) you can't delete a single choice. You have to remove all choices, then add all the ones you want back in. 5) you can restrict the radio button by processing the input. I.e. don't have the radio button change the output directly, but rather have it change a variable or Test channel, then validate that value before sending it out. 6) correct. This is why printpdf() is not an official, documented feature. The logo must be in WMF format, or you can use the regular Windows print function and Acrobat Distiller print driver.
  13. DAQFactory doesn't have a built in recipe feature because it gets implemented is so many different ways, so I'm not sure about the first three points. That will depend on what you have implemented for a recipe. As for the 4th, that is correct. Unless your logo is in a WMF format (windows meta file), it won't print. This is largely why the PrintPDF() function is not considered a documented and released feature. You should be able to, however, print to Acrobat Distiller to get PDF documents that will include logos.
  14. AzeoTech

    Buttons Sticking

    I would try moving all the script into a sequence then using beginseq(mySequence) to start the sequence rather than have it run in the Action. The problem with code in an Action is that it runs in the messaging loop of DAQFactory, and it seems you are doing something to throw that off-kilter. Running it in its own sequence makes it so the messaging loop can continue without issue while the capture and subsequent code can run in the background.
  15. I am not quite clear what you wish to do...
  16. Its a known issue with some machines. It has to do with the license file and only started cropping up in force recently. Really we will likely remove this feature in new releases and eliminate the popup altogether.
  17. AzeoTech

    Accesing variable value from protcol

    Yes, you should, and then you should create a channel with this setVolt I/O type. Finally have the Set To action of your control change the channel you just created.
  18. Inside DAQFactory, go to File - Preferences and check the box that says "Disable 2nd instance check". That will get rid of that window.
  19. Just add gettime(): GetTime(Max(PO_wind_gust[0h,0h+86400])) Then use formatTime() or formatDateTime() to format that number into something you, as a non-computer, can read.
  20. AzeoTech

    Accesing variable value from protcol

    Did you create an actual protocol driver, or just write a sequence? It is often easier to just create a sequence unless you plan on reusing the code across many applications. If you did a protocol driver, probably the easiest thing to do is put that code into an output I/O type, then create a channel with that I/O type. Then you can use the SetToValue variable in your script to set the appropriate value. In the screen component you would set the Set To Channel to a channel you created with that I/O type. See section 15.2.2 in the user's guide. Feel free to post or email what you have so I can give a more detailed answer.
  21. AzeoTech

    Scheduling, Simultaneous sequences.

    You can assign them low priority. High priority is for things that need to happen exactly when you want them to happen. I'm guessing your schedule can be 1/2 a second late, so priority 1 is probably fine.
  22. AzeoTech

    Scheduling, Simultaneous sequences.

    All sequences started with beginseq() or by selecting Begin Sequence run simultaneously with other sequences and the rest of DAQFactory. The exception would be sequences called as a function: mySequence()
  23. 1. Well, the channel that has the wrong data isn't the one that is empty. It is some other channel before it. Are you sure ALL your channels have data? They all have to have the same amount of data too. 2. I would expect it to error out of the loop, but it kind of seems like it is just skipping the line that adds that value and not even putting a comma in. Do you see fewer columns than expected?
  24. Empty channels are going to throw your logic. I'm not sure that you'll get a "," even if the channel is empty. I'd use isempty() to check.
  25. Glad you got to the bottom of it, and thank you for sharing the result!