← Help contents

Serial Connection

Opening a port, and what each setting actually does

A serial link is one of the oldest ways two devices talk to each other: bits travel over a wire one after another, with no clock, no addresses, no packets. ComIO.Studio speaks to anything that uses it — RS-485 devices (frequency inverters, PLCs, servo drives, energy meters), RS-232 instruments, and plain UART boards behind a USB adapter. Everything you need to open a port lives in the Connection tab — the first tab on the left, never closable, open from the moment the app starts.

Where the controls are

A bar of module tiles runs across the top of the window. Each tile carries an icon and, for some modules, a small switch beside it.

  • The icon opens that module's tab.
  • The switch next to the serial-port icon connects and disconnects the port. It works without opening the tab, so you can drop the link while looking at a chart or a script.
  • The switch stays greyed out until you pick a port — there is nothing to connect to yet.

Inside the Connection tab, from top to bottom: connection settings, logging, the terminal plug-in bar, the terminal, and the send bar.

Connection section with the port closed

Connection section, port closed — connect button, port and frame settings, DTR and RTS

The settings, one by one

The header row carries a status dot and the state next to it: Off or On. On the right of the same row sit four line indicatorsDSR, CTS, DCD, RI. These are fields on the screen, not lamps on your adapter: they light up when the device raises that line, and you cannot click them.

The button on the left of the second row — the one with the cable picture — opens and closes the port. It is one button, not two: a red cross pulses over it while the port is closed, and once the port is open the cable turns green and a spark runs along it.

Each setting on that row:

SettingWhat it does
Selected port Which serial port to open. Each entry shows the system name together with the adapter's product name, e.g. /dev/cu.usbserial-A9078Q (FT232R USB UART). The ⟳ button next to it rebuilds the list.
Baud rate The speed of the line, in bits per second. Both ends must use the same value; a mismatch turns text into garbage rather than failing outright — which is why garbage on screen almost always means the wrong speed. 9600 and 115200 cover most devices; the default is 115200.
Data How many bits make up one character: 5, 6, 7 or 8. Nearly every device made in the last twenty years uses 8; 7 turns up on old text-only equipment.
Parity An extra bit added to each character to catch a single flipped bit. None, Odd or Even. Industrial devices often insist on Even — a servo drive set to 8E1 stays silent on 8N1 even when the frame and the checksum are perfect.
Stop How many bits close a character: 1 or 2.
Flow How the two sides say “slow down”. No FC — neither side does. RTS/CTS — separate wires carry the signal. XON/XOFF — agreed characters travel inside the data stream, so it cannot be used for binary protocols, where those byte values are ordinary data.

Your choices are written to disk, so the port comes back configured the way you left it.

Changing settings while connected

Baud rate, data bits, parity, stop bits and flow control take effect immediately. The port is not closed and reopened: the terminal keeps its contents and the counters keep counting. Testing a speed costs one click, not a reconnect cycle.

The selected port is the exception. Picking a different port while connected does not move the connection — the open port stays open, and the new name is used the next time you click connect.

Control lines

Of the six RS-232 control lines, two are yours to drive and four are readouts.

RTS (Request To Send) and DTR (Data Terminal Ready) are buttons. With the port open, clicking one changes the line straight away. With the port closed the button still works and sets the state the line will have the moment the port opens — which matters on ESP32 and Arduino boards, where DTR is usually wired to reset and RTS to boot mode. Getting that state right before opening is the difference between a board that boots your firmware and one that lands in the bootloader.

With Flow set to RTS/CTS the operating system drives RTS itself; leave the button alone in that mode.

DSR, CTS, DCD and RI are read-only fields, refreshed about twice a second. DSR says the device is powered and ready, CTS is the line that pauses transmission under hardware flow control, and DCD and RI are leftovers from the modem era that most USB adapters never raise.

Plugging and unplugging

The app listens to the operating system's USB events, so a newly plugged adapter appears in the list on its own — no refresh, no restart. Unplugging an open port is treated as a disconnect rather than an error: the status dot goes dark, the switch turns off, and whatever is already in the terminal stays there.

On macOS the system exposes a few ports of its own — the kernel debug console, the Wi-Fi debug port, the Bluetooth incoming port. They would sit in front of the port you are actually looking for, so they are hidden by default. If you need one, turn on Show system ports in Info → Settings… → General.

Where you see the port state

The bar along the bottom of the window is the permanent readout, whichever tab you are in. From the left: a coloured dot with the port name, the frame in short form (19200 8E1 No FC — that is 19200 baud, 8 data bits, Even parity, 1 stop bit, no flow control), bytes received and sent, the time the link has been up, and how many times the link has been re-established. On the right of the same bar sit the current theme, the interface language, your licence and the application version; clicking the licence opens your account window.

Click either byte counter to cycle it through the individual senders — the command bar, a macro, a trigger, a script, the assistant — which is how you tell your own traffic apart from a script's.

💡 Garbage on screen? Check the baud rate first, then parity. Both can be changed without disconnecting, so testing costs seconds. If the device answers nothing at all, parity is the usual culprit — many industrial devices reply only on 8E1.