Advertisement
zmatt

sysfs-gpio.py

Sep 4th, 2022
241
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.04 KB | None | 1 0
  1. import os
  2.  
  3. class Gpio:
  4.     def __init__( self, gpio, rw=None ):
  5.         if type(gpio) is int:
  6.             # gpio number
  7.             self.path = '/sys/class/gpio/gpio' + str(gpio)
  8.         else:
  9.             # gpio name or path
  10.             self.path = os.path.join( '/dev/gpio', gpio )
  11.  
  12.         if rw is not None and type(rw) is not bool:
  13.             raise TypeError()
  14.  
  15.         if rw:
  16.             self._f = open( self.path + '/value', 'r+b', buffering=0 )
  17.         else:
  18.             self._f = open( self.path + '/value', 'rb', buffering=0 )
  19.         self.rw = rw
  20.  
  21.     @property
  22.     def value( self ):
  23.         return (b'0',b'1').index( os.pread( self._f.fileno(), 1, 0 ) )
  24.  
  25.     @value.setter
  26.     def value( self, value ):
  27.         if self.rw is None:
  28.             self._f = open( self.path + '/value', 'r+b', buffering=0 )
  29.             self.rw = True
  30.  
  31.         self._f.write( (b'0',b'1')[ value ] )
  32.  
  33. ## example:
  34.  
  35. my_input = Gpio('P9_92')
  36. my_output = Gpio('P9_42')
  37.  
  38. print( my_input.value )
  39. print( my_output.value )
  40. my_output.value = 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement