initial code for windows serial support
							parent
							
								
									d823516b72
								
							
						
					
					
						commit
						afc76ecab0
					
				| 
						 | 
				
			
			@ -20,4 +20,5 @@ M: serial dispose ( serial -- ) stream>> dispose ;
 | 
			
		|||
 | 
			
		||||
{
 | 
			
		||||
    { [ os unix? ] [ "serial.unix" ] } 
 | 
			
		||||
    { [ os windows? ] [ "serial.windows" ] }
 | 
			
		||||
} cond require
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
! Copyright (C) 2009 Your name.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: tools.test serial.windows ;
 | 
			
		||||
IN: serial.windows.tests
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
! Copyright (C) 2009 Doug Coleman.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: io.files.windows io.streams.duplex kernel math
 | 
			
		||||
math.bitwise windows.kernel32 accessors alien.c-types
 | 
			
		||||
windows io.files.windows fry locals continuations ;
 | 
			
		||||
IN: serial.windows
 | 
			
		||||
 | 
			
		||||
: <serial-stream> ( path encoding -- duplex )
 | 
			
		||||
    [ open-r/w dup ] dip <encoder-duplex> ;
 | 
			
		||||
 | 
			
		||||
: get-comm-state ( duplex -- dcb )
 | 
			
		||||
    in>> handle>>
 | 
			
		||||
    "DCB" <c-object> tuck
 | 
			
		||||
    GetCommState win32-error=0/f ;
 | 
			
		||||
 | 
			
		||||
: set-comm-state ( duplex dcb -- )
 | 
			
		||||
    [ in>> handle>> ] dip
 | 
			
		||||
    SetCommState win32-error=0/f ;
 | 
			
		||||
 | 
			
		||||
:: with-comm-state ( duplex quot: ( dcb -- ) -- )
 | 
			
		||||
    duplex get-comm-state :> dcb
 | 
			
		||||
    dcb clone quot curry [ dcb set-comm-state ] recover ; inline
 | 
			
		||||
		Loading…
	
		Reference in New Issue