packages feed

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)