---
title: "Serial driver"
slug: "serial-driver"
tags: ["Devices"]
updated: 2023-11-08T18:30:14Z
published: 2023-11-08T18:30:14Z
canonical: "support.tulip.co/serial-driver"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Using the Serial Driver

*A guide to using the Serial Driver*

This article describes the capabilities and configuration associated with the Serial driver in Tulip.

Note that this driver differs from the [Generic Serial Driver](https://support.tulip.co/docs/how-to-use-the-generic-serial-driver-on-io-gateway) that is currently only available for the Tulip I/O Gateway and Edge IO.

## Capabilities

The Serial driver allows Tulip Apps to connect to Serial devices and send and receive messages. This includes all types of USB-Serial devices, serial devices connected via a USB-to-Serial adapter, and serial devices connected using a Virtual Serial (COM) Port. These devices can include Zebra printers, mettler Toldeo scales, and many more.

This driver is only available for the Windows-based Tulip Player and is enabled by default.

### Functions

The driver supports the following functions:

- **List Ports** - To list the available Serial (COM) ports
- **Connect** - To connect to a Serial port to send and receive messages
- **Connect with Options** - Advanced options for the serial connection such as flow control, parity, data bits and stop bits. *Available since release r252 and requires Desktop Player version 2.2 or higher.*
- **Send** - To send a message to a connected device
- **Disconnect** - To disconnect from a connected device

These functions are exposed in the Tulip App Editor as a "Device Function" as shown below:

**List Ports** ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Using%20the%20Serial%20Driver_259650152.png)

**Connect** ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Using%20the%20Serial%20Driver_259650586.png)

**Connect with Options** ![Serial Driver Connect with Options](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Serial%20Driver%20Connect%20with%20Options.png)

**Send** ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Using%20the%20Serial%20Driver_259650744.png)

**Disconnect** ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Using%20the%20Serial%20Driver_259650871.png)

All three functions require an "identifier" to be passed as a parameter. This identifier uniquely identifies a connection within the Tulip App and can be used to maintain multiple connections simultaneously.

The other parameters for the Connect function are described below:

- **Path** - The COM path of the device to which you would like to connect.
- **Baud Rate** - The [baud rate](https://en.wikipedia.org/wiki/Baud) of the device to which you would like to connect. This is typically provided in your device's documentation. If your device has an auto-configuring baud rate, this value will be ignored.
- **Message Delimiter** - A delimiting string that separates *incoming* messages. Every time the message delimiter is received *from* your device, all data received since the last message delimiter will be sent to your App via the **Message** event. This is commonly a newline ("\n") or a carriage return with a newline ("\r\n").
- **Message Terminator** - A string that will be sent after each *Send* function in order to indicate that the message is terminated. This is commonly a newline ("\n") or a carriage return with a newline ("\r\n").

The “Connect with options” trigger action is available from release r252 and requires Windows Desktop Player 2.2 or higher. The additional options support the following values:

| Option | Allowed Values | Commonly Used Values |
| --- | --- | --- |
| Data Bits | 5, 6, 7, 8 | 8 |
| Stop Bits | 1, 1.5, 2 | 1 |
| Parity | none, even, odd, mark, space | none |
| Flow Control | none, rts-cts, xon-xoff | none |

### Events

The driver emits two kinds of Events: a "Message" event indicating that a connection has sent a message and an "Error" event that indicates that something has errored within the driver or connection.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Using%20the%20Serial%20Driver_226548417.png)

## Configuration

No configuration is necessary outside of the Tulip App logic required to connect to a device. While in the above examples we show static values being used for the connection details, it is common to pull these values from variables or Tulip Table records in order to allow for central management of these values.

---

Did you find what you were looking for?

You can also head to [community.tulip.co](https://community.tulip.co/?utm_source=intercom&amp;utm_medium=article-link&amp;utm_campaign=all) to post your question or see if others have faced a similar question!

**Edge IO**

**Edge IO** is a Tulip-developed **Edge Device**. Interface with digital inputs directly from **Triggers**, flip digital outputs, run **Node-RED**flows, and more!

**Edge IO**can also act as a **Connector Host**or OPC-UA Broker

**Tulip Player**

**Tulip Player** is the Windows/Mac executable program where users can run Tulip apps. Tulip player allows you to create a more seamless user experience by removing the need for a web browser and allows increased IT controls.

**App Editor**

The web interface used for building applications. Where you design a user interface, add logic, and connect your applications to **Tables**. ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screen%20Shot%202022-09-13%20at%207.50.23%20AM.png)

**Events**

**Events**are **Triggers**fired by Custom **Widgets.**Users can configure as many Events as they want, and events can carry a payload of data to be used in a **Trigger.**
