Can't be certain, but I'll bet your device is expecting 1-byte chars, but the C# char is 2 bytes. Try converting your string into a byte array with Encoding.ASCII.GetBytes(). You'll probably also need to return the byte[] array instead of a string, since you'll end up converting it back to 2 byte chars.
using System.Text;
// ...
public static byte[] EmbedDataInString(string Cmd, byte Data)
{
byte[] ConvertedToByteArray = new byte[Cmd.Length + 2];
System.Buffer.BlockCopy(Encoding.ASCII.GetBytes(Cmd), 0, ConvertedToByteArray, 0, ConvertedToByteArray.Length - 2);
ConvertedToByteArray[ConvertedToByteArray.Length - 2] = Data;
/*Add on null terminator*/
ConvertedToByteArray[ConvertedToByteArray.Length - 1] = (byte)0x00;
return ConvertedToByteArray;
}
If your device accepts some other character encoding, swap out ASCII for the appropriate one.