i2c_playground.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import smbus2
  2. def main():
  3. # Initialize configuration
  4. config = {
  5. 'i2c': {
  6. 'bus': 1,
  7. 'debug': False
  8. }
  9. }
  10. # Create I2C service instance
  11. i2c_service = I2CService(config)
  12. # Test parameters
  13. i2c_address = 0x48
  14. num_slots = 1
  15. try:
  16. # Request status list from the device
  17. status_list = i2c_service.request_status_list(i2c_address, num_slots)
  18. print(f"Status list received: {status_list}")
  19. except Exception as e:
  20. print(f"Error occurred: {str(e)}")
  21. class I2CService:
  22. status_register = 0x01
  23. cell_data_register = 0x02
  24. battery_limit_register = 0x03
  25. def __init__(self, config: dict):
  26. self.config = config
  27. self.bus = None
  28. bus_number = config.get('i2c', {}).get('bus', 1)
  29. self.bus = smbus2.SMBus(bus_number)
  30. def request_status_list(self, i2c_adress: int, num_slots: int) -> bool:
  31. """Request the status of a all slots."""
  32. print(f"Requesting status list (i2c_adress: {i2c_adress}, register: {self.status_register})")
  33. status_list = self.bus.read_i2c_block_data(i2c_adress, self.status_register, 1)
  34. print(f"Received status list: {status_list} (i2c_adress: {i2c_adress})")
  35. return True
  36. if __name__ == "__main__":
  37. main()