Si querés seguir trabajando los datos como string en vez de un array de bytes como te sugerí, probá que pasa si le imponés el encoding que vas a utilzar, te sugiero el cp437:
Y después cuando ya tengas el string de la "S", convertilo a bytes usando el objeto cp437 como hice en el mensaje anterior.
C#:
...
Encoding cp437 = Encoding.GetEncoding(437);
puertoSerie = new SerialPort()
{
// Configuración del puerto serie.
PortName = "COM3", // Nombre del puerto serie.
BaudRate = 2400, // Velocidad en baudios.
Parity = Parity.None, // Esquema para comprobar la paridad de cada byte recibido.
StopBits = StopBits.One, // Número de bits de parada por byte.
DataBits = 8, // Número de bits de datos por byte.
Handshake = Handshake.None, // Protocolo de establecimiento.
DtrEnable = true, // Línea de terminal de datos.
RtsEnable = true, // Línea de solicitud.
// Establecer los tiempos de espera de lectura / escritura.
ReadTimeout = 500, // Tiempo de espera de escritura en ms.
WriteTimeout = 500, // Tiempo de espera de escritura en ms.
// Más configuraciones.
DiscardNull = false, // Descartar bytes nulos recibidos.
ParityReplace = 63,
ReadBufferSize = 4096,
WriteBufferSize = 2018,
ReceivedBytesThreshold = 1,
Encoding = cp437
};
...
Y después cuando ya tengas el string de la "S", convertilo a bytes usando el objeto cp437 como hice en el mensaje anterior.