Conversion de String a un Array Byte

Ante todo gracias por leer.
Necesito ayuda con una conversion de String a Byte la cual ya he dado muchas vueltas y no he podido lograrla correctamente.

El caso seria el siguiente:
Tengo un modulo conectado al Serie1 de mi Arduino Mega, por otro lado tengo el monitor habilitado para ver lo que envio.
El modulo solo recibe datos, no necesito leer del mismo.

Por ejemplo:
Para habilitar una de sus funciones ejecuto el siguiente codigo:

byte arrayBytes = {0x7E, 0x31, 0x32, 0x33, 0x7E};
Serial.write(arrayBytes, 5); // Envio al monitor Serie
Serial1.write(arrayBytes, 5); //Envio al modulo

La respuesta en el monitor es: ~123~

Bien, el primer y ultimo byte corresponden a caracteres de control, los tres centrales son el comando propiamente dicho.

El módulo tiene cientos de comandos, por lo que mi necesidad es pasar estos como variables, por ejemplo desde un teclado o desde
un input serie.
Yo hice lo siguente:

byte caracterControl=0x7E;

String primerVariable="0x3R";
String segundaVariable="0x3S";
String tercerVariable="0x3T";

//Supongo que mis variables de entrada son 1,2 y 3 entonces reemplazo mis string con los datoS de entrada
//para el ejemplo se entiende que los valores serán valores ingresados mediante un medio externo
//aca lo pongo fijo para que se entienda mas fácilmente y no complicar el ejemplo

primerVariable.replace("R","1");
segundaVariable.replace("S","2");
tercerVariable.replace("T","3");

//aca tendría que armar el array, por lo que primero convierto los strings en byte

byte V1, V2,V3; //defino las 3 variables tipo byte donde pondré los strings convertidos

//convierto de string a byte
primerVariable.getBytes(V1,5);
segundaVariable.getBytes(V2,5);
tercerVariable.getBytes(V3,5);

//aca debería de enviar por medio del serial.write el array armado con los 5 bytes

byte arrayBytes [5]; //defino un Array de 5 elementos y lo lleno
arrayBytes [0]=caracterControl;
arrayBytes [1]=V1;
arrayBytes [2]=V2;
arrayBytes [3]=V3;
arrayBytes [4]=caracterControl;

Serial.write(arrayBytes,5); //envio a monitor

Esto me da un error de conversión, lo probé de un montón de formas pero no me funciona, no termina mandando al serie la misma estructura que indico al principio.

Agradecería cualquier ayuda que me puedan dar.
Gracias!

porque no guardas directamente los valores recogidos en el array?

Código va entre tags generados por el botón </>

String primerVariable="0x3R";
String segundaVariable="0x3S";
String tercerVariable="0x3T";

primerVariable.replace("R","1");
segundaVariable.replace("S","2");
tercerVariable.replace("T","3");

primerVariable.getBytes(V1,5);
segundaVariable.getBytes(V2,5);
tercerVariable.getBytes(V3,5);

Creo que estás cayendo en un error muy recurrente: confundir binario con texto.

Hay que aclarar qué significan las asignaciones:

variable1 = 0x31;
// Asigna un valor binario, entendible directamente para los tipo byte, char, int, long.
// El compilador entiende que está en notación hexadecimal.

variable2 = "0x31";
// Por el simple hecho de entrecomillarlo, el compilador lo interpreta como una secuencia/cadena de caracteres (string).
// Solo tres tipos de variables pueden aceptar esta asignación: "array" de char, "array" de byte, objeto String

Por lo tanto; podremos concluir lo siguiente:

0x31 es un byte.
"0x31" son cuatro bytes (más uno para el caracter NUL o 0x00).

Respecto a tu problema de conversiones inválidas:

primerVariable.getBytes(V1,5);

Nótese que el nombre de la función está en plural: getByteS; por lo tanto, no esperes a que alegremente te vaya a recibir un único byte por parámetro.

Quizá lo que querías hacer era esto:

V1 = primerVariable.toInt();

Si siempre devuelve cero, es que la función lamentablemente no está programada para interpretar notación hexadecimal.

Hola.
No te líes en esas conversiones. Trabaja directamente con bytes.
Si te fijas, sólo necesitas sumar:

arrayBytes [1]=0x30  + V1; 
arrayBytes [2]=0x30 + V2;
arrayBytes [3]=0x30 + V3;

Siempre que Vx esté comprendido entre 0x00 y 0x0F no modificará el nibble superior del comando (0x3).