loadCells.py 2.0 KB

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