예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
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()
예제 #4
0
파일: check_msgs.py 프로젝트: mfkiwl/pynvs
#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()
예제 #5
0
파일: rtk.py 프로젝트: mfkiwl/pynvs
                            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