All Activity

This stream auto-updates     

  1. Yesterday
  2. AzeoTech

    Filling a table component with an exported file

    I'm not sure. You probably have the timestamp wrong. Just do a test of sorttime() in the command alert: global string a = {"A","B","C"} a = insertTime(a, systime(), 1) // this makes it so time gets bigger as we move through the array Now, if you do: ? a you get {"A", "B", "C} and if you then displayed that in a table, "A" would be the top row. But if you do: ? sorttime(a) you get {"C", "B", "A"} which is in order from biggest time to smallest. If you then displayed that in a table, "C" would be the top row.
  3. Last week
  4. Stephen

    Filling a table component with an exported file

    OK, I tried putting the sortTime() right after the read... complains of 'no time parm' or something. Then I put it right after the 'messages.time = '... it did not complain, but the past values are still listed in ascending order, top-down. The picture looks exactly as above. I guess I need a reverse sortTime().
  5. Stephen

    Filling a table component with an exported file

    Thanks! Very Perl-like... I'll try it and let you know.
  6. AzeoTech

    Filling a table component with an exported file

    There are a couple ways. But if you are using ReadDelim() the first way (inserting in reverse) won't work. With ReadDelim, what you want to do is assign the timestamp to the actual content variable, then use sortTime(). You already did the first part, so just need to do the second part: messages = sortTime(messages)
  7. Buttons never have focus, so no.
  8. Thanks for the reply, I only now managed to get around to implementing this, so sorry for the delay. I found the sample code in the DAQFactory folder and I guess that code snippet you provided has to be added to a sequence called "OnKeyDown" for it to work. I tried to do the following (which tabs between multiple edit boxes): switch case(component.edit_box1.GetFocus()) component.edit_box2.SetFocus() case(component.edit_box2.GetFocus()) component.submit_button.SetFocus() endcase But, it doesn't seem to be able to put buttons into focus, is this correct? Or is my code snippet wrong? Thanks!
  9. Stephen

    Filling a table component with an exported file

    Here's a picture.
  10. I'm supporting an application that writes system messages to a file using an export. The messages are also added to a table component that reflects a v.channel that contains all the entries. When the application is started the export file is read and stuffed into the table. The problem is that the startup stuff is entered backwards... time goes backwards for all past entries. New system messages ("Restart' etc) appear in proper chronological order, with the most recent at the top. Here's some code: <> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ Sequence.loadMessages, Priority: 5 - Acquisition // pass name of export set used to write, and the name of the destination v channel (with v.). For example: // loadMessages("message_export","v.SYSTEM_MESSAGES") function loadMessages(string exportName, string destination) try private handle = evaluate("file.Open(export." + exportName + ".strFileName,1,0,0,1)") file.Read(handle) // read header private theTime = file.ReadDelim(handle, 0, ",", chr(10), -1) file.SeekToBegin(handle) file.Read(handle) // read header private string messages = file.ReadDelim(handle,1,",",chr(10),-1,1) messages.time = (theTime - 365*70 - 19) * 86400 execute(destination + ' = "START OF MESSAGES "') execute(destination + ".AddValue(messages)") file.Close(handle) catch() ? strLastError endcatch function add_service_Message(string message) v.service_messages.addvalue(formatdateTime("%c", systime()) + ": " + message) delay(.01) beginexport(service_export) endfunction </> Is there a way to invert the row order of the array 'messages'? Is there a way to read the file from the bottom? Not seeing an easy way out here. __ Steve .
  11. kanber

    About Execute function

    thank you for your comment. After blank it worked. thank you
  12. Not with that component. You would have to stack a bunch of regular linear gauge components together, or better yet, a bunch of symbol components that change size based on your variables.
  13. AzeoTech

    About Execute function

    First, don't use var. for your global variables. That is left over syntax from like 15 years ago. Instead, declare your globals and just use the variable name alone. Second, it looks like a parser bug. I'm amazed no one ever ran into it before. Just add a space after your equal sign: var.strdeneme = var.strx1+"= "+(var.x22)
  14. Hi, when I tired ; var.strx1 = "FullScaleMin_AI4" var.x22 = 5 var.strdeneme = var.strx1+"="+(var.x22) Execute(var.strdeneme) it is working. But when I tried minues value; var.strx1 = "FullScaleMin_AI4" var.x22 = -5 var.strdeneme = var.strx1+"="+(var.x22) Execute(var.strdeneme) it is giving error "C1066 Invalid operator". But I can set the channel like FullScaleMin_AI4=-5. where is the problem I can not find
  15. Earlier
  16. AzeoTech

    shellExecute run to osk.exe

    You may have to either run a batch file, or run cmd.exe with osk as the parameter, and /C or /K. Open cmd then type "help cmd" to see the various flags for cmd.
  17. Hi, I am trying to run windows keyboard exe with shellExecute. But it is not opening. I tried different way to run. system.ShellExecute("C:\WINDOWS\system32\osk.exe","open","","","normal") system.ShellExecute("osk.exe","open","","","normal")
  18. No, other than manually changing it. I usually use objects in these cases, where the object contains the variables. The objects are the same class, just instantiated twice and stored in variables, say "ABC" and "KLM". Then I'd have a third variable called, say "CurrOb". I'd have all the screen elements reference CurrOb, so CurrOb.V1, CurrOb.v2, etc. Then I can simply assign whichever I want to currOb, so currOb = ABC or currOb = KLM to switch between the two. That would eliminate any cutting and pasting.
  19. Hi, I have one page with components which I write set channel, variables display. All variables looks like ABC01,02,03 I want to copy and paste these page to another and select all component and replace ABC to KLM. Is there any way to make that?
  20. AzeoTech

    Licensing

    The keys are manufactured by Marx. You can get their latest driver here: https://www.marx.com/en/support/downloads. Click on Drivers and Diagnostic tools and select CBUSetup. That is the Marx driver for the keys we use.
  21. SteveMyres

    CFR 21 Part 11

    Has anyone used DAQ Factory to archive data logs that comply with CFR 21 Part 11? (FDA Electronic Data Records standards) How about compliance for the entire software system?
  22. farky

    Licensing

    I understand that now. However on my main laptop if I don't have the usb key inserted DAQFactory comes up with "You are running a trial version of Daqfactory Pro" with Exit, Online Unlock and Manual Unlock buttons as to be expected - means there is not a license key entered on this computer, conversely if I have the USB Key installed it runs fine as expected. Trying the same on the other laptop where I installed DAQFactory yesterday without the USB key inserted or with it inserted I get the DAQFactory Trial 24 days left and Continue, Online Unlock, and Manual Unlock buttons, hence me thinking I had to put the 15 Letter Key in to unlock it. So it may be a driver problem for the USB Key. When inserting it I get a driver install popup saying it is installing a driver for Cryptokey. Now looking at that in Device Manager it has a yellow warning triangle when the USB Key is inserted and on the Laptop that works I have a driver that is ok and it's called CBUSB 2.0 from MARX CryptoTech LP so this must be the problem but I didn't have to do anything special on the first laptop to get that driver - mind you I probably had DAQFactory installed on that for 4 or 5 years. This must be the problem. Where would I find that correct driver? Sorry about all this, I feel I've wasted your time. I've found and run CBsetup from the DAQFactory folder and it all now works as expected on the second laptop. Great - I'll get the App finished then buy a new PC for running it and at the same time purchase a runtime license for it.
  23. AzeoTech

    Licensing

    OK, so you shouldn't use the 15 letter key for Pro anymore since you have the license on the hardware key. If you have used the key on a system, then you should (without the hardware key inserted) go to Tools - Remove Development license. That way, your one Pro license is just on the hardware key, which you can move to any computer.
  24. farky

    Licensing

    I see the problem! The USB key has the Pro License on it and I have the 15 letter License key for Pro which is installed on one laptop. It was that same 15 letter key I tried to use again on the second laptop - hence 2 development machines which is what I'm trying to achieve. My thought was that would be ok as only one USB key means only one machine can be running DAQFactory.
  25. AzeoTech

    Licensing

    Sorry, I hate the fact that we call the 15 letter "key" a key, and also the hardware key a "key". It gets confusing real quick. You have a hardware key, right? What license is on the hardware key?
  26. farky

    Licensing

    Sorry to be a pain, more below:- "As for your second question, you do not need a Runtime license while you are using the Pro key. The Pro license can be run in Runtime mode so that you can see what your application would look like on a runtime system. So, I would just do that: develop on your laptop using just the Pro key, then when you are ready get a runtime license for the new computer." that was what I was trying to do, using my license key for Pro and registering on line or manually on that second laptop, but it stops me as I have the Pro license key on the first laptop, but I thought that would be ok as I can obviously only run DAQfactory on the laptop that has the USB key inserted? Good tip about the runtime license when I install that.
  27. AzeoTech

    ModbusTCP error. Two software devices

    Depends on what the slave is doing. If you are doing everything through channels, you can enable broadcasting on the master, then create a remote Connection on the slave, setting the Default Connection to this new Connection. That should make it pretty easy to do. Note that you would need Pro to utilize inter-DAQFactory networking.
  1. Load more activity