Byte array to string - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Имеется девайс: U-Prox-Keypad Задача: считать с клавиатуры символы 0-9 и *, и # и вывести в консоли соответственно (* и # видимо выводятся другими символами) Подключено все через COMport. Код подключения к ком порту и вывод сообщения в консоль:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO.Ports;
  4. using System.Text;
  5. namespace Console_ComPort_iPR
  6. {
  7. class iPR
  8. {
  9. #region Settings_port
  10. private string baudRate = string.Empty;
  11. private string stopBits = string.Empty;
  12. private string parity = string.Empty;
  13. private string portName = string.Empty;
  14. private string dataBits = string.Empty;
  15. private string _tbShowData;
  16. //init port
  17. private SerialPort comPort = new SerialPort();
  18. #endregion
  19.  
  20. ///<sumary>
  21. /// iPR(string name)
  22. ///</sumary>
  23. public iPR(string name)
  24. {
  25. portName = name;
  26. //tbShowData = tb;
  27. //add event handler
  28. comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);
  29. }
  30. [STAThread]
  31. public void DisplayData(string text)
  32. {
  33. //_tbShowData.Invoke(new EventHandler(delegate
  34. //{
  35. // _tbShowData.AppendText(text);
  36. //}
  37. // ));
  38. Console.WriteLine(text);
  39. }
  40.  
  41. private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
  42. {
  43. //string msg = comPort.ReadExisting();
  44. //retrieve number of bytes in the buffer
  45. int bytes = comPort.BytesToRead;
  46. //create a byte array to hold the awaiting data
  47. byte[] arr = new byte[bytes];
  48. //read the data and store it
  49. comPort.Read(arr, 0, bytes);
  50. //display the data to the user
  51. //byte array console write
  52. for (int i = 0; i < arr.Length; i++)
  53. _tbShowData += " " + arr[i].ToString();
  54. DisplayData(_tbShowData);
  55. //array to string
  56. //_tbShowData = Encoding.UTF8.GetString(arr);
  57. _tbShowData = Encoding.GetEncoding("windows-1251").GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("windows-1251"), arr));
  58. DisplayData(_tbShowData);
  59. _tbShowData = string.Empty;
  60. }
  61. public bool OpenPort()
  62. {
  63. try
  64. {
  65. if (comPort.IsOpen) comPort.Close();
  66. comPort.BaudRate = 2400;
  67. comPort.StopBits = StopBits.One;
  68. comPort.Parity = Parity.None;
  69. comPort.PortName = portName;
  70. comPort.DataBits = 8;
  71. comPort.Open();
  72. return true;
  73. }
  74. catch (Exception exc)
  75. {
  76. DisplayData(exc.Message);
  77. return false;
  78. }
  79. }
  80. }
  81. }
Код main (капитан очевидность, это я)
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Console_ComPort_iPR
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. iPR comPort = new iPR("COM3");
  13. comPort.OpenPort();
  14. Console.WriteLine("input 'exit' to exit from app!");
  15. while (true)
  16. {
  17. if (Console.ReadLine() == "exit") break;
  18. }
  19. }
  20. }
  21. }
Нажимая на цифры: 1 - получаю (37 49 49 13 и %11) 2 - получаю (37 50 50 13 и %22) 3 - получаю (37 51 51 13 и %33) * - получаю (37 58 58 13 и %:: ) # - получаю (37 59 59 13 и %;; )
что делать?)

Решение задачи: «Byte array to string»

textual
Листинг программы
  1. class Program
  2. {
  3.     static void Main()
  4.     {
  5.         int[] nums = {35, 53, 51, 48, 48, 50, 48, 63, 57, 61, 49, 62, 13};
  6.         string s = GetString(nums);
  7.         Console.WriteLine(s);
  8.  
  9.     }
  10.  
  11.     private static string GetString(int[] nums)
  12.     {
  13.         char[] result = new char[nums.Length];
  14.         for (int i = 0; i < result.Length; i++)
  15.         {
  16.             int x = nums[i] <= '9' ? 0 : 7;
  17.             result[i] = (char) (nums[i] + x);
  18.         }
  19.         return new string(result);
  20.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут