network-can-0.2.0.0: app/SLCANSerial.hs
module Main where
import Control.Monad.Class.MonadSay (MonadSay(say))
import Data.Default (Default(def))
import System.Hardware.Serialport (CommSpeed(..), SerialPortSettings(..))
import Network.CAN (CAN)
import Network.SLCAN (Transport(..))
import qualified Control.Monad
import qualified Network.CAN
import qualified Network.SLCAN
import qualified System.Hardware.Serialport
main :: IO ()
main = do
let
port = "/dev/can4discouart"
h <-
System.Hardware.Serialport.hOpenSerial
port
(System.Hardware.Serialport.defaultSerialSettings
{ commSpeed = CS115200 }
)
Network.SLCAN.withSLCAN
(Transport_Handle h)
def
act
act
:: MonadSay m
=> CAN m
-> m ()
act can = do
Network.CAN.send
can
$ Network.CAN.standardMessage
-- vendorID SDO
0x601
[0x40, 0x18, 0x10, 0x01, 0x0, 0x0, 0x0, 0x0]
Control.Monad.forever
$ Network.CAN.recv
can
>>= say . Network.CAN.prettyCANMessage