none
C# не выполняется действие? RRS feed

  • Общие обсуждения

  • Добрый день

    Не как не могу сообразить почему не работает код.

    На сом порт приходит цифра 100 сравниваем её и выводим в консоль сообщения. Подскажите пожалуйста где ошибка в коде почему он не выполняет действия сравнения?

    код 1:

    using System;
    using System.IO.Ports;
     
    namespace ArduinoSerial
    {
        class Program
        {
     
            SerialPort sp = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);
     
     
            static void Main(string[] args)
            {
                new Program();
     
            }
     
            private Program()
            {
                sp.DataReceived += new SerialDataReceivedEventHandler(OnDataReceived);
                sp.Open();
                Console.Read();
            }
     
            private void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                Console.WriteLine(sp.ReadExisting());
     
     
     
               string name = sp.ReadExisting();
     
                if (name == "100") Console.WriteLine("OK" + name);
     
            }
     
     
        }
    }

    код 2:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    using System.IO.Ports;
    using System.Threading;
    using System.Threading.Tasks;
     
    namespace ConsoleApplication4 {
        class Program {
            static void Main(string[] args) {
                string portName = "COM5";
                Task.Factory.StartNew(() => StartListen(portName));
                Console.ReadLine();
            }
            static void StartListen(string portName) {
                using (SerialPort port = new SerialPort(portName, 9600)) {
                    port.Open();
                    while (true) {
                        if (port.BytesToRead != 0) {
                            string result = port.ReadExisting();
                            if (result == "100") {
                                Console.WriteLine("Name: {0}", result);
                            }
                        }
                        Thread.Sleep(500);
                    }
                }          
            }
        }
    }

    13 ноября 2015 г. 10:09

Все ответы