Эффективный способ преобразования потоковой передачи данных Udp и одновременной записи в rTextBox - PullRequest
0 голосов
/ 06 ноября 2019

Я разрабатываю терминальную программу, которая показывает переданные данные для некоторого комм. протоколы. Данные поступают через UDP (или TCP) в приложение для ПК и записывают его в richTextBox. Я получаю данные UDP в формате byte [] и преобразую их в строку для отображения в текстовом поле. Однако преобразование слишком медленное для потоковых приложений. Есть ли другое быстрое решение?

private void Receive(IAsyncResult ar) 
{

IPEndPoint ip = new IPEndPoint(ipadress, port);

byte[] bytes = udp.EndReceive(ar, ref ip); // Get actual data 
if (binary format) // Convert to bytes to binary for textbox
{
//This conversion is slow 
   string data = string.Join( " ",
    bytes.Reverse().Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) )
   this.Invoke(new(MethodInvoker(delegate
   {
      textDisplay.Text += "\nReceived Data: " + data;
   }));
 );
else if (ascii format) // Convert to bytes to ascii 
{
   string data = Encoding.ASCII.GetString(bytes);
   this.Invoke(new(MethodInvoker(delegate
   {
      textDisplay.Text += "\nReceived Data: " + data;
   }));
}
UdpReceive(); // Calls itself again from one upper method
}
...further formats can be added...

байтов в двоичное преобразование строки звучит немного странно для меня, потому что у меня есть фактические двоичные данные в байтовом формате, который является 8-битным, однако я не могу получить его без преобразования ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...