#include #include #include #include struct Quaternion { float w, x, y, z; }; #pragma pack(push, 1) typedef struct { uint8_t StartByte; uint8_t SensorAddress; float qw; float qx; float qy; float qz; uint8_t EndByte; } QuaternionData; #pragma pack(pop) HANDLE initSerialPort (const char* portName, DWORD baudRate); bool readSerialData (HANDLE hSerial, uint8_t* buffer, DWORD bufferSize, DWORD& bytesRead); bool parseQuaternion(const std::string& data, Quaternion& quat); void checkPacketSize(); void printBufferHex(const std::vector& buffer, const std::string& label); int linux_initSerialPort(); bool linux_readSerialData(int serialPort, char* buffer); std::vector extractPacket(std::vector &buffer); bool parseBinaryPacket(std::vector &packetData, Quaternion &quat);