private void sendGimbalCommand(double x, double y, double z) { if (gimbal != null) { if (gimbal.IsConnected) { var q = Quaterion.FromEulerAngles(x, y, z); float[] quat = { (float)q.x, (float)q.y, (float)q.z, (float)q.w }; var byteArray = new byte[quat.Length * 4 + 1]; Buffer.BlockCopy(quat, 0, byteArray, 0, quat.Length * 4); byteArray[quat.Length * 4] = 0; //Cmd gimbal.Publish("gimbal/control", byteArray, MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false); } } }
private void btnGimbalControl_Click(object sender, RoutedEventArgs e) { //byte[] x = BitConverter.GetBytes(1.0f); //byte[] y = BitConverter.GetBytes(2.0f); //byte[] z = BitConverter.GetBytes(3.0f); //byte[] w = BitConverter.GetBytes(4.0f); //byte[] mode = BitConverter.GetBytes((char)0); //byte[] message = new byte[x.Length + y.Length + z.Length + w.Length + mode.Length]; //System.Buffer.BlockCopy(x, 0, message, 0, x.Length); //System.Buffer.BlockCopy(y, 0, message, x.Length, y.Length); //System.Buffer.BlockCopy(z, 0, message, x.Length + y.Length, z.Length); //System.Buffer.BlockCopy(w, 0, message, x.Length + y.Length + z.Length, w.Length); //System.Buffer.BlockCopy(mode, 0, message, x.Length + y.Length + z.Length + w.Length, mode.Length); if (gimbal.IsConnected) { var quter = Quaterion.FromEulerAngles(3.14, 0.0, 0.0); float[] quat = { (float)quter.x, (float)quter.y, (float)quter.z, (float)quter.w }; var byteArray = new byte[quat.Length * 4 + 1]; Buffer.BlockCopy(quat, 0, byteArray, 0, quat.Length * 4); byteArray[quat.Length * 4] = 0; //Cmd gimbal.Publish("gimbal/control", byteArray, MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false); } }