Segue anexo dois arquivos .txt, sendo o "log.txt" gerado pelo AcbrMonitorPLUS e "retorno.txt" gerado pelo trecho de código abaixo apresentado. No arquivo "log.txt" o retorno está correto porem no gravado pela aplicação não, quando debugado este código(na linha "letra = Encoding.UTF8.GetString(data, 0, i);" ) o caractere retornado nos casos especiais é o 63 da tabela ASCII.
me certifiquei e a caixa "ANSI" não esta marcada.
using (var cliente = new TcpClient())
{
String responseData = String.Empty;
Byte[] data = new Byte[512];
cliente.Connect(Global.CaminhoSAT, 3434);
comando += "\r\n.\r\n";
NetworkStream stream = cliente.GetStream();
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = Encoding.ASCII.GetString(data, 0, bytes);
data = Encoding.ASCII.GetBytes(comando);
stream.Write(data, 0, data.Length);
stream.Flush();
int i = -1;
i = stream.Read(data, 0, 1);
var letra = "";
responseData = String.Empty;
while (letra != ((char)3).ToString())
{
i = stream.Read(data, 0, 1);
letra = Encoding.UTF8.GetString(data, 0, i);
if (letra != ((char)3).ToString())
{
responseData += letra;
}
}
retorno = responseData;
File.WriteAllText(@"c:\retorno", retorno);
stream.Close();
cliente.Close();
return retorno;
}
log.txt
retorno.txt