Reading Pfeiffer MAXI GAUGE Serial Data into Siemens WinCC

David Krause19 min read
HMI / SCADASiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Reading Pfeiffer MAXI GAUGE Serial Data into Siemens WinCC

The Pfeiffer MAXI GAUGE family of multi-gauge vacuum controllers (TPG 300, TPG 500, MaxiGauge) exposes only a proprietary asynchronous serial command/response protocol over RS-232 or RS-485. There is no native Modbus, OPC, EtherNet/IP, or PROFINET interface. WinCC does not ship a built-in channel for the Pfeiffer protocol, so engineers must wrap the instrument inside one of the standard channel types that WinCC already understands. This reference covers the four engineering-proven bridges - OPC server, Modbus gateway, in-process VBScript/C script, and custom .CHN channel DLL - and the WinCC Unified OPC UA alternative introduced in SIMATIC WinCC Unified V17 Architectures.

Hard constraint: WinCC permits a maximum of 16 simultaneous connections across 3rd-party PLC communication drivers in a single WinCC Runtime instance. The 16 slots can be a mix of drivers and instances of the same driver, but the ceiling is absolute. Plan your channel budget before commissioning. See Communication between the HMI device and the PLC - WinCC.

1. Problem Definition

The MAXI GAUGE communicates using a master/slave ASCII frame set: the host sends a short command such as PR1 (read pressure from gauge 1), PR2, PRZ (read all gauges), TAL (read transducer types), or SEN (read serial number), and the instrument replies with a fixed-length string ending in CR LF or returns an error code such as ERR 001. Default settings are 9600 baud, 8 data bits, no parity, 1 stop bit (8N1), with selectable 19200 and 38400. The instrument does not implement Modbus, OPC, or any fieldbus profile. Any RS-232-to-Ethernet converter alone will only change the physical layer; it will not magically speak Modbus. The translation must be implemented explicitly.

1.1 What WinCC Cannot Do Without an Adapter

  • Issue an arbitrary binary or ASCII command frame out of a serial port on a polling schedule.
  • Parse a non-Modbus, non-S7 response into tag values directly.
  • Hold open more than 16 logical connections to non-Siemens drivers in one RT instance.

1.2 What WinCC Can Do Natively

  • Poll Modbus TCP or Modbus RTU registers on a fixed schedule.
  • Subscribe to OPC DA 2.0/3.0 tags from a registered local or remote OPC server.
  • Subscribe to OPC UA nodes from a UA server.
  • Execute VBScript or C script on a timer inside a screen or Global Script action.
  • Load custom .CHN channel DLLs that implement the IWChannel interface (WinCC 7.x).

2. Architecture Options

All four viable bridges funnel the proprietary ASCII frames into one of the four supported interfaces: Modbus TCP, OPC DA, OPC UA, or a custom channel. Choose based on the WinCC version, the number of MAXI GAUGE units, the polling rate required, and whether the engineering team can write C code.

Pfeiffer MAXI GAUGE RS-232 / RS-485 OPC DA Server (Kepware / Matrikon / Softing) bridges proprietary Moxa NPort + small RTU/TCP wrapper Modbus TCP exposure WinCC VBScript MSComm / com0com direct COM polling Custom .CHN DLL WinCC Channel Modbus TCP/IP (native driver) WinCC OPC DA Client (native) subscriptions WinCC OPC UA Client (native, V14+) Unified supports UA server WinCC RT Tags / Screens ≤ 16 3rd-party

3. Prerequisites

  1. WinCC engineering license (WinCC 7.5 SP2, WinCC Professional V17, or WinCC Unified V17 PC) with the matching Runtime license for the chosen driver set.
  2. Administrator local account on the WinCC station (required for COM port assignment, OPC DCOM configuration, and channel registration).
  3. Pfeiffer MAXI GAUGE protocol reference (the ASCII command/response table for your firmware version). Confirm the exact command set, terminator characters, and error codes against the manual shipped with the unit.
  4. Physical cabling: DB9 crossover (null-modem) cable for RS-232, or twisted pair on the RS-485 terminals. Verify the MAXI GAUGE port pinout; some revisions use DCE-style pinout and require a straight-through cable, not crossover.
  5. Either a free COM port on the WinCC station, a USB-to-RS-232 adapter (FTDI-based recommended for industrial use), or an Ethernet-managed serial gateway (Moxa NPort 5110/5150/5250 or equivalent).
  6. For OPC route: a licensed 3rd-party OPC DA server with a generic serial driver module (e.g., Kepware, Matrikon OPC, Softing S7/S5-OPC, or the open-source OPC Foundation sample servers for development only).

4. Method 1 - OPC DA Server as Protocol Bridge

This is the lowest-risk path for shops that already own a commercial OPC DA server. The server polls the MAXI GAUGE on its native RS-232 port, parses the ASCII responses, and exposes each parameter (pressure 1..6, transducer type, status, error code) as an OPC tag. WinCC's native OPC DA Client channel subscribes to those tags.

4.1 Configure the OPC Server

  1. Install the OPC server on the WinCC station or on a dedicated bridge PC.
  2. Create a new channel: select Generic Serial / ASCII Device or the vendor-specific Pfeiffer driver if your OPC vendor ships one.
  3. Set COM port, baud (9600 default), 8N1, and the appropriate inter-character timeout (typical 50 ms) and inter-frame timeout (typical 200 ms).
  4. Define a device node (e.g., MAXI1) and add tags. Map Pressure1 to the response of PR1\r, Pressure2 to PR2\r, and so on. The OPC server's parser strips the leading command echo (some Pfeiffer firmware echoes the command first) and converts the trailing E+00 scientific notation into a 32-bit float.
  5. Set the polling rate. 500 ms is usually enough for vacuum trending; 100 ms is the practical floor because the MAXI GAUGE's internal A/D cycle is 100 ms.
  6. Enable the OPC DA 2.0/3.0 interface and confirm the server registers itself in the Windows registry under HKEY_CLASSES_ROOT\CLSID.

4.2 Configure the OPC DA Client in WinCC

  1. In WinCC Explorer, right-click Tag Management → Add New Driver → OPC → OPC DA Client.
  2. The driver consumes one of the 16 3rd-party driver slots. Add it once even if you have multiple OPC servers, as long as the WinCC OPC DA Client is a single driver instance.
  3. Open OPC Groups → OPC DA Client → New Connection, browse the local or remote OPC server, and select the server ProgID (e.g., Kepware.KEPServerEX.V6).
  4. Add tags by browsing the server's tag namespace. WinCC creates external tags of the matching data type (Float, Word, Bool).
  5. Set update rate to match the OPC server's polling interval.
DCOM warning: If the OPC server runs on a different machine, configure DCOM access, launch, and authentication for the OPCENUM.exe and the specific server exe. Use dcomcnfg. Anonymous access with the legacy Everyone identity is acceptable on a closed process network but is not acceptable on a corporate network. Set machine-level access for the WinCC service account (default: CC_ServiceUser in WinCC 7.x).

4.3 Commissioning Checklist

  • Open the OPC server's built-in client (Quick Client) and confirm each tag returns a fresh value every cycle.
  • In WinCC, use Graphics Designer → Tag Simulator to verify the link between the WinCC tag and the OPC tag (the value field updates in the RT dialog).
  • Trigger an ERR 001 from the gauge (e.g., disconnect the gauge head) and confirm the OPC tag updates with the error code, not a stale value.

5. Method 2 - Moxa NPort + Modbus TCP Wrapper

This method is the cleanest when you have many MAXI GAUGE units and want to consolidate them onto Ethernet. The Moxa NPort sits in TCP Server mode, and a small custom application on the WinCC station (or any PC) handles the Pfeiffer protocol and re-exposes the values as Modbus TCP holding registers. WinCC uses its native Modbus TCP/IP channel.

5.1 Hardware Configuration

Moxa Model Ports Interface Ethernet Notes
NPort 5110 1 RS-232 10/100 Compact, DIN-rail mount, 12-48 VDC
NPort 5130 1 RS-422/485 10/100 For RS-485 MAXI GAUGE bus
NPort 5150 1 RS-232/422/485 10/100 Most flexible for mixed sites
NPort 5250 2 RS-232/422/485 10/100 Two gauges on one device
NPort 5450 4 RS-232/422/485 10/100 Four gauges; rack-mount variants available

5.2 Moxa Configuration Steps

  1. Connect the Moxa NPort to the network and run NPort Administrator (Windows utility from the manufacturer).
  2. Assign a fixed IP, subnet, and gateway. Disable DHCP on production machines.
  3. Set Operation Mode → TCP Server, TCP Alive Check → 7 min, Inactivity Timeout → 0 (no auto-disconnect).
  4. Map COM port 1 to a TCP port, e.g., 4001. The wrapper application opens 192.168.1.50:4001 as if it were a local COM port.
  5. Set the serial side to match the MAXI GAUGE: 9600 8N1, no flow control, Rx FIFO trigger at 14 bytes.
  6. Disable Real COM mode unless you are using the Moxa COM port redirector driver on the bridge PC. For a custom wrapper, TCP Server is sufficient.

5.3 Wrapper Application Logic

The wrapper is a small service that owns the TCP socket, issues Pfeiffer commands on a fixed cycle, parses the responses, and writes the resulting floats into a Modbus holding register map that WinCC polls. A minimal C# / .NET 6+ implementation is straightforward:

// Pseudo-code: wrapper loop
while (running) {
  foreach (var gauge in gauges) {
    send("PR" + gauge.id + "\r");
    var resp = readLine(2000); // 2 s timeout, expect CR/LF
    if (resp.StartsWith("ERR")) {
      writeModbusRegister(gauge.errorReg, 0xFFFF);
    } else {
      var p = parsePfeifferFloat(resp); // strips status byte, parses mantissa/exponent
      writeModbusRegister(gauge.pressureReg, floatToModbus(p));
    }
  }
  Thread.Sleep(500);
}

5.4 Modbus Register Map Example

Register Content Data Type Access
40001 Gauge 1 pressure (Pa) Float32 (2 regs) R
40003 Gauge 2 pressure (Pa) Float32 R
40005 Gauge 3 pressure (Pa) Float32 R
40007 Gauge 4 pressure (Pa) Float32 R
40009 Gauge 5 pressure (Pa) Float32 R
40011 Gauge 6 pressure (Pa) Float32 R
40013 Error code (0 = OK, 0xFFFF = comms fault) UINT16 R
40014 Transducer type bitmap UINT16 R

5.5 WinCC Modbus TCP/IP Channel Configuration

  1. Add the MODBUS TCP/IP driver to Tag Management. This driver is part of the 16-slot 3rd-party driver budget.
  2. Create a new connection: IP = wrapper PC, port = 502, station address = 1.
  3. Add tags of type Float mapped to 400001 (40001 is address 0 in zero-based Modbus). The driver automatically combines the two 16-bit registers into a Float32 in little-endian or big-endian; confirm the endianness matches the wrapper.
  4. Set cycle time to 500 ms-1000 ms for vacuum trending.

6. Method 3 - VBScript Direct Serial Access

For a single MAXI GAUGE and a project budget that cannot justify a 3rd-party OPC server, you can talk to the instrument directly from WinCC Global Script actions. The script uses the Windows MSComm OCX or, more commonly today, the System.IO.Ports.SerialPort class available in .NET and accessible from WinCC VBScript via a small wrapper.

6.1 Wire the COM Port

  1. Connect the MAXI GAUGE to a free COM port (or USB-to-serial adapter). Confirm the COM number in Device Manager → Ports (COM & LPT).
  2. Reserve the COM number across reboots (USB serial adapters may renumber on re-plug). Use the adapter's EEPROM utility (FTDI FT_Prog, etc.) to set a fixed COM number.

6.2 Build a Polling Action

  1. In WinCC Explorer, open Global Script → C Editor (recommended over VBScript for serial I/O because C is faster and supports CreateFile on \\.\COMx directly).
  2. Create a function PfeifferPoll() scheduled with a 1 s trigger under Global Script → Actions → Trigger.
// WinCC C action - sketch only, validate on bench
#include <windows.h>
static HANDLE hCom = INVALID_HANDLE_VALUE;
void OpenPfeiffer() {
  hCom = CreateFile("\\\\.\\COM4", GENERIC_READ|GENERIC_WRITE,
    0, NULL, OPEN_EXISTING, 0, NULL);
  DCB dcb = {0};
  dcb.DCBlength = sizeof(dcb);
  GetCommState(hCom, &dcb);
  dcb.BaudRate = CBR_9600; dcb.ByteSize = 8;
  dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT;
  dcb.fRtsControl = RTS_CONTROL_ENABLE; // RS-232 only
  SetCommState(hCom, &dcb);
  PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
}
void PfeifferPoll() {
  if (hCom == INVALID_HANDLE_VALUE) OpenPfeiffer();
  char cmd[] = "PR1\r";
  DWORD w;
  WriteFile(hCom, cmd, 4, &w, NULL);
  char resp[64] = {0}; DWORD r;
  ReadFile(hCom, resp, 32, &r, NULL); // 200 ms timeout set via SetCommTimeouts
  // parse resp, scale to engineering units, write to internal tag
  SetTagFloat("Press1_Pa", (float)atof(resp));
}
Reliability caveat: VBScript/C actions tied to a single COM port are fragile when the station reboots, the COM number changes, or the cable is hot-unplugged. Always guard with a re-open retry and expose a diagnostic tag for the script health. Industrial deployments should prefer the OPC or Modbus wrapper methods so the protocol handling lives in a service that can be supervised and restarted independently of the WinCC RT.

7. Method 4 - Custom CHN Channel DLL

WinCC 7.x supports custom channel DLLs implementing the IWChannel, IWChannelRaw, and IWTag interfaces. The DLL loads inside the WinCC RT process, registers under Tag Management → Add New Driver, and exposes tags that WinCC polls. This is the highest-performance and most reliable option for embedded deployments, but it requires a C/C++ developer familiar with the WinCC Channel SDK and the COM interface used by WinCC since V6.0.

7.1 Channel DLL Skeleton

  1. Open Visual Studio 2019/2022, create a Win32 DLL project. Link against the WinCC SDK headers (shipped under ...\WinCC\Documents\English\ChannelSDK on the WinCC installation media).
  2. Implement IWChannel::Connect(): open the COM port, configure DCB, allocate a receive thread.
  3. Implement IWChannel::Read(): pull the next parsed value from the receive queue, write into the WinCC tag's data area.
  4. Implement the periodic poll loop in a worker thread: send PR1\r, wait for response, parse, queue, sleep 500 ms, repeat.
  5. Register the DLL with regsvr32 PfeifferChannel.dll. WinCC discovers the channel on next project open and lists it as Pfeiffer CHN in the Add New Driver dialog.

7.2 Channel Properties Dialog

Expose a minimal configuration dialog (resource-only DLL) with these fields so the engineer can configure from WinCC Explorer without editing the registry:

Field Default Notes
COM Port COM1 \COMx device path
Baud 9600 9600 / 19200 / 38400
Inter-frame timeout (ms) 200 Wait for CR before parsing
Polling interval (ms) 500 Round-robin across gauges
Number of gauges 1 1-6 typical for TPG 300/500

7.3 WinCC Unified Equivalent

WinCC Unified V17+ replaces the .CHN model with an AddIn concept (C# against the Unified API). The same protocol engine can be packaged as a Unified AddIn and exposed through OPC UA, then consumed by WinCC Unified's native UA client. The architectural document at SIMATIC WinCC Unified V17 Architectures shows the AddIn slot in the HMI Unified Comfort Panel and the PC runtime.

8. WinCC Unified OPC UA Path

If the project is on WinCC Unified V17 or later, the cleanest path is a small OPC UA server (open-source open62541 or commercial Prosys OPC UA SDK) running on the WinCC station. The UA server polls the MAXI GAUGE, exposes a node for each pressure, and WinCC Unified's OPC UA Client channel subscribes. This avoids DCOM (which the classic OPC DA approach requires) and aligns with the WinCC Unified 16-connection limit described in the TIA Portal help for V21.

8.1 UA Server Namespace

ns=2;s=Pfeiffer.MAXI1.Pressure1   // Float, units Pa
ns=2;s=Pfeiffer.MAXI1.Pressure2
ns=2;s=Pfeiffer.MAXI1.Pressure3
ns=2;s=Pfeiffer.MAXI1.ErrorCode     // Int32, 0=OK, <0 = instrument error
ns=2;s=Pfeiffer.MAXI1.LastUpdate    // DateTime

8.2 WinCC Unified Tag Configuration

  1. Open the Unified configuration in TIA Portal V17 or later.
  2. Add a new connection of type OPC UA Client. The UA Client counts as one of the 16 third-party driver slots in WinCC Unified.
  3. Browse the UA endpoint (e.g., opc.tcp://localhost:4840) and select the nodes above.
  4. Set the publish interval to 500 ms. Unified supports publication on data change, which is more efficient for slow-changing pressure values.

9. Connection Budget Planning

WinCC enforces a hard ceiling of 16 connections for 3rd-party PLC communication drivers (per the Siemens TIA Portal help for V21). A single Modbus TCP/IP connection can carry many tags from many devices - the limit is on logical connections, not on tags. Plan accordingly:

Driver Instances per Project Use Case
OPC DA Client 1 instance, multiple groups OPC DA bridge
OPC UA Client 1 instance, multiple endpoints OPC UA bridge (Unified)
MODBUS TCP/IP 1 instance per remote device OR 1 instance with many connections Modbus wrapper / direct Modbus
MODBUS RTU 1 instance per serial port Direct serial to MAXI GAUGE if it spoke Modbus RTU (it does not)
Allen-Bradley EtherNet/IP 1 instance per PLC 3rd-party PLC slot
3rd-party .CHN DLL 1 instance Custom Pfeiffer channel
Mixing driver families consumes multiple slots. If you need OPC DA for the bridge and OPC UA for a separate system, both count toward the 16. WinCC does not warn until the 17th driver is added - fail silently with a connection error in the diagnostics channel. Use WinCC Explorer → Tools → Status of Driver Connections to audit.

10. Verification and Commissioning

For any of the four methods, the verification sequence is the same:

  1. Open the bridge application (OPC server, Modbus wrapper, or UA server) and confirm the COM port activity. A USB-serial analyzer or a physical RS-232 line monitor (e.g., a Y-cable with two DB9 sockets) lets you see the actual traffic.
  2. Confirm WinCC tag status is good in the Tag Management runtime view. A status of bad or uncertain indicates a driver-side problem, not a screen-side problem.
  3. Force a gauge error (disconnect the gauge head, command the gauge into over-range with a known test value if the protocol supports it) and confirm the error tag updates.
  4. Power-cycle the MAXI GAUGE and confirm tags recover within the configured reconnect window. The OPC server should auto-reconnect the COM port; the Modbus wrapper should re-issue the next PR command and resume.
  5. Run WinCC RT for 24 h under load. The pressure tags should never freeze on a stale value. Add a heartbeat tag (a counter incremented in the bridge) so a frozen value is detectable from the screen.

10.1 Performance Numbers

Method Latency floor CPU overhead on WinCC station Scalability
OPC DA bridge 100-500 ms Low (DCOM is the hot path) High - one server, many gauges
Moxa + Modbus wrapper 50-200 ms Low (Modbus TCP is light) High - many gauges per wrapper
VBScript / C action Polling-interval + script exec Medium (script runs in RT) Low - one COM port, one script
Custom .CHN DLL 50-100 ms Low (in-process) Medium - one DLL per protocol
Unified OPC UA 50-200 ms Low High - many nodes per server

11. Troubleshooting Matrix

Symptom Likely Cause Diagnostic Step Fix
All tags show 0 or stale COM port not opened by bridge, or wrong COM number Check Device Manager; check bridge log for CreateFile errors Reassign fixed COM number, restart bridge service
Some tags OK, others ERR 001 Faulty gauge head or wrong command index Issue PR1..PR6 manually from a terminal emulator Replace head or correct gauge index in the bridge config
Intermittent timeouts Baud mismatch, parity, or inter-frame timeout too short Capture serial line with sniffer; compare to gauge spec Set baud to 9600, increase inter-frame timeout to 300 ms
WinCC shows Connection failed - no license OPC DA Client / Modbus TCP / OPC UA Client needs a separate license or RT slot Check Authorizations in WinCC Explorer Reassign RT license to the WinCC station; verify ASIA authorization
Tags good in RT, frozen on screen WinCC screen field not bound to the right tag, or tag group disabled Open the screen, right-click the I/O field, check tag name and update cycle Re-link the field to the correct external tag
17th driver not loading Hit the 16-connection 3rd-party limit Count drivers in Tag Management → Drivers Consolidate behind one OPC UA server or one Modbus wrapper
UA client gets Bad_NotConnected UA server certificate not trusted by WinCC RT Check Unified log: %ProgramData%\Siemens\Automation\Logfiles Push the UA server cert to the Unified trust store
DCOM access denied WinCC service account lacks launch/access on remote OPC server dcomcnfg on server PC, check COM Security and Launch & Activation Grant CC_ServiceUser (or your RT service account) local and remote access

12. Field-Commissioning Notes

  • The MAXI GAUGE default address on the RS-485 bus is 1. If you daisy-chain multiple units, set each to a unique address (2-31) via the front panel; the protocol allows addressing by ADR n command. Most deployments use one gauge per COM port, avoiding the addressing complexity.
  • The command PR1..PR6 returns scientific-notation ASCII, e.g., 1.234E-05. The status byte is a single trailing character (e.g., 0 = OK, 1 = underrange, 2 = overrange, 3 = sensor error, 4 = sensor off). Your parser must handle the status byte and not just the numeric portion.
  • Default baud is 9600. Change with BAU command. Save with RES only if you want to persist; otherwise the change is volatile until power cycle.
  • The MAXI GAUGE does not buffer commands. Issue one PR and wait for the response (or timeout) before issuing the next. A script that fires all six commands in a tight loop will get interleaved garbage back.
  • RS-485 termination: 120 ohm between A and B at each end of the bus. The MAXI GAUGE has a built-in terminator that can be enabled via DIP switch on the rear - enable it only on the end unit.
  • EMC: keep the RS-232 cable short (< 15 m). For longer runs, RS-422/485 with twisted shielded pair is mandatory. The Moxa NPort's RS-485 port is rated to 1.2 km at 9600 baud.
  • Power: the MAXI GAUGE is 24 VDC; do not back-feed 24 V from the same supply that powers a noisy VFD on the same panel - isolate with a DC-DC converter.

13. Selection Matrix - Which Method to Use

Scenario Recommended Method Rationale
One MAXI GAUGE, small WinCC project, no extra budget Method 3 (VBScript / C action) Lowest cost, but fragile
Multiple MAXI GAUGE units, mix of gauges from other vendors Method 1 (OPC DA bridge) One server, many devices, vendor-supported
Many MAXI GAUGE units, dedicated IT-managed network Method 2 (Moxa + Modbus wrapper) Scalable, no DCOM, standard Modbus on WinCC side
Embedded WinCC RT, no extra PC allowed, skilled C team Method 4 (Custom .CHN) Most reliable, in-process
WinCC Unified V17+ project Method 5 (OPC UA server) Aligns with Unified, no DCOM, 16-connection budget friendly

14. FAQ

Does the Pfeiffer MAXI GAUGE support Modbus?

No. The MAXI GAUGE uses a proprietary ASCII command/response protocol. You need a bridge application (OPC server, Modbus wrapper, custom channel, or UA server) to translate it for WinCC.

Can I use a simple RS-232-to-Ethernet converter to talk to the MAXI GAUGE from WinCC?

Only at the physical layer. The converter changes RS-232 to TCP/IP but does not add a Modbus or OPC layer. You still need a wrapper that issues Pfeiffer commands and parses responses.

How many 3rd-party drivers can WinCC load at once?

WinCC supports a maximum of 16 connections across 3rd-party PLC communication drivers in a single WinCC Runtime. Plan your channel budget to keep this in budget when adding OPC DA Client, OPC UA Client, Modbus TCP/IP, and custom CHN drivers.

What is the lowest-latency method to read the MAXI GAUGE in WinCC?

A custom .CHN channel DLL running in-process inside the WinCC RT can achieve 50-100 ms update latency. OPC DA and Modbus TCP wrappers typically settle at 100-500 ms depending on the polling cycle you configure.

Is the WinCC OPC DA approach still recommended in 2024+?

For new projects, prefer OPC UA. OPC DA requires DCOM configuration, which is increasingly blocked by corporate IT and Windows security baselines. OPC UA is firewall-friendly and supported natively by WinCC Unified V17 and later. OPC DA remains a valid choice for legacy WinCC 7.x projects that already have a working DCOM configuration.

Back to blog