https://openkinect.org/w/index.php?title=Haskell_Wrapper&feed=atom&action=history
Haskell Wrapper - Revision history
2024-03-28T21:32:16Z
Revision history for this page on the wiki
MediaWiki 1.30.0
https://openkinect.org/w/index.php?title=Haskell_Wrapper&diff=1386&oldid=prev
Chrisdone: Added Haskell wrapper.
2011-10-23T21:33:33Z
<p>Added Haskell wrapper.</p>
<p><b>New page</b></p><div>Currently supports depth. No video yet, but only because I care about depth more at the moment. More support to come. Will update this wiki and release on Hackage when done.<br />
<br />
Git repo available at:<br />
<br />
https://github.com/chrisdone/freenect<br />
<br />
== Example program ==<br />
<br />
<br />
-- | Freenect examples.<br />
<br />
module Main<br />
(main)<br />
where<br />
<br />
import Freenect<br />
import Text.Printf<br />
import Control.Monad<br />
import Control.Monad.Fix<br />
import Data.IORef<br />
<br />
-- | Demos some Freenect use.<br />
main :: IO ()<br />
main =<br />
withContext $ \context -> do<br />
setLogLevel LogFlood context<br />
deviceCount <- countDevices context<br />
printf "Devices: %d\n" deviceCount<br />
selectSubdevices context devices<br />
printf "Selected devices: %s\n" (show devices)<br />
withDevice context index $ \device -> do<br />
printf "Opened device %d.\n" index<br />
done <- newIORef False<br />
setDepthCallback device $ \payload timestamp -> do<br />
printf "Payload: %s\n" (take 100 $ show payload)<br />
writeIORef done True<br />
printf "Setted depth callback.\n"<br />
setDepthMode device Medium ElevenBit<br />
startDepth device<br />
printf "Started depth stream.\n"<br />
printf "Processing…\n"<br />
fix $ \repeat -> do<br />
processEvents context<br />
isDone <- readIORef done<br />
if isDone<br />
then return ()<br />
else repeat<br />
printf "Finished processing events.\n"<br />
<br />
where devices = [Camera]<br />
index = 0 :: Integer</div>
Chrisdone