Safe Haskell | None |
---|
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
- data CommSpeed
- data StopBits
- data Parity
- data FlowControl
- data SerialPort
- data SerialPortSettings = SerialPortSettings {
- commSpeed :: CommSpeed
- bitsPerWord :: Word8
- stopb :: StopBits
- parity :: Parity
- flowControl :: FlowControl
- timeout :: Int
- defaultSerialSettings :: SerialPortSettings
- setSerialSettings :: SerialPort -> SerialPortSettings -> IO SerialPort
- getSerialSettings :: SerialPort -> SerialPortSettings
- hOpenSerial :: FilePath -> SerialPortSettings -> IO Handle
- openSerial :: FilePath -> SerialPortSettings -> IO SerialPort
- closeSerial :: SerialPort -> IO ()
- withSerial :: String -> SerialPortSettings -> (SerialPort -> IO a) -> IO a
- send :: SerialPort -> ByteString -> IO Int
- recv :: SerialPort -> Int -> IO ByteString
- flush :: SerialPort -> IO ()
- setDTR :: SerialPort -> Bool -> IO ()
- setRTS :: SerialPort -> Bool -> IO ()
Types
Supported baudrates
data SerialPort Source
Configure port
You don't need the get or set functions, they are used by openSerial
data SerialPortSettings Source
SerialPortSettings | |
|
defaultSerialSettings :: SerialPortSettingsSource
Most commonly used configuration
- 9600 baud
- 8 data bits
- 1 stop bit
- no parity
- no flow control
- 0.1 second receive timeout
:: 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
hOpenSerial :: FilePath -> SerialPortSettings -> IO HandleSource
Open and configure a serial port returning a standard Handle
:: FilePath | Serial port, such as |
-> SerialPortSettings | |
-> IO SerialPort |
Open and configure a serial port
closeSerial :: SerialPort -> IO ()Source
Close the serial port
withSerial :: String -> SerialPortSettings -> (SerialPort -> IO a) -> IO aSource
Safer device function, so you don't forget to close the device
Sending & receiving
recv :: SerialPort -> Int -> IO ByteStringSource
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