Skip to content

Packet backlog when receiving on Windows #248

Open
@LarsLeferenz

Description

@LarsLeferenz

Hello.
I ran into a weird issue when receiving ZigBee packets on Windows. I'm currently sending packets from a drone every 0.8s, but on Windows, the callback method is only executed about every ~5s. I'm not loosing packets, as the received packet ID's increment correctly. The strange thing is, when using an Ubuntu VM on the same computer it works perfectly, and I receive at about ~0.8s.
And if I stop sending from the drone, I continue to receive packets for quite some time.

I'm using v1.4 and a "Xbee SMT Grove Dev Board" connected by USB for both sending and receiving.

Here is the code were using to receive on both Windows and Ubuntu:

def connect(self):
        self._device = XBeeDevice(self._port, self._baudRate)
        self._device.open()
        self._device.set_16bit_addr(XBee16BitAddress(utils.int_to_bytes(int(self._address))))
        self._network = self._device.get_network()
        self._device.add_packet_received_callback(self._packetReceivedCallback)

def _packetReceivedCallback(self, packet):
        print("Received!")
        #Processing after this

I also tried using pyserial on Windows to print the serial output with:

x = serial.Serial(port="COM4", baudrate=230400 )

while True:
     y = x.read(100)
     print(y)

Which resulted in 100 Bytes every ~0.8s, so the expected behavior.
My best guess at the moment is, that somehow windows takes too long when spawning the threads to handle the packet_recieved_callback, but I really got no clue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions