loadCells.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. if __name__ == "__main__":
  2. from GSV4BT import GSV4BT
  3. else:
  4. from .GSV4BT import GSV4BT
  5. import time
  6. import bluetooth
  7. import threading
  8. class LoadCells():
  9. def __init__(self):
  10. self.cells = (
  11. GSV4BT("00:0B:CE:04:F6:66"),
  12. GSV4BT("00:0B:CE:04:F6:67"),
  13. GSV4BT("00:0B:CE:04:F6:68"),
  14. )
  15. def connect(self):
  16. success = True
  17. for cell in self.cells:
  18. if cell.isConnected():
  19. pass
  20. elif cell.connect():
  21. cell.requiresSetup = True
  22. else:
  23. success = False
  24. return success
  25. def reconnectThread(self):
  26. while True:
  27. self.connect()
  28. time.sleep(1)
  29. def start(self):
  30. self.thread = threading.Thread(target=self.reconnectThread)
  31. self.thread.start()
  32. def getForces(self, id):
  33. cell = self.cells[id]
  34. if not cell.isConnected():
  35. return None
  36. if cell.requiresSetup:
  37. cell.setNormalMode()
  38. cell.stopTransmission()
  39. cell.setFrequency(20) # Hz
  40. cell.setGain(0, '2mV')
  41. cell.setGain(1, '2mV')
  42. cell.setGain(2, '2mV')
  43. mode = cell.getMode()
  44. if mode and mode[0] == 0x01:
  45. cell.requiresSetup = False
  46. cell.getValue()
  47. return cell.getForces()
  48. def scan(self):
  49. nearby_devices = bluetooth.discover_devices(lookup_names=True)
  50. print("Found {} devices.".format(len(nearby_devices)))
  51. for addr, name in nearby_devices:
  52. print(" {} - {}".format(addr, name))
  53. if __name__ == "__main__":
  54. cells = LoadCells()
  55. cells.scan()
  56. cells.start()
  57. while True:
  58. vals = cells.getForces(0)
  59. if vals:
  60. print('cell 0: ' + ' '.join(["ch {}: {:8.3f} mV/V".format(i, vals[i]) for i in range(len(vals))]))
  61. time.sleep(.3)