I don't quite understand why handleData (formerly receiveBytes):
self.inboundBuffer = self.inboundBuffer[lastByte:]
Is this is type-o? Maybe it should be self.inboundBuffer = self.inboundBuffer[lastByte+1:] if lastByte is at ";"
I'm not sure because for some reason the loop starts at 2 (for offset in range(2, 9+1):), almost like it assumes the buffer always starts with ";" which seems fragile and possibly will lose the first packet in a session.