JPannetier Posted July 15, 2018 at 11:00 AM Share Posted July 15, 2018 at 11:00 AM Hello , I'm using Python 3.6. I can run the example to emunerate my device. When I'm using example_simple.py from IMU brick 2.0. I have an error message from imu.get_quaternion() in get_quaternion return GetQuaternion(*self.ipcon.send_request(self, BrickIMU.FUNCTION_GET_QUATERNION, (), '', 'f f f f')) File "C:\Users\JPannetier\Anaconda3\lib\site-packages\tinkerforge\ip_connection.py", line 1194, in send_request return unpack_payload(response[8:], form_ret) File "C:\Users\JPannetier\Anaconda3\lib\site-packages\tinkerforge\ip_connection.py", line 251, in unpack_payload x = struct.unpack(f, data[:length]) error: unpack requires a buffer of 4 bytes Thank you Best regard Quote Link to comment Share on other sites More sharing options...
photron Posted July 16, 2018 at 09:18 AM Share Posted July 16, 2018 at 09:18 AM This isn't a Problem with Python 3.6. The Problem ist that you're using the IMU Brick (1.0) example with an IMU Brick 2.0. Try this example: https://www.tinkerforge.com/en/doc/Software/Bricks/IMUV2_Brick_Python.html#simple Quote Link to comment Share on other sites More sharing options...
JPannetier Posted July 16, 2018 at 10:08 AM Author Share Posted July 16, 2018 at 10:08 AM Hi Photron, Exactly. I have a IMU Brick 2.0. And I have this error when i'm using your example of IMU Brick 2.0.... Best regard Quote Link to comment Share on other sites More sharing options...
borg Posted July 16, 2018 at 12:21 PM Share Posted July 16, 2018 at 12:21 PM But it says "BrickIMU.FUNCTION_GET_QUATERNION" in your pasted error message. It should be "BrickIMUV2". Are you sure you are not using the IMU 1.0 example? Quote Link to comment Share on other sites More sharing options...
JPannetier Posted July 17, 2018 at 09:50 AM Author Share Posted July 17, 2018 at 09:50 AM I'm using a Brick IMU 2.0 with its example : https://www.tinkerforge.com/en/doc/Software/Bricks/IMUV2_Brick_Python.html#simple When I opened the source of Brick IMU 2.0, i can notice : Into communication.c : void get_quaternion(const ComType com, const GetQuaternion *data) { GetQuaternionReturn gqr; gqr.header = data->header; gqr.header.length = sizeof(GetQuaternionReturn); gqr.x = sensor_data.qua_x; gqr.y = sensor_data.qua_y; gqr.z = sensor_data.qua_z; gqr.w = sensor_data.qua_w; send_blocking_with_timeout(&gqr, sizeof(GetQuaternionReturn), com); } And into communication.h typedef struct { MessageHeader header; int16_t w; int16_t x; int16_t y; int16_t z; } __attribute__((__packed__)) GetQuaternionReturn; Quote Link to comment Share on other sites More sharing options...
borg Posted July 17, 2018 at 10:04 AM Share Posted July 17, 2018 at 10:04 AM The error message above comes from the IMU Brick 1.0 bindings. You can see it from the names and also because of the "f f f f", since the 1.0 IMU returned floats while the new one returns ints. Please download the example again from here https://www.tinkerforge.com/en/doc/Software/Bricks/IMUV2_Brick_Python.html#simple and try it again. Quote Link to comment Share on other sites More sharing options...
JPannetier Posted July 17, 2018 at 07:29 PM Author Share Posted July 17, 2018 at 07:29 PM Super, It's working now. Sorry for my mistake. Thank you very much for your support. Best regard Jérôme Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.