ActiveX Module Documentation

On the Downloads page, I see a link to download the ActiveX module. Looking through the Ignition User Manual, however, I see no reference to the ActiveX module. Could someone point me towards some form of documentation on the ActiveX module? I’m curious as to what it does …

The ActiveX plugin had its own help file outside of the FactoryPMI help pages. It looks like this has not made it’s way into the Ignition help yet, so here’s a link to the old help file. It’s all about the same and you should be able to get all the info you need out of it. Just unzip it and open index.html

Great, thanks!

not to dredge up the past…

I need to use the activeX module to put up a powerpoint. The tutorials in the old help file mention functions available for the IE activeX, but I don’t see an inclusive list of all functions available for all the MS controls…

Is this information available anywhere?

Thanks,

C

Since Ignition is written in Java it is difficult to integrate ActiveX controls like you would in Microsoft .NET. However, our ActiveX control does have functions to invoke functions on the control and get/set properties on the control. But, these functions and properties don’t get listed for you. You have to inspect the ActiveX control in .NET or ComfyJ to get an idea.

What exactly would you like to do? I can help you with the code.

thanks Travis…

if you talk to Doug in marketing, he can show you what I am doing with a safety sign I’ve developed… what I’m trying to do right now is add the ability to drop in power point presentations into it…

I’ve got the current activex module installed and can drop a powerpoint control onto a window and get it to display, but for some reason, no matter what I do, I cannot get the presentation to start up in slideshow mode, even though I’ve saved it as a .pss.

I’ve tried a few things, using my limited knowledge of all this, but am at a standstill with getting it to run automatically… If I launch the .pss outside of ignition, it runs automatically. In Ignition, it comes up in edit mode…

So I guess I’m looking for the ability to throw a function at it or set a property that will force it into slideshow mode…

I have Office 2010 on my development machine…

The other thing I cannot figure out is how to view the activex control in MS Studio Express or anything else that lets me drop controls into an app… Is ignition relying on pre-installed versions of MS controls? Or is it installing it’s own? I’ve tried browsing for the powerpoint activeX control in a bunch of different ways but cannot seem to find it as I was trying to do what you were suggesting in the first place, which led me to my posting above…

Any help you can provide would be very welcome!

Thanks

C

I tried to call the run function on the PowerPoint ActiveX control and couldn’t get it to work. I will investigate the issue and get back to you.

Stumbled upon the website on "Python For Excel " last week. This retired quantitative analyst seems to have some insight into how to expose these controls, and what they require for Excel. Perhaps it’s similar in PowerPoint? It seems TeamDev has a handle on it too with ComfyJ, and went searching for a reference to ComfyJ here, as I’ve been researching a means to wrap Excel in read-only OPC DA client and server to enable pulling data from Excel in real-time while allowing Excel to subscribe to tags in Ignition in similar fashion to “Excel OPC Server” I can’t help but feel that between these three resources, all the pieces exist to finally interface with Excel as a COM DA client/server, and maybe this functionality already exists somewhere. That said, I understand any stance that is cautious about being chewed up and spit out by the MS beast.

Edit: BTW, the opentradingsystem.com website didn’t begin to appear in the wayback machine until 2011 or so. It would’ve barely been on the radar as of this posting, and perhaps Father time has swept this issue under the rug. Confluence is a fickle thing.

You're better off creating a .NET enabled Excel spreadsheet and use .NET to either create an OPC client or subscribe to a MQTT broker and have Ignition push out tag changes to the broker (either direction, into Excel or out of Excel). I am working on an ActiveMQ integration project and this would be an interesting feature to add. (well actually the only functionality to add would be for Ignition gateway script to track the entire tag tree, instead of a subset like I was planning to)

But in the end... Excel will probably blow up anyways.

Yes, there is always that… :mask:

I find myself flip-flopping between total abandonment of Excel by brute force of will and determination to create a disruptive game changing replacement, and realizing that those who blaze trails need to prepare to be alone.

What’s wrong with giving users Ignition clients?

You're right. I think the more reasonable approach, however you implement the integration layer, is to give the user reasonable and equitable options to choose from, and they will "vote" for their preferred use case.

To get someone to use an alternative to excel is a tall barrier to overcome and would need to be a complete paradigm-shifting slam dunk, and so we attempt to come up along side and look for hooks to integrate.

I digress, The general issue of the OP is forcing exposure to a single control hidden deep in the recesses of a proprietary monolith, which can be a daunting and dynamic problem to solve. My guess was that certain .dll's require specific context and registrations which the design considerations for Python for Excel seems to lay out in some detail...
i.e. this:

"the COM protocol forbids calling an IDispatch pointer from a thread that is different from a thread to which the IDispatch pointer was marshalled. Another restriction is that IDispatch always marshals into the main thread of the process. The main thread is the thread that runs the Windows message loop. Hence, the Application handler (which is the pointer to IDispatch) cannot reside in the pfeControlShell.exe. It would block the process every time the Excel takes time to respond to a call via the Application handler. The Application handler has to reside in a separate process."

in pure Python 2.5, as far as I could tell.

Do you need the spreadsheet open at all times? You can use Java/Python to edit workbooks directly already. What am I missing?

Hi Kyle.

Maybe this belongs in a fresh thread…Suffice it to say, not necessarily “the” spreadsheet", but around 30 existing spreadsheets that are passed around via MS Exchange server used in various critical and non-critical processes throughout our org. Probably a pretty common scenario. Just looking to drastically streamline on the basis of granularity and dispersion of each input variable to these several analyses. The end game is to wean the org off spreadsheets as a means of sharing well defined analysis via email which are likely better updated/propagated via a more robust, efficient process, save for more exploratory analysis.

I believe the OP is looking for a means to expose one of PowerPoint’s controls so it can effectively become a device behind a server to be controlled from a client. I’m looking for the same except for several spreadsheets. Looking, from low level to high – i.e. COM/DCOM, DDE, RTD, VBA, .NET – without getting locked out in the near future. Already went that route, and never recovered when a change in VBA broke my excel model which was a simulator of sorts.

My vision is to approach these existing spreadsheets like PLC’s containing a transparent dynamic namespace whose “registers” can be bi-bidirectionally synchronized on a common field in the database/system of record, with each owner assigned to updating their fields, and it being instantaneously propagated into dashboards and other spreadsheets throughout the enterprise without clogging up and being reliant on email.

Owners would retain autonomous control of their transparent calc engines, and would be relieved of their duties of maintaining distribution lists and the actual task of delivering attachments via email, while gaining visibility on how the inputs they receive and outputs they send back out effect KPI’s throughout the enterprise expressed in units and aggregate of their choosing.

EDIT: What’s more is that the whole process wouldn’t come crashing down if any of the excel instances crashed due to the transactional rigor of databases, and/or the built-in store and forward process.

You have a very interesting and challenging problem with the way your operation runs on spreadsheets. We face a similar issue with user created Access databases that “supplement” ERP/MRP functionality. A while back we decided to no longer support these solutions. Instead we let the business know that we have standard packages that contain similar functionality and we are willing to work with you toward a migration path. We ask that the business draws up a project charter and we can begin looking at process gaps. The majority of these rogue Access solutions are a workaround to a broken process where they can no longer fit a square into a round hole.

1 Like

Just discovered OPC Expert’s COM RTD Server wrapped in UA. Apparently you can run their executable as a local service on a user’s Windows machine, and it will respond to Excel’s RTD() functions (as clients) which can pull or push live data. Apparently their service can, in turn, connect to the UA server on my Ignition Gateway across the enterprise network (thereby avoiding DCOM) and thus to any local or remote tags (on the G network - which could include the G in the plant network. Still working out the details. Can’t help but wonder how this could work like an “Enterprise PLC.” Any chance I can put this in a module in the G scope, run the executable on the gateway, and tunnel the COM parts through a jws client at the local machine? Guess I better test it first.

$995 per seat?

Huh I never knew RTD was a thing. My choice would be to leverage Kepware's IoT Gateway MQTT agent, push tag changes to MQTT broker, and suck them into Excel via your own RTD server.

Thank you for the Kepware/Queue suggestion, I’ll look into it. I’ve read that article and a few more. There’s one on the Add-In Express website that provides some good pitfall awareness, and implementation tips as well. I’m trying to limit my dependencies. This other solution is a single executable that optionally runs as a service (I think they’re using .Net and COM+ *.dll’s – avoiding all the registration requirements – to implement the RTD server).

I’m hoping to inspire the building of a module/device driver written in Java that would effectively implement an “Enterprise PLC” - an office “device” or manifestation of a business PLC - by wrapping COM RTD in UA. Maybe a twist on the COM DA Tunneler? It would enable the mash up of office and plant data over a gateway network, and mash up intra-office data via a SQL bridge on an I/O gateway located on the business network…and cuz $1000/head IS too much. I’ll post this last paragraph to the new feature request part of the website.

Cheers to the OP for allowing us to discuss this ActiveX alternative for the greater good on his/her thread. Concept diagram below…

Heh. That sounds somewhat familiar..... see this.
You might find the overview in the PDF User manual interesting.

That sounds like Thingworx or some of OSIsoft offerings.