Kaynağa Gözat

testovacie py skripty

Juraj Ďuďák 8 ay önce
ebeveyn
işleme
85f0a6e9dd
4 değiştirilmiş dosya ile 47 ekleme ve 7 silme
  1. 28 3
      test/app.py
  2. 4 1
      test/comm.py
  3. 9 3
      test/nbus_slave.py
  4. 6 0
      test/nbus_system.py

+ 28 - 3
test/app.py

@@ -19,12 +19,16 @@ if __name__ == "__main__":
     s1_adr = 6
     s2_adr = 9
     adrs = [s1_adr, s2_adr]
-
+    #nbus.cmd_stop()
+    #sys.exit()
     foundSlaves = {}
     for adr in adrs:
         slave1 = nbus.create_slave(ImuSlave, adr)
         foundSlaves[adr] = True
 
+    #nbus.cmd_stop()
+    time.sleep(0.01)
+
     startCheck = True
     for adr in adrs:
         if nbus.get_slave(adr).cmd_echo([97, 98, 99, 100]) == 0:
@@ -79,11 +83,32 @@ if __name__ == "__main__":
         info[adr] = nbus.get_slave(adr).cmd_sensors_format()
     print("FORMAT=", info)
 
-    
+    for adr in adrs:
+        nbus.get_slave(adr).cmd_echo([97, 98, 99, 100])
+
+    #sys.exit()
     nbus.cmd_start()
-    time.sleep(1)
+    time.sleep(0.5)
     nbus.cmd_stop()
     
+    for adr in adrs:
+        nbus.get_slave(adr).cmd_echo([97, 98, 99, 100])
+    
+    #nbus.finish()
+    time.sleep(0.1)
+    #nbus.open()
+    
+    for adr in adrs:
+        nbus.get_slave(adr).cmd_echo([97, 98, 99, 100])
+
+    sys.exit()
+
+    time.sleep(0.1)
+    
+    nbus.cmd_start()
+    time.sleep(0.5)
+    nbus.cmd_stop()
+
     sys.exit()
     data_acc = {}
     for adr in adrs:

+ 4 - 1
test/comm.py

@@ -113,6 +113,8 @@ class SerialComm:
     def open(self):
         self.port.open()
         self.port.flush()
+        self.port.reset_input_buffer()
+        self.port.reset_output_buffer()
         self.callback('i', 0, 'Open communication port')
 
     def close(self):
@@ -186,6 +188,7 @@ class SerialComm:
             # self.port.write(m[1:]) # send body of message
 
             self.port.write(m) # send body of message
+            self.port.flush()
             if long_answer > 0:
                 time.sleep(long_answer)
             data = self.receive_response()
@@ -195,7 +198,7 @@ class SerialComm:
             if counter > 5:
                 return []
         
-        if len(data) == 0:
+        if len(data) < 4:
             return []
 
         if data[2] & 0x80 != 0:

+ 9 - 3
test/nbus_slave.py

@@ -22,8 +22,12 @@ class NbusSlave():
             print("No ECHO (0-size resp)")
             return 0
         # print(resp)
-        for r in range(len(msg)):
-            echo = echo + chr(resp[3 + r])
+        len_req = len(msg) + 4
+        if len_req != len(resp):
+            return 0
+        if len(resp) > 3:
+            for r in range(len(msg)):
+                echo = echo + chr(resp[3 + r])
         # print("Echo:" + echo)
         return len(resp)
 
@@ -57,7 +61,9 @@ class NbusSlave():
     def cmd_sensor_cnt(self):
         print("SENSOR CNT")
         resp = self.serial_port.request(self.module, 0, CMD_SENSOR_CNT, [])
-        return resp[3]
+        if len(resp)>3:
+            return resp[3]
+        return 0
 
     def cmd_sensor_type(self, index):
         resp = self.serial_port.request(self.module, index, CMD_SENSOR_TYPE, [])

+ 6 - 0
test/nbus_system.py

@@ -18,6 +18,9 @@ class NbusSystem:
     def finish(self):
         self.serial_port.close()
 
+    def open(self):
+        self.serial_port.open()        
+
     def cmd_start(self):
         print("MODULE START")
         self.serial_port.requestBroadcast(CMD_START, [])
@@ -25,6 +28,9 @@ class NbusSystem:
     def cmd_stop(self):
         print("MODULE STOP")
         self.serial_port.requestBroadcast(CMD_STOP, [])
+        time.sleep(0.05)
+        self.serial_port.port.reset_input_buffer()
+        self.serial_port.port.reset_output_buffer()
 
     def get_slave(self, address):
         return self.slaves[address]