.NET 4.x Работа с считывателем PERCo-IR05 - Выполнить считывание карты через ReadLine - C#

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

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

Здравствуйте, не удаётся выполнить считывание карты через ReadLine(), плюс временами не работает порт, вот код ;
  SerialPort mySerialPort = new SerialPort("COM3", 9600);

        private void button1_Click(object sender, EventArgs e)
        {
            try {
                var data_for_controller = new byte[7] { 242, 255, 3, 1, 0, 26, 24 };
                var data_for_controller1 = new byte[7] { 242, 255, 1, 2, 0, 26, 24 };
 
                if (mySerialPort.IsOpen == false)
                {
 
                    mySerialPort.Open();
                                        
                    mySerialPort.Write(data_for_controller, 0, 7);
 
                    mySerialPort.Write(data_for_controller, 0, 7);

                    int byteRecieved = mySerialPort.BytesToRead;
                    byte[] messByte = new byte[byteRecieved];
//считывание данных
                    string k=mySerialPort.ReadLine();                    
                    mySerialPort.DiscardInBuffer();
 
                    mySerialPort.Close();
                }
 
            }
            catch
            {
 
            }
        }

Решение задачи: «.NET 4.x Работа с считывателем PERCo-IR05 - Выполнить считывание карты через ReadLine»

textual
Листинг программы
            var data_for_controller = new byte[7] { 242, 255, 3, 1, 0, 26, 24 };
            var data_for_controller1 = new byte[7] { 242, 255, 1, 2, 0, 26, 24 };
 
            
 
                mySerialPort.Open();
                                    
                mySerialPort.Write(data_for_controller, 0, 7); // 1- запрос
                Thread.Sleep(500);
                int byteRecieved = mySerialPort.BytesToRead; 
                byte[] messByte = new byte[byteRecieved];
                k = "";
                for (int i = 0; i < byteRecieved; i++) // первое чтение
                {
                    messByte[i] = (byte)mySerialPort.ReadByte();
                    k += messByte[i].ToString();
                }
                textBox1.Text = k;
                mySerialPort.DiscardInBuffer(); // очищаем буфер
 
 
 
                mySerialPort.Write(data_for_controller1, 0, 7); //2 - запрос
                Thread.Sleep(500);                                    
                byteRecieved = mySerialPort.BytesToRead;
                messByte = new byte[byteRecieved];
                k = "";
 
                for (int i = 0; i < byteRecieved; i++) // второе чтение
                {
                    messByte[i] = (byte)mySerialPort.ReadByte();
                    k += messByte[i].ToString();
                }
                textBox1.Text += k;
                mySerialPort.DiscardInBuffer(); // очищаем буфер
 
                mySerialPort.Close();

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


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

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

9   голосов , оценка 4 из 5
Похожие ответы