serialport-0.4.1: Cross platform serial port library.

System.Hardware.Serialport

Contents

Description

This module provides the serial port interface.

 import System.Hardware.Serialport
 let port = "COM3"          -- Windows
 let port = "/dev/ttyUSB0"  -- Linux
 s <- openSerial port defaultSerialSettings { commSpeed = CS2400 }
 sendString s "AT\r"
 recvString s >>= print
 closeSerial s

Synopsis

Types

data CommSpeed Source

Supported baudrates

Instances

data StopBits Source

Constructors

One 
Two 

data Parity Source

Constructors

Even 
Odd 
NoParity 

Configure port

You don't need the get or set functions, they are used by openSerial

data SerialPortSettings Source

Constructors

SerialPortSettings 

Fields

commSpeed :: CommSpeed

baudrate

bitsPerWord :: Word8

Number of bits in a word

stopb :: StopBits

Number of stop bits

parity :: Parity

Type of parity

flowControl :: FlowControl

Type of flowcontrol

timeout :: Int

Timeout when receiving a char in tenth of seconds

defaultSerialSettings :: SerialPortSettingsSource

Most commonly used configuration

  • 9600 baud
  • 8 data bits
  • 1 stop bit
  • no parity
  • no flow control
  • 0.1 millisecond receive timeout

setSerialSettingsSource

Arguments

:: SerialPort

The currently opened serial port

-> SerialPortSettings

The new settings

-> IO SerialPort

New serial port

Configure the serial port

getSerialSettings :: SerialPort -> SerialPortSettingsSource

Get configuration from serial port

Serial methods

Device

openSerialSource

Arguments

:: FilePath

The filename of the serial port, such as /dev/ttyS0 or /dev/ttyUSB0

-> SerialPortSettings 
-> IO SerialPort 

Open and configure a serial port

closeSerial :: SerialPort -> IO ()Source

Close the serial port

Sending & receiving

sendChar :: SerialPort -> Char -> IO ()Source

Send a character

sendString :: SerialPort -> String -> IO ()Source

Send a string

recvChar :: SerialPort -> IO (Maybe Char)Source

Possibly receive a character unless the timeout given in openSerial is exceeded.

recvString :: SerialPort -> IO StringSource

Receive a string

Line control

setDTR :: SerialPort -> Bool -> IO ()Source

Set the Data Terminal Ready level

setRTS :: SerialPort -> Bool -> IO ()Source

Set the Ready to send level