Witam serdecznie.
Napotkałem następujący problem z którym nie potrafię sobie poradzić. Z aplikacji chcę wysłać dane do konwertera ETHERNET/RS485. Jeśli wysyłam tekst wszystko jest w porządku. Problem pojawia się jak chce wysłać wartości spoza zakresu ASCII.
Główny problem jest z wartością 0x00. Poniżej kod, w którym wszystko działa dobrze:
private void button1_Click(object sender, EventArgs e)
{
TcpClient _clientSocket = new TcpClient();
_clientSocket.Connect("192.168.11.2", 5000);
NetworkStream _stream = _clientSocket.GetStream();
var writer = new BinaryWriter(_stream);
byte[] _outStream = System.Text.Encoding.ASCII.GetBytes("Pisze sobie cos bez.\r");
writer.Write(_outStream, 0, _outStream.Length);
if (_clientSocket != null)
{
_clientSocket.Close();
_clientSocket = null;
}
}
Natomiast, gdy próbuje wysłać coś takiego:
private void button1_Click(object sender, EventArgs e)
{
byte[] buf = new byte[32];
Array.Clear(buf, 0, 32);
TcpClient _clientSocket = new TcpClient();
_clientSocket.Connect("192.168.11.2", 5000);
NetworkStream _stream = _clientSocket.GetStream();
var writer = new BinaryWriter(_stream);
writer.Write(buf, 0, buf.Length);
if (_clientSocket != null)
{
_clientSocket.Close();
_clientSocket = null;
}
}
Wysyła mi się
0x00 0x00 0x00 0x00 0x80
lub
0x00 0x00 0x00 0xE0 (generalnie 4 bit przypadkowy).
Poza tym widać, że program przywiesza się i odzyskuje sprawnośc pewnie dopiero po jakimś timeoucie.
Czy da się jakoś wysyłać liczby z zakresu 0x00 do 0xFF: