def test_process_msg_in_buffer(self): # Create msg contained in buffer raw_msg = bytearray( [0x11, 0x21, 0x10, 0x21, 0x01, 0x10, 0x03, 0x23, 0x12]) msg, buffer = binr.process_msg(raw_msg) # Test return data self.assertEqual(msg["ID"], 0x21) self.assertEqual(len(msg["data"]), 1) self.assertEqual(msg["data"][0], 0x01) # Test buffer self.assertEqual(len(buffer), 2) self.assertEqual(buffer[0], 0x23) # Test for proper ending (no ending) raw_msg = bytearray( [0x11, 0x21, 0x10, 0x21, 0x01, 0x10, 0x00, 0x23, 0x12]) with self.assertRaises(ValueError): binr.process_msg(raw_msg)
def test_process_msg(self): # Create test message raw_msg = bytearray([0x10, 0x21, 0x01, 0x10, 0x03]) # Process message 1 msg, bufffer = binr.process_msg(raw_msg) # Test return data self.assertEqual(msg["ID"], 0x21) self.assertEqual(len(msg["data"]), 1) self.assertEqual(msg["data"][0], 0x01) ## Create test message raw_msg = bytearray([ 0x10, 0x60, 0x0B, 0x09, 0x3E, 0x4E, 0x12, 0x3F, 0x11, 0x39, 0x60, 0x3F, 0x10, 0x03 ]) # Process message 2 msg, buffer = binr.process_msg(raw_msg) # Test return data self.assertEqual(msg["ID"], 0x60) self.assertEqual(len(msg["data"]), 10) self.assertEqual(msg["data"][4], 0x12) # Create bad message raw_msg = bytearray([0x11, 0x21, 0x01, 0x10, 0x03]) # Process bad message with self.assertRaises(ValueError): binr.process_msg(raw_msg) # Process message where last character is not yet sent raw_msg = bytearray([0x10, 0x21, 0x01, 0x10]) # Process message with self.assertRaises(ValueError): binr.process_msg(raw_msg)
ser.close() # Connect to device print("Connecting to serial port [BINR 115200]") ser = serial.Serial(port, 115200, parity=serial.PARITY_ODD, timeout=0.5) # Cancel all previous requests print("Cancelling old requests") ser.write(binr.cancel_requests()) time.sleep(1) try: while True: try: # Clear screen # Request current receiver channels status print("Requesting receiver channels status") ser.write(binr.request_status_of_receiver_channels()) buffer = ser.read(1000) data, buffer = binr.process_msg(buffer) channel_status = binr.process_status_of_receiver_channels( data["data"]) os.system('cls' if os.name == 'nt' else 'clear') binr.print_status_of_receiver_channels(channel_status) time.sleep(1) except ValueError: s = 1 time.sleep(0.1) except KeyboardInterrupt: ser.close()
#print("Requesting satellite ephemeris") #ser.write(binr.cancel_requests()) #time.sleep(0.5) #ser.write(binr.request_sv_ephemeris(binr.GPS, 3,-3)) #buffer = ser.read(1000) #data, buffer = binr.process_msg(buffer) print("Requesting raw data stream") ser.write(binr.request_raw_data(10)) buffer = [] try: while True: try: buffer = list(ser.read_until(terminator='\x10\x03')) if len(buffer) > 0: data, buffer = binr.process_msg(list(buffer)) print(len(buffer)) print("Msg: " + str(hex(data["ID"])) + ": " + str(len(data["data"])) + " bytes : " + str(bytearray(data["data"][0:50]))) if data["ID"] == 0xF5: raw_data = binr.process_raw_data(data["data"]) binr.print_raw_data(raw_data) time.sleep(0.1) except ValueError: s = 1 time.sleep(0.1) except KeyboardInterrupt: ser.close()
115200, parity=serial.PARITY_ODD, timeout=0.5) # Main loop while True: rover_obs = np.zeros((Nc, 4)) base_obs = np.zeros((Nc, 4)) # Get messages from base and rover print("Checking for messages") if rover_stream.in_waiting > 0: # Read and process the messages try: rover_buffer = list(rover_stream.read_until(terminator='\x10\x03')) rover_msg, rover_buffer = binr.process_msg(rover_buffer) print("Rover message received. Unread buffer size: " + str(len(rover_buffer))) # We are only interrested in observation and navigation messages if rover_msg['ID'] == 0xF5: # observation message rover_data = binr.process_raw_data(rover_msg["data"]) # Calculate obervable receiver time t_rx = (rover_data["Time"] + rover_data["GPS time shift"]) / 1000 # Loop through all channels for i in range(len(rover_data["Carrier Phase"])): # Check if raw data is valid if (rover_data["Signal Type"][i] == binr.GPS