From 79110a6f9102e408bd3285e20b926841a4854547 Mon Sep 17 00:00:00 2001 From: Norman Princen <63923352+NPrincen@users.noreply.github.com> Date: Sat, 18 Apr 2020 15:05:35 -0700 Subject: [PATCH] getPOSI and sendPOSI fix to handle Lat/Lon/h doubles getPOSI now can interpret either float or double Lat/Lon/h messages. sendPOSI now sends double Lat/Lon/h messages. Also fixed integer conversion bug in sendCTRL. --- Python3/src/xpc.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Python3/src/xpc.py b/Python3/src/xpc.py index ddf2be9..9c85942 100644 --- a/Python3/src/xpc.py +++ b/Python3/src/xpc.py @@ -1,7 +1,6 @@ import socket import struct - class XPlaneConnect(object): """XPlaneConnect (XPC) facilitates communication to and from the XPCPlugin.""" socket = None @@ -158,10 +157,13 @@ class XPlaneConnect(object): # Read response resultBuf = self.readUDP() - if len(resultBuf) != 34: + if len(resultBuf) == 34: + result = struct.unpack(b"<4sxBfffffff", resultBuf) + elif len(resultBuf) == 46: + result = struct.unpack(b"<4sxBdddffff", resultBuf) + else: raise ValueError("Unexpected response length.") - result = struct.unpack(b"<4sxBfffffff", resultBuf) if result[0] != b"POSI": raise ValueError("Unexpected header: " + result[0]) @@ -197,7 +199,10 @@ class XPlaneConnect(object): val = -998 if i < len(values): val = values[i] - buffer += struct.pack(b"