serialport-0.5.0: Cross platform serial port library.
Safe HaskellSafe-Inferred
LanguageHaskell2010

System.Hardware.Serialport

Description

This module provides the serial port interface.

import qualified Data.ByteString.Char8 as B
import System.Hardware.Serialport
let port = "COM3"          -- Windows
let port = "/dev/ttyUSB0"  -- Linux
s <- openSerial port defaultSerialSettings { commSpeed = CS2400 }
send s $ B.pack "AT\r"
recv s 10 >>= print
closeSerial s

Or use the experimental interface with standard handles:

import System.IO
import System.Hardware.Serialport
let port = "COM3"           -- Windows
let port = "/dev/ttyUSB0"   -- Linux
h <- hOpenSerial port defaultSerialSettings
hPutStr h "AT\r"
hGetLine h >>= print
hClose h
Synopsis

Types

data Parity Source #

Constructors

Even 
Odd 
NoParity 

Instances

Instances details
Eq Parity Source # 
Instance details

Defined in System.Hardware.Serialport.Types

Methods

(==) :: Parity -> Parity -> Bool #

(/=) :: Parity -> Parity -> Bool #

Read Parity Source # 
Instance details

Defined in System.Hardware.Serialport.Types

Show Parity Source # 
Instance details

Defined in System.Hardware.Serialport.Types

data SerialPort Source #

Instances

Instances details
Show SerialPort Source # 
Instance details

Defined in System.Hardware.Serialport.Posix

BufferedIO SerialPort Source # 
Instance details

Defined in System.Hardware.Serialport.Posix

RawIO SerialPort Source # 
Instance details

Defined in System.Hardware.Serialport.Posix

IODevice SerialPort Source # 
Instance details

Defined in System.Hardware.Serialport.Posix

Configure port

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

defaultSerialSettings :: SerialPortSettings Source #

Most commonly used configuration

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

setSerialSettings Source #

Arguments

:: SerialPort

The currently opened serial port

-> SerialPortSettings

The new settings

-> IO SerialPort

New serial port

Configure the serial port

getSerialSettings :: SerialPort -> SerialPortSettings Source #

Get configuration from serial port

Serial methods

Device

hOpenSerial :: FilePath -> SerialPortSettings -> IO Handle Source #

Open and configure a serial port returning a standard Handle

openSerial Source #

Arguments

:: FilePath

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

withSerial :: FilePath -> SerialPortSettings -> (SerialPort -> IO a) -> IO a Source #

Safer device function, so you don't forget to close the device

Sending & receiving

send Source #

Arguments

:: SerialPort 
-> ByteString 
-> IO Int

Number of bytes actually sent

Send bytes

recv :: SerialPort -> Int -> IO ByteString Source #

Receive bytes, given the maximum number

flush :: SerialPort -> IO () Source #

Flush buffers

Line control

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

Set the Data Terminal Ready level

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

Set the Ready to send level