xbee-python icon indicating copy to clipboard operation
xbee-python copied to clipboard

Packet backlog when receiving on Windows

Open LarsLeferenz opened this issue 2 years ago • 1 comments

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.

LarsLeferenz avatar Jul 09 '21 12:07 LarsLeferenz

My take is on Windows and serial buffers maybe it just caching arrived data. Try perhaps set port buffers on minimum?

https://www.digi.com/support/knowledge-base/optimizing-usb-to-serial-port-settings

Also baudrate 230400 may be not what Windows likes. You may give a try to 115200, which always gave me good results.

Artyrm avatar Aug 19 '21 19:08 Artyrm