liveplot-0.1.0.0: app/App.hs
{-# LANGUAGE DataKinds, TypeOperators #-}
import Pipes
import qualified Pipes.Prelude as P
import Control.Concurrent (threadDelay)
import Graphics.Liveplot
main :: IO ()
main = runLiveplot std
std :: Managed (View (Either (SensorReading GLfloat) GLApp),
Controller (Either (SensorReading GLfloat) Event))
std = do
let inits = [ lineGraphN 2000 "adc" (1, 1) (0, 0) ]
(v, c) <- ogl inits
dat <- producer (bounded 1) (stdinData >-> normalize (20, 230) >-> named "adc")
return (v, fmap Left (dat) <> fmap Right c)
stdinData :: Producer GLfloat IO ()
stdinData = for P.stdinLn cvt
where cvt :: Monad m => String -> Producer Float m ()
cvt x = do
yield (read x)