AzeoTech

Administrators
  • Posts

    6,436
  • Joined

Posts posted by AzeoTech

  1. We actually don't like to do releases right before the holidays, so the next release will be in the beginning of 2019.  New features include:

     Fixed issues with serial devices appearing after deletion
     Added lock mouse movement so you can mark individual components to be ignored by mouse click, like background panels
     Added getPixel / getPixels to Canvas so you can get pixel values off the screen, primarily for examining webcam data
     png/gif support: LoadImage() function and imagePath variable, as well as load button on symbol component.  Transparency too.  Using PNG's instead of regular images will reduce the .ctl file significantly.
     Resize constraint (with shift) for images to keep aspect the same
     Page scaling.  Helps with printing too
     Page.screenwidth / screenheight variables so you can automatically scale to the screen size
     Display value and text no longer paint white background if align != 0.  Also, to do transparent, erase all colors.
     Visible parameter for graph traces so you can easily add a check box to enable and disable traces
     ComponentName variable for components, so you can have a component call a sequence function and pass its name.
     Keypad Plus/Minus cycles through graph marker traces.  
     
  2. SMS can usually be done by simply sending an email.  Most SMS providers offer an email address that if you send an email to it, it will forward it to text.  That is by far the easiest way to do it.  

  3. 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.

  4. Certainly.  A loss of power can cause all sorts of problems even outside DAQFactory.  I once lost power during Windows boot and had to reinstall the OS (this was a long time ago....)   These problems don't crop up often because systems typically are only writing to disk a very small percentage of operating time, but they do happen.   That is why you should always have a UPS in place with a connection to the PC so that Windows can gently shut things down if there is a sustained power loss.  A laptop achieves the same thing, but of course they tend not to be rugged.

  5. Your best bet would be to use a service such as DAQConnect.com to do this.  With that product you'd have to create separate HMI screens for the web, but they will work more efficiently and across all devices.

    Alternatively, you could program DAQFactory to take screenshots of pages, then upload them to a webserver.  Sending commands back to DAQFactory would be slightly harder, but is best implemented using a pull mechanism, meaning DAQFactory queries the server at some interval to see if there are commands to perform.  You do not want to open up the system running DAQFactory to the Internet as that is just asking for security problems.  Not because DAQFactory is more insecure than anything else, but because opening up the system to the Internet exposes the system to attacks on all levels, the most likely being on the OS and probably DoS type attacks (even if they are unintentional). 

  6. DAQFactory uses a rolling buffer file for persist files.  That means that when a data point is added to the persist file, only three 8 byte chunks are actually written to disk.  16 bytes is the new data, and 8 bytes is used as a pointer to the most recent data.  While that is fine for the 16 bytes as that is always a new place on the disk, the 8 byte pointer is going to be the same place on the disk always.  Newer SSD drives should wear level and this should not cause a problem, however, it does mean that if this pointer is corrupted then things go to hell.  So:

    1) probably some disk failure on your system.  The first thing I would do if it happens again is see if the files are all still the same size as reported by the OS.

    2) not really unless you want to try and read each of the headers and validate them.  You could write a script to do this for sure,  but is probably not worth it unless it happens again.

    3) probably.  If the problem is the header, you could probably rewrite it with correct data.  For sure, you could write script that loads from your log files and then recreates the persist data by adding the log data back into the channel.  Just remember, persist files aren't meant to be a replacement for logs.  Important data should always be logged.  Persist files are just for rapid, easy access to historical data.  You could also not use persist and instead access historical data from logs.  The easiest way to do this would be to log to a MySQL database and perform queries on the data as needed.  It won't perform quite as fast, but should be more than adequate if you use db.queryToClass()

     

  7. Unfortunately you will almost certainly have to use the Acrobat Distiller and printPage.  If you are having problems with printing the page, you might need the latest build.  Please email us directly and we can provide you with a beta.  It does printing a lot better than older releases.

     

  8. That I don't know.  That would be on the Excel side.  You may be able to use a command line flag to tell Excel to do something on load, but I am unsure as I don't really use Excel.  Check it's manual.  ShellExecute() in DAQFactory is the same as typing something in at the Command Prompt.

  9. No, unfortunately as mentioned, the PDF generator doesn't dump any font information into the PDF.  You are the second person recently to ask about foreign characters and fonts in PDFs.  You should post a request in the feature request part of the forum and we'll see what we can do.  In the meantime you have several choices:

    1) use the Acrobat Distiller (print driver) and Print the page instead of using the printPDF() function.

    2) try doubling up the component and shifting it by one pixel. This will give the illusion of bold, but also might make it unreadable.  Its worth a try though.

  10. Something with your shellExecute().  DAQFactory was never going to create the probe2 file.  That is handled by the > in your command line.   You should probably ? the result of the string concatenation of the shellExecute() then try it from an actual command line.  Yes, you can do cmd /C from the command line.  It will just open another command shell. My guess is that you need quotes for everything after the /c, so the result is something like:

    cmd /C "ping 192.168.1.1 > d:\razno\probe2"

    Note that you'll need to use single quotes then in DAQFactory so you can put double quotes inside:

    '/C "ping ' + etc..

  11. Sure.  There are lots of ways of doing this.  I don't see why you need a separate file for each location since they'll be ping sequentially though, so:

    global pingIPs = {"192.168.1.1", "192.168.1.2", "192.168.1.34"}
    global pingState = fill(0, numrows(pingIPs))
    while(1)
       try
          for (private i = 0, i < numrows(pingIPs), i++)
             pingState[i] = checkPing(pingIps[i], "d:\razno\probe2")
             delay(0.1)
         endfor
       catch()
          ? strLastError
          delay(0.1)
       endcatch
    endwhile

    Run that in the background, then have your screen control use the pingState global to display the status.

    Note also that your screenshot is invalid.  The first parameter is a string.  192.168.1.1 on it's own doesn't exist in DAQFactory and will be translated to simply 192 (or maybe it's 1, I don't know and there's no reason to know since it's just wrong).  So, in your example, it will ping the address 192.  You need to put the IP address in quotes.

  12. You can't put something in the Expression field of any screen control that isn't really fast.  Your code will take a minimum of 5 seconds to run given the delay(5) and so will flat out hang the user interface.  You will need to put the checkPing() function calls in a Sequence that runs in the background and updates some global variable that you can then reference from your screen control.