Kaynağa Gözat

Upload files to ''

Janek Fabian Franz 3 yıl önce
ebeveyn
işleme
5781cd9312
1 değiştirilmiş dosya ile 30 ekleme ve 2 silme
  1. 30 2
      magneticSensor.py

+ 30 - 2
magneticSensor.py

@@ -1,6 +1,8 @@
 import queue
 import queue
 import time
 import time
+import threading
 
 
+from sensors.calibration import CalibrationStateMashine
 from sensors.connection import globalArduinoSlave
 from sensors.connection import globalArduinoSlave
 import logHandler
 import logHandler
 
 
@@ -11,18 +13,43 @@ class MagneticSensor:
   def __init__(self, conf):
   def __init__(self, conf):
     self.conf = conf
     self.conf = conf
     self.queue = queue.Queue()
     self.queue = queue.Queue()
+    self.calibration_state = CalibrationStateMashine()
+    self.field_height = float(conf["field"]["y"])
+    self.field_width  = float(conf["field"]["x"])
+
     self.success = False
     self.success = False
     self.log_handler = logHandler.get_log_handler() # neu
     self.log_handler = logHandler.get_log_handler() # neu
     #pass
     #pass
 
 
+    self.n = 0
+
   def start(self):
   def start(self):
+    self.log_handler.log_and_print("start magnetic sensor")
     if not conn.isConnected():
     if not conn.isConnected():
-      conn.open()
+      conn.open(port = self.conf["arduino"]["port"])
     conn.addRecvCallback(self._readCb)
     conn.addRecvCallback(self._readCb)
+    self.dummyActive = True
+    dummyThread = threading.Thread(target=self._readCb_dummy)
+    dummyThread.start()
 
 
   def _readCb(self, raw):
   def _readCb(self, raw):
     print("mag: ", conn.getMagneticField())
     print("mag: ", conn.getMagneticField())
 
 
+  def _readCb_dummy(self):
+    self.log_handler.log_and_print("magnetic sensor: generating test values")
+    while self.dummyActive:
+      if self.n % 4 < 1:
+        dummyPosition = (0, self.n%1 * self.field_height)
+      elif self.n % 4 < 2:
+        dummyPosition = (self.n%1 * self.field_width, self.field_height)
+      elif self.n % 4 < 3:
+        dummyPosition = (self.field_width, self.field_height - self.n%1 * self.field_height)
+      else:
+        dummyPosition = (self.field_width - self.n%1 * self.field_width, 0)
+
+      self.n  += 0.01
+
+
   def calibrate(self, x, y):
   def calibrate(self, x, y):
     pass
     pass
 
 
@@ -31,4 +58,5 @@ class MagneticSensor:
 
 
   def stop(self): # neu
   def stop(self): # neu
     self.log_handler.log_and_print("stop magnetic sensor")
     self.log_handler.log_and_print("stop magnetic sensor")
-    conn.close
+    self.dummyActive = False
+    conn.close()