Byte array to string - C#
Формулировка задачи:
Добрый день!
Имеется девайс: U-Prox-Keypad
Задача: считать с клавиатуры символы 0-9 и *, и # и вывести в консоли соответственно (* и # видимо выводятся другими символами)
Подключено все через COMport.
Код подключения к ком порту и вывод сообщения в консоль:
Код main (капитан очевидность, это я)
Нажимая на цифры:
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 и %;; )
что делать?)
using System; using System.Collections.Generic; using System.IO.Ports; using System.Text; namespace Console_ComPort_iPR { class iPR { #region Settings_port private string baudRate = string.Empty; private string stopBits = string.Empty; private string parity = string.Empty; private string portName = string.Empty; private string dataBits = string.Empty; private string _tbShowData; //init port private SerialPort comPort = new SerialPort(); #endregion ///<sumary> /// iPR(string name) ///</sumary> public iPR(string name) { portName = name; //tbShowData = tb; //add event handler comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); } [STAThread] public void DisplayData(string text) { //_tbShowData.Invoke(new EventHandler(delegate //{ // _tbShowData.AppendText(text); //} // )); Console.WriteLine(text); } private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { //string msg = comPort.ReadExisting(); //retrieve number of bytes in the buffer int bytes = comPort.BytesToRead; //create a byte array to hold the awaiting data byte[] arr = new byte[bytes]; //read the data and store it comPort.Read(arr, 0, bytes); //display the data to the user //byte array console write for (int i = 0; i < arr.Length; i++) _tbShowData += " " + arr[i].ToString(); DisplayData(_tbShowData); //array to string //_tbShowData = Encoding.UTF8.GetString(arr); _tbShowData = Encoding.GetEncoding("windows-1251").GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("windows-1251"), arr)); DisplayData(_tbShowData); _tbShowData = string.Empty; } public bool OpenPort() { try { if (comPort.IsOpen) comPort.Close(); comPort.BaudRate = 2400; comPort.StopBits = StopBits.One; comPort.Parity = Parity.None; comPort.PortName = portName; comPort.DataBits = 8; comPort.Open(); return true; } catch (Exception exc) { DisplayData(exc.Message); return false; } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Console_ComPort_iPR { class Program { static void Main(string[] args) { iPR comPort = new iPR("COM3"); comPort.OpenPort(); Console.WriteLine("input 'exit' to exit from app!"); while (true) { if (Console.ReadLine() == "exit") break; } } } }
Решение задачи: «Byte array to string»
textual
Листинг программы
class Program { static void Main() { int[] nums = {35, 53, 51, 48, 48, 50, 48, 63, 57, 61, 49, 62, 13}; string s = GetString(nums); Console.WriteLine(s); } private static string GetString(int[] nums) { char[] result = new char[nums.Length]; for (int i = 0; i < result.Length; i++) { int x = nums[i] <= '9' ? 0 : 7; result[i] = (char) (nums[i] + x); } return new string(result); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д