network-can-0.1.0.0: app/SLCANSerial.hs
module Main where
import Control.Monad.IO.Class
import Data.Default.Class (Default(def))
import System.Hardware.Serialport (CommSpeed(..), SerialPortSettings(..))
import Network.CAN (MonadCAN)
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.runSLCAN
(Transport_Handle h)
def
act
act
:: ( MonadCAN m
, MonadIO m
)
=> m ()
act = do
Network.CAN.send
$ Network.CAN.standardMessage
-- vendorID SDO
0x601
[0x40, 0x18, 0x10, 0x01, 0x0, 0x0, 0x0, 0x0]
Control.Monad.forever
$ Network.CAN.recv
>>= Control.Monad.IO.Class.liftIO . print