@@ -24,7 +24,7 @@ def enumerate_serial_ports():
2424 key = winreg .OpenKey (winreg .HKEY_LOCAL_MACHINE , path )
2525 except WindowsError :
2626 raise Exception
27-
27+
2828 for i in itertools .count ():
2929 try :
3030 val = winreg .EnumValue (key , i )
@@ -110,6 +110,7 @@ def __init__(self, baud=9600, port=None, timeout=2, sr=None):
110110 self .sr = sr
111111 self .SoftwareSerial = SoftwareSerial (self )
112112 self .Servos = Servos (self )
113+ self .EEPROM = EEPROM (self )
113114
114115 def version (self ):
115116 return get_version (self .sr )
@@ -556,3 +557,61 @@ def read(self):
556557 return response
557558 else :
558559 return False
560+
561+
562+ class EEPROM (object ):
563+ """
564+ Class for reading and writing to EEPROM.
565+ """
566+
567+ def __init__ (self , board ):
568+ self .board = board
569+ self .sr = board .sr
570+
571+ def size (self ):
572+ """
573+ Returns size of EEPROM memory.
574+ """
575+ cmd_str = build_cmd_str ("sz" )
576+
577+ try :
578+ self .sr .write (cmd_str )
579+ self .sr .flush ()
580+ response = self .sr .readline ().replace ("\r \n " , "" )
581+ return int (response )
582+ except :
583+ return 0
584+
585+ def write (self , address , value = 0 ):
586+ """ Write a byte to the EEPROM.
587+
588+ :address: the location to write to, starting from 0 (int)
589+ :value: the value to write, from 0 to 255 (byte)
590+ """
591+
592+ if value > 255 :
593+ value = 255
594+ elif value < 0 :
595+ value = 0
596+ cmd_str = build_cmd_str ("eewr" , (address , value ))
597+ try :
598+ self .sr .write (cmd_str )
599+ self .sr .flush ()
600+ except :
601+ pass
602+
603+ def read (self , adrress ):
604+ """ Reads a byte from the EEPROM.
605+
606+ :address: the location to write to, starting from 0 (int)
607+ """
608+ cmd_str = build_cmd_str ("eer" , (adrress ,))
609+ try :
610+ self .sr .write (cmd_str )
611+ self .sr .flush ()
612+ response = self .sr .readline ().replace ("\r \n " , "" )
613+ if response :
614+ return int (response )
615+ except :
616+ return 0
617+
0 commit comments