Ya veo cual es tu problema, pero si seleccionas la codificación adecuada, no deberías tener problemas con manejar los dos casos al mismo tiempo.
Código PHP:
using System;
using System.IO.Ports;
using System.Text;
public class TSer
{
static SerialPort _serialPort;
public static void Main()
{
char[] c= {'a','b'};
_serialPort = new SerialPort("/dev/ttyACM0",115200, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.Encoding = Encoding.GetEncoding(28591); //Aquí estoy seleccionando la codificación
_serialPort.WriteTimeout = 500;
_serialPort.ReadTimeout = 500;
_serialPort.Open();
_serialPort.Write(c,0,1);
var readData = _serialPort.ReadLine();
Console.WriteLine(readData);
foreach(char d in readData)
{
byte b = (byte)d;
Console.WriteLine(b);
}
}
}
Código:
$ ./tser.exe
S
À
83
144
132
128
136
132
192
