| gclib 421 Communications API for Galil controllers and PLCs |

## ◆ GOpen()

GCLIB_DLL_EXPORTED GReturn GCALL GOpen | ( | GCStringIn | address,
|  | GCon * | g
| ) |  |

Open a connection to a Galil Controller.

Parameters

  address | Null-terminated address string. See table below.
  g | Pointer to user's `GCon` variable. On success, the library will fill the user's variable with the handle to use for the rest of the connection. A valid `g` value is nonzero.

Returns
  The success status or error code of the function. See gclib_errors.h for possible values.

`address` switch | Meaning | Arguments `(default), other options` | Examples ----—
--- | --- | --- | ---
`--address` | Simple address to hardware | IP address, PCI, COM port | `--address COM1`
`-a` | shorthand for `--address` | See Address Ranges below | `-a GALILPCI1`
{no switch} | `--address` is implicit for any lone token |  | `192.168.0.42`
`--baud` | Baud rate | (`115200`), valid baud... | `COM2 --baud 19200`
`-b` | shorthand for `--baud` |  | `COM3 -b 38400`
`--command` | Command-and-response socket protocol | (`TCP`), `UDP` | `192.168.0.42 --command TCP`
`-c` | shorthand for `--command` |  | `192.168.0.42 -c UDP`
`--direct` | Connect directly to hardware instead of via gcaps |  | `-a GALILPCI2 --direct`
`-d` | shorthand for `--direct` |  | `GALILPCI2 -d`
`--handshake` | Serial Handshake mode | (`HARDWARE`), `NONE` | `COM1 --handshake NONE`
`--p1` | Primary port for command-and-response traffic | (`23`), valid port number | `192.168.0.42 --p1 5000`
`--p2` | Secondary port for unsolicited traffic | (`60007`), valid port number | `192.168.0.42 --p2 5000`
`--subscribe` | Subscribe to messages, data records, and/or interrupts | (`NONE`), `MG`, `DR`, `EI`, `ALL` | `192.168.0.42 --subscribe MG`
`-s` | shorthand for `--subscribe` |  | `192.168.0.42 -s DR -s EI`
`--timeout` | timeout in ms | (`5000`), 0-65535 | `192.168.0.42 --timeout 5000`
`-t` | shorthand for `--timeout` |  | `GALILPCI2 -t 500`
`--unsolicited` | Unsolicited socket protocol | (`UDP`), `TCP`, `NONE` | `192.168.0.42 --unsolicited TCP`
`-u` | shorthand for `--unsolicited` |  | `192.168.1.42 -u NONE`

Operating System | Address Range | Notes ------------------—
--- | --- | ---
Windows | `COM1` - `COM256` | RS232 and USB-to-serial
Linux | `/dev/ttyS0` - `/dev/ttyS255` | RS232
Linux | `/dev/ttyUSB0` - `/dev/ttyUSB255` | USB-to-serial, e.g. DMC-4103
Windows | `GALILPCI1` - `GALILPCI8` | PCI
Linux | `/dev/galilpci0` - `/dev/galilpci7` | PCI

See x_examples.cpp for an example.

When connecting to a network device, if the command-and-response socket is opened successfully but the unsolicited socket fails, GOpen() will still complete successfully. This allows connection to a Galil controller when only one Ethernet handle is available. Unsolicited traffic will not be accessible in this case.