AzeoTech

Administrators
  • Content Count

    5,623
  • Joined

  • Last visited

Everything posted by AzeoTech

  1. I personally use daqconnect.addValue() for everything. It gives me more control over exactly what data gets sent. And in your case avoids a dummy channel. I also use daqconnect.init() instead of using the menu, as it is more obvious what the data source is set to. It also allows for programmatic change of the data source.
  2. AzeoTech

    Markers text location and font

    Your best bet is to create a separate page for each graph, presumably duplicating the main page with 4 graphs. Then use page.printPDF() to print the appropriate page with the appropriate graph. Note that under 17.1 and earlier you have to view these 4 pages at least once before trying to print them. You can do this in a startup sequence. The viewing can be quite quick, 0.1 seconds. Releases after 17.1 will not have this requirement.
  3. There are shortcut keys you can assign in the Page properties, but usually people will create screen elements, such as a button that changes the page. To avoid creating the same menu over and over again, you can use overlaid pages. To see this in action check out the AshlandWater.ctl file in the samples folder.
  4. AzeoTech

    Unknown Error In Draw

    Olis, which release of DAQFactory are you using, and can you post your .ctl document and instructions on how to reproduce the failure?
  5. AzeoTech

    "p-Modbustcp 0010: Timeout" Error

    That is still pretty odd. Does that number actually update? Try creating a variable value control with this Expression: CH1.time[0] and see if it changes as well.
  6. Don't use the workspace to switch pages. Create buttons that change the pages and then it is easy to add script to trigger a sequence. The workspace is really designed for development, not for running your application.
  7. AzeoTech

    Multiple serial ports open

    Something is off then. My guess is the assignments aren't correct. Why don't you post or email us your .ctl doc so I can check. Many customers run multiple com ports so the program is certainly capable of it.
  8. AzeoTech

    Markers text location and font

    1) Removing Markers on graph via code: You can't do it. The idea of the markers it that they are user adjustable. If you want to create a scriptable marker, use the line or axis annotations instead. 2) Enlarging font of markers description which is displayed at the bottom of the graph and also changing its location. You can create your own display and make it look however you want by referencing the MarkerA_X, MarkerA_Y variables of the graph. 3) Changing font size for values inside of dropdown Combo List. Not currently possible. 4) While using Date-time picker, option to make time as either start or end of the day selected. You can simply do the math on the result. Start of day is: floor(value / 86400) * 86400. End of day is: floor(value / 86400) * 86400 + 86400. 5) Thaw all axis, instead of x and yfrozen for graph via code. Not sure what you mean here. In code, just set XAxisFrozen and YAxisFrozen variables to 0. Having another variable to do both is redundant. 6) Also, I tried printing graph and then saving it at a specific location, but when I click browse to select a path, the Daqfactory file crashes. This is a known issue in newer versions of Windows. Put the graph on a page to itself and use the regular print instead of the right click print.
  9. AzeoTech

    Multiple serial ports open

    Yes you can definitely do this. What problem are you seeing when you try this? Note that if you want to create two devices that use the same serial port you should only create one port and assign it to both devices.
  10. AzeoTech

    "p-Modbustcp 0010: Timeout" Error

    It is hard to say. It is probably just one channel that is causing it. Either you are querying an invalid tag, or you have other settings wrong on one of your channels, such as D# set to 0 instead of the proper Modbus ID. I would go through and set the Timing of all your channels to 0, then reset them one by one until the message starts appearing. Then you'll know which channel is causing the troubles.
  11. OK, but first I have to say: DAQFactory can't collect data when it isn't running, and Windows won't buffer the data on the serial port, so there is no way for DAQFactory to acquire data on the serial port before it starts, or if it is closed and reopened. This is a Windows limitation. As to the question at hand, there are a number of posts on this forum to read data that constantly streams. The general format is something like: purge() while(1) readUntil() parsedata endwhile where the while loop also generally contains a try/catch around the readuntil/parsedata portion, with a catch() that adds a small delay. You don't need a delay otherwise, and don't want one as it can cause a backlog. The readuntil() function will generate a delay while waiting for data. As to the parsing, use the parse() function to parse each line by the comma. Then it comes down to data manipulation. So, do the high / low sides need to be combined, or do you want them in different channels? If different channels, its pretty easy: either name your channels based on a convention based on the addressing, or use the channel.addValue() function to map the addressing to D# and Channel #'s.
  12. Send the file to support at azeotech There must be something in your file that is referencing those drivers.
  13. The Trilogi error is a little unusual. I do not believe it is included in the installer anymore. It must be referenced in your document somewhere. You can send the doc to us and we can quickly check. Initcomm() just tries to get access to the serial port for communications. It does not actually send anything over the line. It's kind of like picking up a phone and listening for a dial tone. It does just that, but doesn't actually make a call, or talk with anyone. If the serial port doesn't exist, or is being used by another application it will throw an error.
  14. Section 12.7 of the user's guide covers this. Take a look and post any questions that might come up. Note that DAQFactory is subject to whatever firewall settings you have in Windows, so if you can't get it to connect, it is probably because your Windows firewall settings aren't allowing the ports (2345 - 2348 if I remember correctly)
  15. If you really want to do error handling on the comms you should probably switch from using Channels and Timing to using a little script. You can still use Channels to store your data, but you would use a little script to collect the data. Something like: while(1) try private myData = device.myDevice.ReadHoldingU16(1,0,1) myChannel.addValue(myData) catch() ? strLastError // do something else if it fails endcatch delay(1) endwhile Channels and Timing does its own error handling. It prints the error to the command/alert and tries again next time. There is nothing wrong with those error messages, but if you want more, you have to revert to script. I should add that if you have multiple devices, and one is timing out, it will slow down acquisition for the other devices. For this, I suggest using the Offset parameter to stagger the reads across multiple threads. Use a different Offset value for each device, though if you have multiple devices on a single 485 chain, you should put all of them on the same offset.
  16. There's nothing glaringly wrong in your document, though you should watch your indentation. Though that won't affect the way DAQFactory, it does affect how readable your code is. Also, your giant boolean expressions can be written much simpler. You can use bit math to quickly tell if 4 bits are in a certain configuration, just & the value with 15 and compare. So, if you want all 4 bits off, just do: (S1 & 0x0f) == 0 For any bits 0-2 on and bit 3 off, do: ((S1 & 0x0f) < 8) && ((S1 & 0x0f) > 0) I also would do a for loop and use evaluate() to check all 67 items if I stuck with S1-S67. But if you had S1-S67 in array called S with 67 elements [0] -> [66], it gets even simpler and you can pretty much do it in a single line: All of the 4 LSB's off for the entire S array: max(S & 0x0f) == 0 Any bits 0-2 on and bit 3 off: min(((S & 0x0f) < 8) && ((S & 0x0f) > 0)) == 1
  17. AzeoTech

    RS485 hyperterminal connection

    Why are you doing readUntil(35)? ASCII 35 is the # mark and I don't see a hash mark in your input stream. You should be doing ReadUntil(10) which is the last character in your input string, a line feed character. You are getting Timeouts because DAQFactory is waiting for the # which never comes.
  18. AzeoTech

    RS485 hyperterminal connection

    There are a number of posts on this forum on how to do this, and it depends a bit on what the code is and what the response is. Here's one for example: If you can provide more detail about what you send and what you get in response I can better help.
  19. AzeoTech

    Ethernet TX but no RX

    You might just need to reinitialize the ethernet port. The easiest way is to simply open the configuration window where you set the IP, then click OK. Also, do you have DAQFactory setup as the client or an Ethernet server? Do you by chance have a DLL with that device that you could use instead of direct Ethernet?
  20. Sorry, did you send me the ctl doc? Its been 6 months so could you send it again?
  21. AzeoTech

    Graphing a virtual channel on X and Y axis

    Try auto-scaling. Also make sure your Bottom axis is set to Lin, not Date/Time. If those don't fix it, do a Save with History when you have some data, and post or email us the document at support@ so I can see what you have.
  22. That depends a little. What data rate are you hoping to achieve? How many channels? Are you connecting over USB or Ethernet? What sort of math are you going to do?
  23. AzeoTech

    Configuration file at startup

    You had #2 done in the document you posted, so all I changed was #1.